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.
(** * Associativity of adjunction composition *)Require Import Category.Core Functor.Core.Require Import Adjoint.Composition.Core Adjoint.Core.Require Adjoint.Composition.LawsTactic.Require Import Types.Sigma Types.Prod.Set Implicit Arguments.Generalizable All Variables.LocalOpen Scope adjunction_scope.LocalOpen Scope morphism_scope.Sectioncomposition_lemmas.Local NotationAdjunctionWithFunctors C D :=
{ fg : Functor C D * Functor D C
| fst fg -| snd fg }.Context `{H0 : Funext}.VariablesBCDE : PreCategory.VariableF : Functor B C.VariableF' : Functor C B.VariableG : Functor C D.VariableG' : Functor D C.VariableH : Functor D E.VariableH' : Functor E D.VariableAF : F -| F'.VariableAG : G -| G'.VariableAH : H -| H'.LocalOpen Scope adjunction_scope.
H0: Funext B, C, D, E: PreCategory F: Functor B C F': Functor C B G: Functor C D G': Functor D C H: Functor D E H': Functor E D AF: F -| F' AG: G -| G' AH: H -| H'
((Functor.Composition.Core.compose (Functor.Composition.Core.compose H G) F,
Functor.Composition.Core.compose F' (Functor.Composition.Core.compose G' H'));
AH o AG o AF) =
((Functor.Composition.Core.compose H (Functor.Composition.Core.compose G F),
Functor.Composition.Core.compose (Functor.Composition.Core.compose F' G') H');
AH o (AG o AF))
H0: Funext B, C, D, E: PreCategory F: Functor B C F': Functor C B G: Functor C D G': Functor D C H: Functor D E H': Functor E D AF: F -| F' AG: G -| G' AH: H -| H'
((Functor.Composition.Core.compose (Functor.Composition.Core.compose H G) F,
Functor.Composition.Core.compose F' (Functor.Composition.Core.compose G' H'));
AH o AG o AF) =
((Functor.Composition.Core.compose H (Functor.Composition.Core.compose G F),
Functor.Composition.Core.compose (Functor.Composition.Core.compose F' G') H');
AH o (AG o AF))
H0: Funext B, C, D, E: PreCategory F: Functor B C F': Functor C B G: Functor C D G': Functor D C H: Functor D E H': Functor E D AF: F -| F' AG: G -| G' AH: H -| H'
{p
: (Functor.Composition.Core.compose (Functor.Composition.Core.compose H G) F,
Functor.Composition.Core.compose F'
(Functor.Composition.Core.compose G' H')) =
(Functor.Composition.Core.compose H (Functor.Composition.Core.compose G F),
Functor.Composition.Core.compose (Functor.Composition.Core.compose F' G')
H')
&
transport (funfg : Functor B E * Functor E B => fst fg -| snd fg) p
(AH o AG o AF) =
AH o (AG o AF)}