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.
(** * Laws about composition of functors *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.LocalOpen Scope morphism_scope.LocalOpen Scope natural_transformation_scope.Sectionnatural_transformation_identity.Context `{Funext}.VariablesCD : PreCategory.(** ** left identity : [1 ∘ T = T] *)
H: Funext C, D: PreCategory F, F': Functor C D T: NaturalTransformation F F'
1 o T = T
H: Funext C, D: PreCategory F, F': Functor C D T: NaturalTransformation F F'
1 o T = T
path_natural_transformation; auto with morphism.Qed.(** ** right identity : [T ∘ 1 = T] *)
H: Funext C, D: PreCategory F, F': Functor C D T: NaturalTransformation F F'
T o 1 = T
H: Funext C, D: PreCategory F, F': Functor C D T: NaturalTransformation F F'
T o 1 = T
path_natural_transformation; auto with morphism.Qed.(** ** right whisker left identity : [1 ∘ᴿ F = 1] *)
H: Funext C, D, E: PreCategory G: Functor D E F: Functor C D
1 oR F = 1
H: Funext C, D, E: PreCategory G: Functor D E F: Functor C D
1 oR F = 1
path_natural_transformation; auto with morphism.Qed.(** ** left whisker right identity : [G ∘ᴸ 1 = 1] *)
H: Funext C, D, E: PreCategory G: Functor D E F: Functor C D
G oL 1 = 1
H: Funext C, D, E: PreCategory G: Functor D E F: Functor C D
G oL 1 = 1
path_natural_transformation; auto with functor.Qed.Endnatural_transformation_identity.#[export]
Hint Rewrite @left_identity @right_identity : category.#[export]
Hint Rewrite @left_identity @right_identity : natural_transformation.Sectionwhisker.Context `{fs : Funext}.(** ** whisker exchange law : [(G' ∘ᴸ T) ∘ (T' ∘ᴿ F) = (T' ∘ᴿ F') ∘ (G ∘ᴸ T)] *)Sectionexch.VariablesCDE : PreCategory.VariablesGG' : Functor D E.VariablesFF' : Functor C D.VariableT' : NaturalTransformation G G'.VariableT : NaturalTransformation F F'.
fs: Funext C, D, E: PreCategory G, G': Functor D E F, F': Functor C D T': NaturalTransformation G G' T: NaturalTransformation F F'
G' oL T o (T' oR F) = T' oR F' o (G oL T)
fs: Funext C, D, E: PreCategory G, G': Functor D E F, F': Functor C D T': NaturalTransformation G G' T: NaturalTransformation F F'
G' oL T o (T' oR F) = T' oR F' o (G oL T)
fs: Funext C, D, E: PreCategory G, G': Functor D E F, F': Functor C D T': NaturalTransformation G G' T: NaturalTransformation F F' x: C
(G' _1 (T x) o T' (F _0 x)%object)%morphism =
(T' (F' _0 x)%object o G _1 (T x))%morphism
fs: Funext C, D, E: PreCategory G, G': Functor D E F, F': Functor C D T': NaturalTransformation G G' T: NaturalTransformation F F' x: C
(T' (F' _0 x)%object o G _1 (T x))%morphism =
(G' _1 (T x) o T' (F _0 x)%object)%morphism
apply NaturalTransformation.Core.commutes.Qed.Endexch.Sectionwhisker.VariablesCD : PreCategory.VariablesFGH : Functor C D.VariableT : NaturalTransformation G H.VariableT' : NaturalTransformation F G.(** ** left whisker composition : [F ∘ᴸ (T ∘ T') = (F ∘ᴸ T) ∘ (F ∘ᴸ T')] *)
fs: Funext C, D: PreCategory F, G, H: Functor C D T: NaturalTransformation G H T': NaturalTransformation F G E: PreCategory I: Functor D E
I oL (T o T') = I oL T o (I oL T')
fs: Funext C, D: PreCategory F, G, H: Functor C D T: NaturalTransformation G H T': NaturalTransformation F G E: PreCategory I: Functor D E
fs: Funext C, D: PreCategory F, G, H: Functor C D T: NaturalTransformation G H T': NaturalTransformation F G B: PreCategory I: Functor B C
T o T' oR I = T oR I o (T' oR I)
fs: Funext C, D: PreCategory F, G, H: Functor C D T: NaturalTransformation G H T': NaturalTransformation F G B: PreCategory I: Functor B C
T o T' oR I = T oR I o (T' oR I)
path_natural_transformation; exact idpath.Qed.Endwhisker.Endwhisker.Sectionassociativity.(** ** associators - natural transformations between [F ∘ (G ∘ H)] and [(F ∘ G) ∘ H] *)Sectionfunctors.VariablesBCDE : PreCategory.VariableF : Functor D E.VariableG : Functor C D.VariableH : Functor B C.Local NotationF0 := ((F o G) o H)%functor.Local NotationF1 := (F o (G o H))%functor.Definitionassociator_1 : NaturalTransformation F0 F1
:= Evalsimplin
generalized_identity F0 F1 idpath idpath.Definitionassociator_2 : NaturalTransformation F1 F0
:= Evalsimplin
generalized_identity F1 F0 idpath idpath.Endfunctors.(** ** associativity : [(T ∘ U) ∘ V = T ∘ (U ∘ V)] *)Sectionnt.Context `{fs : Funext}.LocalOpen Scope natural_transformation_scope.
fs: Funext C, D: PreCategory F, G, H, I: Functor C D V: NaturalTransformation F G U: NaturalTransformation G H T: NaturalTransformation H I
T o U o V = T o (U o V)
fs: Funext C, D: PreCategory F, G, H, I: Functor C D V: NaturalTransformation F G U: NaturalTransformation G H T: NaturalTransformation H I
T o U o V = T o (U o V)
fs: Funext C, D: PreCategory F, G, H, I: Functor C D V: NaturalTransformation F G U: NaturalTransformation G H T: NaturalTransformation H I x: C
(T x o U x o V x)%morphism =
(T x o (U x o V x))%morphism
apply associativity.Qed.Endnt.Endassociativity.Sectionfunctor_identity.Context `{Funext}.VariablesCD : PreCategory.Local Ltacnt_id_t := split; path_natural_transformation;
autorewrite with morphism; reflexivity.(** ** left unitors : natural transformations between [1 ∘ F] and [F] *)Sectionleft.VariableF : Functor D C.Definitionleft_identity_natural_transformation_1
: NaturalTransformation (1 o F) F
:= Evalsimplin generalized_identity (1 o F) F idpath idpath.Definitionleft_identity_natural_transformation_2
: NaturalTransformation F (1 o F)
:= Evalsimplin generalized_identity F (1 o F) idpath idpath.
H: Funext C, D: PreCategory F: Functor D C
(left_identity_natural_transformation_1
o left_identity_natural_transformation_2 = 1) *
(left_identity_natural_transformation_2
o left_identity_natural_transformation_1 = 1)
H: Funext C, D: PreCategory F: Functor D C
(left_identity_natural_transformation_1
o left_identity_natural_transformation_2 = 1) *
(left_identity_natural_transformation_2
o left_identity_natural_transformation_1 = 1)
nt_id_t.Qed.Endleft.(** ** right unitors : natural transformations between [F ∘ 1] and [F] *)Sectionright.VariableF : Functor C D.Definitionright_identity_natural_transformation_1 : NaturalTransformation (F o 1) F
:= Evalsimplin generalized_identity (F o 1) F idpath idpath.Definitionright_identity_natural_transformation_2 : NaturalTransformation F (F o 1)
:= Evalsimplin generalized_identity F (F o 1) idpath idpath.
H: Funext C, D: PreCategory F: Functor C D
(right_identity_natural_transformation_1
o right_identity_natural_transformation_2 = 1) *
(right_identity_natural_transformation_2
o right_identity_natural_transformation_1 = 1)
H: Funext C, D: PreCategory F: Functor C D
(right_identity_natural_transformation_1
o right_identity_natural_transformation_2 = 1) *
(right_identity_natural_transformation_2
o right_identity_natural_transformation_1 = 1)