Built with Alectryon. 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 *)Require Import Category.Core Functor.Core.Require Import Adjoint.Composition.Core Adjoint.Core Adjoint.Identity.Require Adjoint.Composition.LawsTactic.Require Import Types.Sigma Types.Prod.Set Implicit Arguments.Generalizable All Variables.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.