Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
(** * Pseudofunctor rewriting helper lemmas *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z p, p0, p1, p2: PreCategory f0: morphism C w z -> Functor p2 p1 f1: Functor p0 p1 f2: Functor p2 p f3: Functor p p0 f4: Functor p2 p0 n: morphism (p2 -> p0) f4 (f3 o f2)%functor H0: IsIsomorphism n n0: morphism (p2 -> p1) (f0 (h o (g o f))%morphism)
(f1 o f4)%functor H1: IsIsomorphism n0
Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h)) =
n0^-1
o (f1 oL n^-1
o (f1 oL n
o (n0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0
(Core.associativity C w x y z f g h)))))
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z p, p0, p1, p2: PreCategory f0: morphism C w z -> Functor p2 p1 f1: Functor p0 p1 f2: Functor p2 p f3: Functor p p0 f4: Functor p2 p0 n: morphism (p2 -> p0) f4 (f3 o f2)%functor H0: IsIsomorphism n n0: morphism (p2 -> p1) (f0 (h o (g o f))%morphism)
(f1 o f4)%functor H1: IsIsomorphism n0
Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h)) =
n0^-1
o (f1 oL n^-1
o (f1 oL n
o (n0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0
(Core.associativity C w x y z f g h)))))
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z p, p0, p1, p2: PreCategory f0: morphism C w z -> Functor p2 p1 f1: Functor p0 p1 f2: Functor p2 p f3: Functor p p0 f4: Functor p2 p0 n: NaturalTransformation f4 (f3 o f2) H0: IsIsomorphism n n0: NaturalTransformation (f0 (h o (g o f))%morphism)
(f1 o f4) H1: IsIsomorphism n0
Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h)) =
n0^-1
o (f1 oL n^-1
o (f1 oL n
o (n0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0
(Core.associativity C w x y z f g h)))))
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z p, p0, p1, p2: PreCategory f0: morphism C w z -> Functor p2 p1 f1: Functor p0 p1 f2: Functor p2 p f3: Functor p p0 f4: Functor p2 p0 n: NaturalTransformation f4 (f3 o f2) H0: IsIsomorphism n n0: NaturalTransformation (f0 (h o (g o f))%morphism)
(f1 o f4) H1: IsIsomorphism n0
((f1 oL n^-1)^-1
o (n0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h))))%morphism =
f1 oL n
o (n0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h)))
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z p, p0, p1, p2: PreCategory f0: morphism C w z -> Functor p2 p1 f1: Functor p0 p1 f2: Functor p2 p f3: Functor p p0 f4: Functor p2 p0 n: NaturalTransformation f4 (f3 o f2) H0: IsIsomorphism n n0: NaturalTransformation (f0 (h o (g o f))%morphism)
(f1 o f4) H1: IsIsomorphism n0 x0: p2
(f1 _1 (n x0)
o (n0 x0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h))
x0))%morphism =
(f1 _1 (n x0)
o (n0 x0
o Category.Morphisms.idtoiso (p2 -> p1)
(ap f0 (Core.associativity C w x y z f g h))
x0))%morphism
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z
Category.Morphisms.idtoiso (F w -> F z)
(ap (p_morphism_of F)
(Core.associativity C w x y z f g h)) =
{|
morphism_isomorphic :=
((p_composition_of F w y z h (g o f))^-1
o (p_morphism_of F h
oL (p_composition_of F w x y g f)^-1
o (associator_1 (p_morphism_of F h)
(p_morphism_of F g) (p_morphism_of F f)
o (p_composition_of F x y z h g
oR p_morphism_of F f
o p_composition_of F w x z (h o g) f))))%natural_transformation;
isisomorphism_isomorphic :=
p_composition_of_coherent_iso_for_rewrite__isisomorphism_helper
|}
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z
Category.Morphisms.idtoiso (F w -> F z)
(ap (p_morphism_of F)
(Core.associativity C w x y z f g h)) =
{|
morphism_isomorphic :=
((p_composition_of F w y z h (g o f))^-1
o (p_morphism_of F h
oL (p_composition_of F w x y g f)^-1
o (associator_1 (p_morphism_of F h)
(p_morphism_of F g) (p_morphism_of F f)
o (p_composition_of F x y z h g
oR p_morphism_of F f
o p_composition_of F w x z (h o g) f))))%natural_transformation;
isisomorphism_isomorphic :=
p_composition_of_coherent_iso_for_rewrite__isisomorphism_helper
|}
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z
Category.Morphisms.idtoiso (F w -> F z)
(ap (p_morphism_of F)
(Core.associativity C w x y z f g h)) =
(p_composition_of F w y z h (g o f))^-1
o (p_morphism_of F h
oL (p_composition_of F w x y g f)^-1
o (associator_1 (p_morphism_of F h)
(p_morphism_of F g) (p_morphism_of F f)
o (p_composition_of F x y z h g
oR p_morphism_of F f
o p_composition_of F w x z (h o g) f)))
H: Funext C: PreCategory F: Pseudofunctor C w, x, y, z: C f: morphism C w x g: morphism C x y h: morphism C y z
Category.Morphisms.idtoiso (F w -> F z)
(ap (p_morphism_of F)
(Core.associativity C w x y z f g h)) =
(p_composition_of F w y z h (g o f))^-1
o (p_morphism_of F h
oL (p_composition_of F w x y g f)^-1
o (p_morphism_of F h
oL p_composition_of F w x y g f
o (p_composition_of F w y z h (g o f)
o Category.Morphisms.idtoiso (F w -> F z)
(ap (p_morphism_of F)
(Core.associativity C w x y z f g h)))))
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f)) =
{|
morphism_isomorphic :=
(left_identity_natural_transformation_1
(p_morphism_of F f)
o (p_identity_of F y oR p_morphism_of F f
o p_composition_of F x y y 1 f))%natural_transformation;
isisomorphism_isomorphic :=
isisomorphism_compose
(left_identity_natural_transformation_1
(p_morphism_of F f))
(p_identity_of F y oR p_morphism_of F f
o p_composition_of F x y y 1 f)
|}
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f)) =
{|
morphism_isomorphic :=
(left_identity_natural_transformation_1
(p_morphism_of F f)
o (p_identity_of F y oR p_morphism_of F f
o p_composition_of F x y y 1 f))%natural_transformation;
isisomorphism_isomorphic :=
isisomorphism_compose
(left_identity_natural_transformation_1
(p_morphism_of F f))
(p_identity_of F y oR p_morphism_of F f
o p_composition_of F x y y 1 f)
|}
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f)) =
left_identity_natural_transformation_1
(p_morphism_of F f)
o (p_identity_of F y oR p_morphism_of F f
o p_composition_of F x y y 1 f)
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f)) =
left_identity_natural_transformation_1
(p_morphism_of F f)
o (left_identity_natural_transformation_2
(p_morphism_of F f)
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.left_identity C x y f)))
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y x0: F x
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f))
x0 =
(1
o (1
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.left_identity C x y f)) x0))%morphism
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y x0: F x
(1
o (1
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.left_identity C x y f)) x0))%morphism =
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.left_identity C x y f))
x0
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f)) =
{|
morphism_isomorphic :=
(right_identity_natural_transformation_1
(p_morphism_of F f)
o (p_morphism_of F f oL p_identity_of F x
o p_composition_of F x x y f 1))%natural_transformation;
isisomorphism_isomorphic :=
isisomorphism_compose
(right_identity_natural_transformation_1
(p_morphism_of F f))
(p_morphism_of F f oL p_identity_of F x
o p_composition_of F x x y f 1)
|}
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f)) =
{|
morphism_isomorphic :=
(right_identity_natural_transformation_1
(p_morphism_of F f)
o (p_morphism_of F f oL p_identity_of F x
o p_composition_of F x x y f 1))%natural_transformation;
isisomorphism_isomorphic :=
isisomorphism_compose
(right_identity_natural_transformation_1
(p_morphism_of F f))
(p_morphism_of F f oL p_identity_of F x
o p_composition_of F x x y f 1)
|}
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f)) =
right_identity_natural_transformation_1
(p_morphism_of F f)
o (p_morphism_of F f oL p_identity_of F x
o p_composition_of F x x y f 1)
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f)) =
right_identity_natural_transformation_1
(p_morphism_of F f)
o (right_identity_natural_transformation_2
(p_morphism_of F f)
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.right_identity C x y f)))
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y x0: F x
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f))
x0 =
(1
o (1
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.right_identity C x y f)) x0))%morphism
H: Funext C: PreCategory F: Pseudofunctor C x, y: C f: morphism C x y x0: F x
(1
o (1
o Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F)
(Core.right_identity C x y f)) x0))%morphism =
Category.Morphisms.idtoiso (F x -> F y)
(ap (p_morphism_of F) (Core.right_identity C x y f))
x0
etransitivity; apply Category.Core.left_identity.Qed.Local Notationtypeof x := ((funT (_ : T) => T) _ x) (only parsing).Letp_composition_of_coherent_for_rewrite_typewxyzfgh
:= Evalsimplin typeof (ap (@morphism_isomorphic _ _ _)
(@p_composition_of_coherent_iso_for_rewrite w x y z f g h)).Definitionp_composition_of_coherent_for_rewritewxyzfgh
: p_composition_of_coherent_for_rewrite_type w x y z f g h
:= ap (@morphism_isomorphic _ _ _)
(@p_composition_of_coherent_iso_for_rewrite w x y z f g h).Letp_composition_of_coherent_inverse_for_rewrite_typewxyzfgh
:= Evalsimplin typeof (ap (funi => @morphism_inverse _ _ _ _ (@isisomorphism_isomorphic _ _ _ i))
(@p_composition_of_coherent_iso_for_rewrite w x y z f g h)).Definitionp_composition_of_coherent_inverse_for_rewritewxyzfgh
: p_composition_of_coherent_inverse_for_rewrite_type w x y z f g h
:= p_composition_of_coherent_iso_for_rewrite__isisomorphism_helper__to_inverse
(p_composition_of_coherent_iso_for_rewrite w x y z f g h).Letp_left_identity_of_coherent_for_rewrite_typexyf
:= Evalsimplin typeof (ap (@morphism_isomorphic _ _ _)
(@p_left_identity_of_coherent_iso_for_rewrite x y f)).Definitionp_left_identity_of_coherent_for_rewritexyf
: p_left_identity_of_coherent_for_rewrite_type x y f
:= ap (@morphism_isomorphic _ _ _)
(@p_left_identity_of_coherent_iso_for_rewrite x y f).Letp_left_identity_of_coherent_inverse_for_rewrite_typexyf
:= Evalsimplin typeof (ap (funi => @morphism_inverse _ _ _ _ (@isisomorphism_isomorphic _ _ _ i))
(@p_left_identity_of_coherent_iso_for_rewrite x y f)).Definitionp_left_identity_of_coherent_inverse_for_rewritexyf
: p_left_identity_of_coherent_inverse_for_rewrite_type x y f
:= ap (funi => @morphism_inverse _ _ _ _ (@isisomorphism_isomorphic _ _ _ i))
(@p_left_identity_of_coherent_iso_for_rewrite x y f).Letp_right_identity_of_coherent_for_rewrite_typexyf
:= Evalsimplin typeof (ap (@morphism_isomorphic _ _ _)
(@p_right_identity_of_coherent_iso_for_rewrite x y f)).Definitionp_right_identity_of_coherent_for_rewritexyf
: p_right_identity_of_coherent_for_rewrite_type x y f
:= Evalsimplin ap (@morphism_isomorphic _ _ _)
(@p_right_identity_of_coherent_iso_for_rewrite x y f).Letp_right_identity_of_coherent_inverse_for_rewrite_typexyf
:= Evalsimplin typeof (ap (funi => @morphism_inverse _ _ _ _ (@isisomorphism_isomorphic _ _ _ i))
(@p_right_identity_of_coherent_iso_for_rewrite x y f)).Definitionp_right_identity_of_coherent_inverse_for_rewritexyf
: p_right_identity_of_coherent_inverse_for_rewrite_type x y f
:= ap (funi => @morphism_inverse _ _ _ _ (@isisomorphism_isomorphic _ _ _ i))
(@p_right_identity_of_coherent_iso_for_rewrite x y f).Endlemmas.