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.
Require Import Category.Core Functor.Core NaturalTransformation.Core.Require Import Category.Core Functor.Core NaturalTransformation.Core.Require Import Functor.Composition.Core.Require Import NaturalTransformation.Paths NaturalTransformation.Composition.Core.Require Import Category.Morphisms FunctorCategory.Core.Require Import Pseudofunctor.Core.Require Import NaturalTransformation.Composition.Laws.Require Import Trunc Types.Sigma.Require Import Basics.Tactics.Import Functor.Identity.FunctorIdentityNotations.Set Implicit Arguments.Generalizable All Variables.LocalOpen Scope morphism_scope.LocalOpen Scope category_scope.LocalOpen Scope type_scope.(** Quoting David Spivak: David: ok so an object of [FC ⇓ D] is a pair [(X, G)], where [X] is a finite category (or a small category or whatever you wanted) and [G : X --> D] is a functor. a morphism in [FC ⇓ D] is a ``natural transformation diagram'' (as opposed to a commutative diagram, in which the natural transformation would be ``identity'') so a map in [FC ⇓ D] from [(X, G)] to [(X', G')] is a pair [(F, α)] where [F : X --> X'] is a functor and [α : G --> G' ∘ F] is a natural transformation and the punchline is that there is a functor [colim : FC ⇓ D --> D] David: consider for yourself the case where [F : X --> X'] is identity ([X = X']) and (separately) the case where [α : G --> G ∘ F] is identity. the point is, you've already done the work to get this colim functor. because every map in [FC ⇓ D] can be written as a composition of two maps, one where the [F]-part is identity and one where the [α]-part is identity. and you've worked both of those cases out already. *)ModuleImport LaxCommaCategoryParts.Sectionlax_comma_category_parts.Context `{Funext}.VariablesAB : PreCategory.VariableS : Pseudofunctor A.VariableT : Pseudofunctor B.Context `{forallab, IsHSet (Functor (S a) (T b))}.Recordobject :=
{
a : A;
b : B;
f : Functor (S a) (T b)
}.Local Abbreviation object_sig_T :=
({ a : A
| { b : B
| Functor (S a) (T b) }}).
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0))
{a0 : A & {b0 : B & Functor (S a0) (T b0)}} <~> object
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0))
{a0 : A & {b0 : B & Functor (S a0) (T b0)}} <~> object
issig.Defined.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) n: trunc_index IsTrunc0: IsTrunc n A IsTrunc1: IsTrunc n B H1: forall (s : A) (d : B), IsTrunc n (Functor (S s) (T d))
IsTrunc n object
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) n: trunc_index IsTrunc0: IsTrunc n A IsTrunc1: IsTrunc n B H1: forall (s : A) (d : B), IsTrunc n (Functor (S s) (T d))
IsTrunc n object
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) n: trunc_index IsTrunc0: IsTrunc n A IsTrunc1: IsTrunc n B H1: forall (s : A) (d : B), IsTrunc n (Functor (S s) (T d))
IsTrunc n {a0 : A & {b0 : B & Functor (S a0) (T b0)}}
typeclasses eauto.Qed.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object
forall (Ha : a x = a y) (Hb : b x = b y),
match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y -> x = y
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object
forall (Ha : a x = a y) (Hb : b x = b y),
match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y -> x = y
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a2 : A) (b2 : B), IsHSet (Functor (S a2) (T b2)) a0: A b0: B f0: Functor (S a0) (T b0) a1: A b1: B f1: Functor (S a1) (T b1)
forall (Ha : a0 = a1) (Hb : b0 = b1),
match Ha in _ = X return Functor (S X) (T b1) with
| 1%path =>
match Hb in _ = Y return Functor (S a0) (T Y) with
| 1%path => f0
endend = f1 -> {| a := a0; b := b0; f := f0 |} = {| a := a1; b := b1; f := f1 |}
intros; path_induction; reflexivity.Defined.Definitionpath_object_uncurriedxy
(H : { HaHb : (x.(a) = y.(a)) * (x.(b) = y.(b))
| match fst HaHb in _ = X, snd HaHb in _ = Y return Functor (S X) (T Y) with
| idpath, idpath => x.(f)
end = y.(f) })
: x = y
:= @path_object x y (fst H.1) (snd H.1) H.2.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object Ha: a x = a y Hb: b x = b y Hf: match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y
ap a (path_object x y Ha Hb Hf) = Ha
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object Ha: a x = a y Hb: b x = b y Hf: match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y
ap a (path_object x y Ha Hb Hf) = Ha
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a2 : A) (b2 : B), IsHSet (Functor (S a2) (T b2)) a0: A b0: B f0: Functor (S a0) (T b0) a1: A b1: B f1: Functor (S a1) (T b1) Ha: a0 = a1 Hb: b0 = b1 Hf: match Ha in _ = X return Functor (S X) (T b1) with
| 1%path =>
match Hb in _ = Y return Functor (S a0) (T Y) with
| 1%path => f0
endend = f1
ap a
(path_object {| a := a0; b := b0; f := f0 |}
{| a := a1; b := b1; f := f1 |} Ha Hb Hf) =
Ha
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a1 : A) (b1 : B), IsHSet (Functor (S a1) (T b1)) a0: A b0: B f0: Functor (S a0) (T b0)
1%path = 1%path
reflexivity.Qed.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object Ha: a x = a y Hb: b x = b y Hf: match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y
ap b (path_object x y Ha Hb Hf) = Hb
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x, y: object Ha: a x = a y Hb: b x = b y Hf: match Ha in _ = X return Functor (S X) (T (b y)) with
| 1%path =>
match Hb in _ = Y return Functor (S (a x)) (T Y) with
| 1%path => f x
endend = f y
ap b (path_object x y Ha Hb Hf) = Hb
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a2 : A) (b2 : B), IsHSet (Functor (S a2) (T b2)) a0: A b0: B f0: Functor (S a0) (T b0) a1: A b1: B f1: Functor (S a1) (T b1) Ha: a0 = a1 Hb: b0 = b1 Hf: match Ha in _ = X return Functor (S X) (T b1) with
| 1%path =>
match Hb in _ = Y return Functor (S a0) (T Y) with
| 1%path => f0
endend = f1
ap b
(path_object {| a := a0; b := b0; f := f0 |}
{| a := a1; b := b1; f := f1 |} Ha Hb Hf) =
Hb
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a1 : A) (b1 : B), IsHSet (Functor (S a1) (T b1)) a0: A b0: B f0: Functor (S a0) (T b0)
1%path = 1%path
reflexivity.Qed.GlobalOpaque path_object.Recordmorphism (abfa'b'f' : object) :=
{
g : Category.Core.morphism A (abf.(a)) (a'b'f'.(a));
h : Category.Core.morphism B (abf.(b)) (a'b'f'.(b));
p : NaturalTransformation (p_morphism_of T h o abf.(f))
(a'b'f'.(f) o p_morphism_of S g)
}.Local Abbreviation morphism_sig_T abf a'b'f' :=
({ g : Category.Core.morphism A (abf.(a)) (a'b'f'.(a))
| { h : Category.Core.morphism B (abf.(b)) (a'b'f'.(b))
| NaturalTransformation (p_morphism_of T h o abf.(f))
(a'b'f'.(f) o p_morphism_of S g) }}).
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object
morphism_sig_T abf a'b'f' <~> morphism abf a'b'f'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object
morphism_sig_T abf a'b'f' <~> morphism abf a'b'f'
issig.Defined.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object n: trunc_index IsTrunc0: IsTrunc n (Core.morphism A (a abf) (a a'b'f')) IsTrunc1: IsTrunc n (Core.morphism B (b abf) (b a'b'f')) H1: forall (m1 : Core.morphism A (a abf) (a a'b'f'))
(m2 : Core.morphism B (b abf) (b a'b'f')),
IsTrunc n
(NaturalTransformation (p_morphism_of T m2 o f abf)
(f a'b'f' o p_morphism_of S m1))
IsTrunc n (morphism abf a'b'f')
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object n: trunc_index IsTrunc0: IsTrunc n (Core.morphism A (a abf) (a a'b'f')) IsTrunc1: IsTrunc n (Core.morphism B (b abf) (b a'b'f')) H1: forall (m1 : Core.morphism A (a abf) (a a'b'f'))
(m2 : Core.morphism B (b abf) (b a'b'f')),
IsTrunc n
(NaturalTransformation (p_morphism_of T m2 o f abf)
(f a'b'f' o p_morphism_of S m1))
IsTrunc n (morphism abf a'b'f')
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object n: trunc_index IsTrunc0: IsTrunc n (Core.morphism A (a abf) (a a'b'f')) IsTrunc1: IsTrunc n (Core.morphism B (b abf) (b a'b'f')) H1: forall (m1 : Core.morphism A (a abf) (a a'b'f'))
(m2 : Core.morphism B (b abf) (b a'b'f')),
IsTrunc n
(NaturalTransformation (p_morphism_of T m2 o f abf)
(f a'b'f' o p_morphism_of S m1))
IsTrunc n (morphism_sig_T abf a'b'f')
typeclasses eauto.Qed.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f'
forall (Hg : g gh = g g'h') (Hh : h gh = h g'h'),
match
Hg in _ = g
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g)
with
| 1%path =>
match
Hh in _ = h
return
NaturalTransformation (p_morphism_of T h o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h' -> gh = g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f'
forall (Hg : g gh = g g'h') (Hh : h gh = h g'h'),
match
Hg in _ = g
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g)
with
| 1%path =>
match
Hh in _ = h
return
NaturalTransformation (p_morphism_of T h o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h' -> gh = g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f' Hg: g gh = g g'h' Hh: h gh = h g'h' Hp: match
Hg in _ = g0
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g0)
with
| 1%path =>
match
Hh in _ = h0
return
NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h'
gh = g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object g0: Core.morphism A (a abf) (a a'b'f') h0: Core.morphism B (b abf) (b a'b'f') p0: NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S g0) g1: Core.morphism A (a abf) (a a'b'f') h1: Core.morphism B (b abf) (b a'b'f') p1: NaturalTransformation (p_morphism_of T h1 o f abf)
(f a'b'f' o p_morphism_of S g1) Hg: g0 = g1 Hh: h0 = h1 Hp: match
Hg in _ = g2
return
NaturalTransformation (p_morphism_of T h1 o f abf)
(f a'b'f' o p_morphism_of S g2)
with
| 1%path =>
match
Hh in _ = h2
return
NaturalTransformation (p_morphism_of T h2 o f abf)
(f a'b'f' o p_morphism_of S g0)
with
| 1%path => p0
endend = p1
{| g := g0; h := h0; p := p0 |} = {| g := g1; h := h1; p := p1 |}
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object g0: Core.morphism A (a abf) (a a'b'f') h0: Core.morphism B (b abf) (b a'b'f') p0: NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S g0)
{| g := g0; h := h0; p := p0 |} = {| g := g0; h := h0; p := p0 |}
reflexivity.Qed.Definitionpath_morphism_uncurriedabfa'b'f'ghg'h'
(H : { HgHh : (gh.(g) = g'h'.(g)) * (gh.(h) = g'h'.(h))
| match fst HgHh in _ = g, snd HgHh in _ = h
return NaturalTransformation
(p_morphism_of T h o abf.(f))
(a'b'f'.(f) o p_morphism_of S g)
with
| idpath, idpath => gh.(p)
end = g'h'.(p) })
: gh = g'h'
:= @path_morphism abf a'b'f' gh g'h' (fst H.1) (snd H.1) H.2.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f'
forall (Hg : g gh = g g'h') (Hh : h gh = h g'h'),
(f a'b'f'
oL (idtoiso (S (a abf) -> S (a a'b'f')) (ap (p_morphism_of S) Hg)
:
Core.morphism (S (a abf) -> S (a a'b'f')) (p_morphism_of S (g gh))
(p_morphism_of S (g g'h')))
o p gh
o ((idtoiso (T (b abf) -> T (b a'b'f')) (ap (p_morphism_of T) Hh))^-1
oR f abf))%natural_transformation =
p g'h' ->
match
Hg in _ = g0
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g0)
with
| 1%path =>
match
Hh in _ = h0
return
NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f'
forall (Hg : g gh = g g'h') (Hh : h gh = h g'h'),
(f a'b'f'
oL (idtoiso (S (a abf) -> S (a a'b'f')) (ap (p_morphism_of S) Hg)
:
Core.morphism (S (a abf) -> S (a a'b'f')) (p_morphism_of S (g gh))
(p_morphism_of S (g g'h')))
o p gh
o ((idtoiso (T (b abf) -> T (b a'b'f')) (ap (p_morphism_of T) Hh))^-1
oR f abf))%natural_transformation =
p g'h' ->
match
Hg in _ = g0
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g0)
with
| 1%path =>
match
Hh in _ = h0
return
NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh, g'h': morphism abf a'b'f' Hg: g gh = g g'h' Hh: h gh = h g'h' Hp: (f a'b'f' oL idtoiso (S (a abf) -> S (a a'b'f')) (ap (p_morphism_of S) Hg)
o p gh
o ((idtoiso (T (b abf) -> T (b a'b'f')) (ap (p_morphism_of T) Hh))^-1
oR f abf))%natural_transformation =
p g'h'
match
Hg in _ = g0
return
NaturalTransformation (p_morphism_of T (h g'h') o f abf)
(f a'b'f' o p_morphism_of S g0)
with
| 1%path =>
match
Hh in _ = h0
return
NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p g'h'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh: morphism abf a'b'f' g0: Core.morphism A (a abf) (a a'b'f') h0: Core.morphism B (b abf) (b a'b'f') p0: NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S g0) Hg: g gh = g0 Hh: h gh = h0 Hp: (f a'b'f' oL idtoiso (S (a abf) -> S (a a'b'f')) (ap (p_morphism_of S) Hg)
o p gh
o ((idtoiso (T (b abf) -> T (b a'b'f')) (ap (p_morphism_of T) Hh))^-1
oR f abf))%natural_transformation =
p0
match
Hg in _ = g1
return
NaturalTransformation (p_morphism_of T h0 o f abf)
(f a'b'f' o p_morphism_of S g1)
with
| 1%path =>
match
Hh in _ = h1
return
NaturalTransformation (p_morphism_of T h1 o f abf)
(f a'b'f' o p_morphism_of S (g gh))
with
| 1%path => p gh
endend = p0
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh: morphism abf a'b'f'
p gh =
(f a'b'f' oL NaturalTransformation.Identity.identity (p_morphism_of S (g gh))
o p gh
o (NaturalTransformation.Identity.identity (p_morphism_of T (h gh)) oR f abf))%natural_transformation
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh: morphism abf a'b'f' x: S (a abf)
p gh x = (f a'b'f') _1 1 o p gh x o 1
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) abf, a'b'f': object gh: morphism abf a'b'f' x: S (a abf)
p gh x = p gh x
reflexivity.Qed.Definitionpath_morphism'abfa'b'f'
(ghg'h' : morphism abf a'b'f')
(Hg : gh.(g) = g'h'.(g))
(Hh : gh.(h) = g'h'.(h))
(Hp : ((_ oL (Category.Morphisms.idtoiso (_ -> _) (ap (@p_morphism_of _ _ S _ _) Hg) : Category.Core.morphism _ _ _))
o (gh.(p))
o ((Category.Morphisms.idtoiso (_ -> _) (ap (@p_morphism_of _ _ T _ _) Hh) : Category.Core.morphism _ _ _)^-1 oR _)
= g'h'.(p))%natural_transformation)
: gh = g'h'
:= @path_morphism abf a'b'f' gh g'h' Hg Hh
(@path_morphism'_helper abf a'b'f' gh g'h' Hg Hh Hp).Definitionpath_morphism'_uncurriedabfa'b'f'ghg'h'
(H : { HgHh : (gh.(g) = g'h'.(g)) * (gh.(h) = g'h'.(h))
| ((_ oL (Category.Morphisms.idtoiso (_ -> _) (ap (@p_morphism_of _ _ S _ _) (fst HgHh)) : Category.Core.morphism _ _ _))
o (gh.(p))
o ((Category.Morphisms.idtoiso (_ -> _) (ap (@p_morphism_of _ _ T _ _) (snd HgHh)) : Category.Core.morphism _ _ _)^-1 oR _)
= g'h'.(p))%natural_transformation })
: gh = g'h'
:= @path_morphism' abf a'b'f' gh g'h' (fst H.1) (snd H.1) H.2.
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) s, d, d': object gh: morphism d d' g'h': morphism s d
morphism s d'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) s, d, d': object gh: morphism d d' g'h': morphism s d
morphism s d'
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) s, d, d': object gh: morphism d d' g'h': morphism s d
NaturalTransformation (p_morphism_of T (h gh o h g'h') o f s)
(f d' o p_morphism_of S (g gh o g g'h'))
exact ((_ oL (p_composition_of S _ _ _ _ _)^-1)
o (associator_1 _ _ _)
o (gh.(p) oR _)
o (associator_2 _ _ _)
o (_ oL g'h'.(p))
o (associator_1 _ _ _)
o ((p_composition_of T _ _ _ _ _ : Category.Core.morphism _ _ _)
oR _))%natural_transformation.Defined.GlobalArguments compose _ _ _ _ _ / .
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x: object
morphism x x
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x: object
morphism x x
H: Funext A, B: PreCategory S: Pseudofunctor A T: Pseudofunctor B H0: forall (a0 : A) (b0 : B), IsHSet (Functor (S a0) (T b0)) x: object
NaturalTransformation (p_morphism_of T 1 o f x) (f x o p_morphism_of S 1)
exact ((_ oL (p_identity_of S _ : Category.Core.morphism _ _ _)^-1)
o (right_identity_natural_transformation_2 _)
o (left_identity_natural_transformation_1 _)
o ((p_identity_of T _ : Category.Core.morphism _ _ _)
oR _))%natural_transformation.Defined.GlobalArguments identity _ / .Endlax_comma_category_parts.EndLaxCommaCategoryParts.