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.
(** * Coercions between the various (co)unit definitions *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G
AdjunctionUnit F G
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G
AdjunctionUnit F G
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G
forall (c : C) (d : D)
(f : morphism C c (G _0 d)%object),
Contr
{g : morphism D (F _0 c)%object d &
G _1 g o unit A c = f}
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object
Contr
{g : morphism D (F _0 c)%object d &
G _1 g o unit A c = f}
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object
forallxy : {g : morphism D (F _0 c)%object d &
G _1 g o unit A c = f}, x = y
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object proj1: morphism D (F _0 c)%object d proj2: G _1 proj1 o unit A c = f proj0: morphism D (F _0 c)%object d proj3: G _1 proj0 o unit A c = f
(proj1; proj2) = (proj0; proj3)
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object proj1: morphism D (F _0 c)%object d proj2: G _1 proj1 o unit A c = f proj0: morphism D (F _0 c)%object d proj3: G _1 proj0 o unit A c = f
{p : (proj1; proj2).1 = (proj0; proj3).1 &
transport
(fung : morphism D (F _0 c)%object d =>
G _1 g o unit A c = f) p (proj1; proj2).2 =
(proj0; proj3).2}
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object proj1: morphism D (F _0 c)%object d proj2: G _1 proj1 o unit A c = f proj0: morphism D (F _0 c)%object d proj3: G _1 proj0 o unit A c = f
(proj1; proj2).1 = (proj0; proj3).1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnitCounit F G c: C d: D f: morphism C c (G _0 d)%object proj1: morphism D (F _0 c)%object d proj2: G _1 proj1 o unit A c = f proj0: morphism D (F _0 c)%object d proj3: G _1 proj0 o unit A c = f
proj1 = proj0
letx := match goal with |- ?x = ?y => constr:(x) endinlety := match goal with |- ?x = ?y => constr:(y) endinrewrite <- (right_identity _ _ _ x),
<- (right_identity _ _ _ y),
<- !(unit_counit_equation_1 A),
<- ?associativity;
repeatsimplrewrite <- (commutes (counit A));
(try_associativity_quick rewrite <- !composition_of);
repeatapply ap;
etransitivity; [ | symmetry ]; eassumption.Defined.(** ** unit+counit+zig+zag → counit+UMP *)Definitionadjunction_counit__of__adjunction_unit_counitCDFG (A : @AdjunctionUnitCounit C D F G)
: AdjunctionCounit F G
:= adjunction_counit__op__adjunction_unit
(adjunction_unit__of__adjunction_unit_counit A^op).Endfrom_unit_counit.Sectionto_unit_counit.Ltacto_unit_counit_nt helper commutes_tac :=
simpl;
intros;
apply helper;
repeatmatch goal with
| _ => reflexivity
| _ => rewrite !composition_of
| _ => progressrewrite?identity_of, ?left_identity, ?right_identity
| [ |- context[?x.1] ]
=> try_associativity_quick simplrewrite x.2
| [ |- context[components_of ?T] ]
=> simpl_do_clear commutes_tac (commutes T)
end.(** ** unit+UMP → unit+counit+zig+zag *)Sectionfrom_unit.VariablesCD : PreCategory.VariableF : Functor C D.VariableG : Functor D C.
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G s, d: D m: morphism D s d eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X
G _1 (eps d o F _1 (G _1 m)) o eta (G _0 s)%object =
G _1 m ->
G _1 (m o eps s) o eta (G _0 s)%object = G _1 m ->
eps d o F _1 (G _1 m) = m o eps s
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G s, d: D m: morphism D s d eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X
G _1 (eps d o F _1 (G _1 m)) o eta (G _0 s)%object =
G _1 m ->
G _1 (m o eps s) o eta (G _0 s)%object = G _1 m ->
eps d o F _1 (G _1 m) = m o eps s
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G s, d: D m: morphism D s d eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X X: G _1 (eps d o F _1 (G _1 m)) o eta (G _0 s)%object =
G _1 m X0: G _1 (m o eps s) o eta (G _0 s)%object = G _1 m
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G
NaturalTransformation (F o G) 1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G
NaturalTransformation (F o G) 1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G
forall (sd : D) (m : morphism D s d),
(center
{g : morphism D (F _0 (G _0 d))%object d &
G _1 g o A.1 (G _0 d)%object = 1}).1 o (F o G) _1 m =
1 _1 m
o (center
{g : morphism D (F _0 (G _0 s))%object s &
G _1 g o A.1 (G _0 s)%object = 1}).1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G Y: C eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X
G _1 (eps (F _0 Y)%object o F _1 (eta Y)) o eta Y =
eta Y -> eps (F _0 Y)%object o F _1 (eta Y) = 1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G Y: C eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X
G _1 (eps (F _0 Y)%object o F _1 (eta Y)) o eta Y =
eta Y -> eps (F _0 Y)%object o F _1 (eta Y) = 1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G Y: C eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X X: G _1 (eps (F _0 Y)%object o F _1 (eta Y)) o eta Y =
eta Y
eps (F _0 Y)%object o F _1 (eta Y) = 1
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G Y: C eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X X: G _1 (eps (F _0 Y)%object o F _1 (eta Y)) o eta Y =
eta Y
G _1 1 o A.1 Y = A.1 Y
C, D: PreCategory F: Functor C D G: Functor D C A: AdjunctionUnit F G Y: C eta:= A.1: NaturalTransformation 1 (G o F) eps:= funX : D =>
(center
{g : morphism D (F _0 (G _0 X))%object X &
G _1 g o A.1 (G _0 X)%object = 1}).1: forallX : D, morphism D (F _0 (G _0 X))%object X X: G _1 (eps (F _0 Y)%object o F _1 (eta Y)) o eta Y =
eta Y