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.
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B
fst o (a * b) = a
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B
fst o (a * b) = a
path_functor; trivial.Defined.(** ** [snd ∘ (a * b) = b] *)
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B
snd o (a * b) = b
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B
snd o (a * b) = b
path_functor; trivial.Defined.Sectionunique.VariableF : Functor C (A * B).HypothesisH1 : fst o F = a.HypothesisH2 : snd o F = b.
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b c: C
((a * b) _0 c)%object = (F _0 c)%object
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b c: C
((a * b) _0 c)%object = (F _0 c)%object
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b c: C X: (funF0 : Functor C A => (F0 _0 c)%object) (fst o F) =
(funF0 : Functor C A => (F0 _0 c)%object) a
((a * b) _0 c)%object = (F _0 c)%object
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b c: C X: (funF0 : Functor C A => (F0 _0 c)%object) (fst o F) =
(funF0 : Functor C A => (F0 _0 c)%object) a X0: (funF0 : Functor C B => (F0 _0 c)%object) (snd o F) =
(funF0 : Functor C B => (F0 _0 c)%object) b
((a * b) _0 c)%object = (F _0 c)%object
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b c: C X: fst_type (F _0 c)%object = (a _0 c)%object X0: snd_type (F _0 c)%object = (b _0 c)%object
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
transport
(funGO : C -> prod_type A B =>
forallsd : C,
morphism C s d ->
prod_type (morphism A (fst_type (GO s)) (fst_type (GO d)))
(morphism B (snd_type (GO s)) (snd_type (GO d))))
(path_forall (a * b) F unique_helper)
(fun (sd : C) (m : morphism C s d) => pair_type (a _1 m) (b _1 m)) =
morphism_of F
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
transport
(funGO : C -> prod_type A B =>
forallsd : C,
morphism C s d ->
prod_type (morphism A (fst_type (GO s)) (fst_type (GO d)))
(morphism B (snd_type (GO s)) (snd_type (GO d))))
(path_forall (a * b) F unique_helper)
(fun (sd : C) (m : morphism C s d) => pair_type (a _1 m) (b _1 m)) =
morphism_of F
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b x, x0: C x1: morphism C x x0
transport
(funGO : C -> prod_type A B =>
forallsd : C,
morphism C s d ->
prod_type (morphism A (fst_type (GO s)) (fst_type (GO d)))
(morphism B (snd_type (GO s)) (snd_type (GO d))))
(path_forall (a * b) F unique_helper)
(fun (sd : C) (m : morphism C s d) => pair_type (a _1 m) (b _1 m)) x x0 x1 =
F _1 x1
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b x, x0: C x1: morphism C x x0
transport
(funx2 : C -> prod_type A B =>
prod_type (morphism A (fst_type (x2 x)) (fst_type (x2 x0)))
(morphism B (snd_type (x2 x)) (snd_type (x2 x0))))
(path_forall (func : C => pair_type (a _0 c)%object (b _0 c)%object) F
unique_helper)
(pair_type (a _1 x1) (b _1 x1)) =
F _1 x1
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b x, x0: C x1: morphism C x x0
transport
(funy : prod_type A B =>
prod_type (morphism A (fst_type (F _0 x)%object) (fst_type y))
(morphism B (snd_type (F _0 x)%object) (snd_type y)))
(unique_helper x0)
(transport
(funy : prod_type A B =>
prod_type
(morphism A (fst_type y)
(fst_type (pair_type (a _0 x0)%object (b _0 x0)%object)))
(morphism B (snd_type y)
(snd_type (pair_type (a _0 x0)%object (b _0 x0)%object))))
(unique_helper x) (pair_type (a _1 x1) (b _1 x1))) =
F _1 x1
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b x, x0: C x1: morphism C x x0
transport
(funy : prod_type A B =>
prod_type (morphism A (fst_type (F _0 x)%object) (fst_type y))
(morphism B (snd_type (F _0 x)%object) (snd_type y)))
(paths_rect B (snd_type (F _0 x0)%object)
(fun (o : B) (_ : snd_type (F _0 x0)%object = o) =>
pair_type (a _0 x0)%object o = (F _0 x0)%object)
(paths_rect A (fst_type (F _0 x0)%object)
(fun (o : A) (_ : fst_type (F _0 x0)%object = o) =>
pair_type o (snd_type (F _0 x0)%object) = (F _0 x0)%object)
(paths_rect (Functor C B) (snd o F)
(fun (b0 : Functor C B) (_ : snd o F = b0) =>
snd o F = b0 ->
pair_type (fst_type (F _0 x0)%object) (snd_type (F _0 x0)%object) =
(F _0 x0)%object)
(fun_ : snd o F = snd o F =>
paths_rect (Functor C A) (fst o F)
(fun (a0 : Functor C A) (_ : fst o F = a0) =>
fst o F = a0 ->
pair_type (fst_type (F _0 x0)%object)
(snd_type (F _0 x0)%object) =
(F _0 x0)%object)
(fun_ : fst o F = fst o F => eta_prod (F _0 x0)%object) a H1
H1)
b H2 H2)
(a _0 x0)%object (ap (funF0 : Functor C A => (F0 _0 x0)%object) H1))
(b _0 x0)%object (ap (funF0 : Functor C B => (F0 _0 x0)%object) H2))
(transport
(funy : prod_type A B =>
prod_type
(morphism A (fst_type y)
(fst_type (pair_type (a _0 x0)%object (b _0 x0)%object)))
(morphism B (snd_type y)
(snd_type (pair_type (a _0 x0)%object (b _0 x0)%object))))
(paths_rect B (snd_type (F _0 x)%object)
(fun (o : B) (_ : snd_type (F _0 x)%object = o) =>
pair_type (a _0 x)%object o = (F _0 x)%object)
(paths_rect A (fst_type (F _0 x)%object)
(fun (o : A) (_ : fst_type (F _0 x)%object = o) =>
pair_type o (snd_type (F _0 x)%object) = (F _0 x)%object)
(paths_rect (Functor C B) (snd o F)
(fun (b0 : Functor C B) (_ : snd o F = b0) =>
snd o F = b0 ->
pair_type (fst_type (F _0 x)%object)
(snd_type (F _0 x)%object) =
(F _0 x)%object)
(fun_ : snd o F = snd o F =>
paths_rect (Functor C A) (fst o F)
(fun (a0 : Functor C A) (_ : fst o F = a0) =>
fst o F = a0 ->
pair_type (fst_type (F _0 x)%object)
(snd_type (F _0 x)%object) =
(F _0 x)%object)
(fun_ : fst o F = fst o F => eta_prod (F _0 x)%object) a H1
H1)
b H2 H2)
(a _0 x)%object (ap (funF0 : Functor C A => (F0 _0 x)%object) H1))
(b _0 x)%object (ap (funF0 : Functor C B => (F0 _0 x)%object) H2))
(pair_type (a _1 x1) (b _1 x1))) =
F _1 x1
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) x, x0: C x1: morphism C x x0
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) fst0: A snd0: B fst1: A snd1: B fst: morphism A (fst_type (pair_type fst0 snd0)) (fst_type (pair_type fst1 snd1)) snd: morphism B (snd_type (pair_type fst0 snd0)) (snd_type (pair_type fst1 snd1))
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
a * b = F
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
a * b = F
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
{HO : (func : C => pair_type (a _0 c)%object (b _0 c)%object) = F &
transport
(funGO : C -> prod_type A B =>
forallsd : C,
morphism C s d ->
prod_type (morphism A (fst_type (GO s)) (fst_type (GO d)))
(morphism B (snd_type (GO s)) (snd_type (GO d))))
HO (fun (sd : C) (m : morphism C s d) => pair_type (a _1 m) (b _1 m)) =
morphism_of F}
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B F: Functor C (A * B) H1: fst o F = a H2: snd o F = b
transport
(funGO : C -> prod_type A B =>
forallsd : C,
morphism C s d ->
prod_type (morphism A (fst_type (GO s)) (fst_type (GO d)))
(morphism B (snd_type (GO s)) (snd_type (GO d))))
(path_forall (a * b) F unique_helper)
(fun (sd : C) (m : morphism C s d) => pair_type (a _1 m) (b _1 m)) =
morphism_of F
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B)
Contr {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B)
Contr {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B)
forally : {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)},
(a * b; pair_type compose_fst_prod compose_snd_prod) = y
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B) y: {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
(a * b; pair_type compose_fst_prod compose_snd_prod) = y
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B) y: {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
{p : (a * b; pair_type compose_fst_prod compose_snd_prod).1 = y.1 &
transport
(funF : Functor C (A * B) => prod_type (fst o F = a) (snd o F = b)) p
(a * b; pair_type compose_fst_prod compose_snd_prod).2 =
y.2}
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B) y: {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
{p : a * b = y.1 &
transport
(funF : Functor C (A * B) => prod_type (fst o F = a) (snd o F = b)) p
(pair_type compose_fst_prod compose_snd_prod) =
y.2}
H: Funext A, B, C: PreCategory a: Functor C A b: Functor C B IsHSet0: IsHSet (Functor C A) IsHSet1: IsHSet (Functor C B) y: {F : Functor C (A * B) & prod_type (fst o F = a) (snd o F = b)}
transport
(funF : Functor C (A * B) => prod_type (fst o F = a) (snd o F = b))
(unique (fst_type y.2) (snd_type y.2))
(pair_type compose_fst_prod compose_snd_prod) =
y.2
exact (center _).Qed.Enduniversal.(** ** Classification of path space of functors to a product precategory *)
H: Funext A, B, C: PreCategory F, G: Functor C (A * B) H1: fst o F = fst o G H2: snd o F = snd o G
F = G
H: Funext A, B, C: PreCategory F, G: Functor C (A * B) H1: fst o F = fst o G H2: snd o F = snd o G