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.
(** * Left and right identity laws of adjunction composition *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Adjoint.Composition.Core Adjoint.Core Adjoint.Identity.Require Adjoint.Composition.LawsTactic.Require Import Types.Sigma Types.Prod.Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.LocalOpen Scope adjunction_scope.LocalOpen Scope morphism_scope.Sectionidentity_lemmas.Local NotationAdjunctionWithFunctors C D :=
{ fg : Functor C D * Functor D C
| fst fg -| snd fg }.Context `{Funext}.VariablesCD : PreCategory.VariableF : Functor C D.VariableG : Functor D C.VariableA : F -| G.LocalOpen Scope adjunction_scope.
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
((Functor.Composition.Core.compose
(Functor.Identity.identity D) F,
Functor.Composition.Core.compose G
(Functor.Identity.identity D)); 1 o A) =
((F, G); A)
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
((Functor.Composition.Core.compose
(Functor.Identity.identity D) F,
Functor.Composition.Core.compose G
(Functor.Identity.identity D)); 1 o A) =
((F, G); A)
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
{p
: (Functor.Composition.Core.compose
(Functor.Identity.identity D) F,
Functor.Composition.Core.compose G
(Functor.Identity.identity D)) = (F, G) &
transport
(funfg : Functor C D * Functor D C =>
fst fg -| snd fg) p (1 o A) = A}
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
transport
(funfg : Functor C D * Functor D C =>
fst fg -| snd fg)
(path_prod' (Laws.left_identity F)
(Laws.right_identity G)) (1 o A) = A
Adjoint.Composition.LawsTactic.law_t.Qed.
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
((Functor.Composition.Core.compose F
(Functor.Identity.identity C),
Functor.Composition.Core.compose
(Functor.Identity.identity C) G); A o 1) =
((F, G); A)
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
((Functor.Composition.Core.compose F
(Functor.Identity.identity C),
Functor.Composition.Core.compose
(Functor.Identity.identity C) G); A o 1) =
((F, G); A)
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
{p
: (Functor.Composition.Core.compose F
(Functor.Identity.identity C),
Functor.Composition.Core.compose
(Functor.Identity.identity C) G) = (F, G) &
transport
(funfg : Functor C D * Functor D C =>
fst fg -| snd fg) p (A o 1) = A}
H: Funext C, D: PreCategory F: Functor C D G: Functor D C A: F -| G
transport
(funfg : Functor C D * Functor D C =>
fst fg -| snd fg)
(path_prod' (Laws.right_identity F)
(Laws.left_identity G)) (A o 1) = A
Adjoint.Composition.LawsTactic.law_t.Qed.Endidentity_lemmas.#[export]
Hint Rewrite @left_identity @right_identity : category.#[export]
Hint Immediate left_identity right_identity : category.