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 Basics.Overture Basics.Equivalences Basics.Tactics.Require Import Basics.Overture Basics.Equivalences Basics.Tactics.Require Import Types.Bool Types.Prod.Require Import WildCat.Core WildCat.Bifunctor WildCat.Equiv WildCat.EquivGpd
WildCat.Forall WildCat.NatTrans WildCat.Opposite
WildCat.UniverseWildCat.Yoneda WildCat.Graph WildCat.ZeroGroupoid
WildCat.Monoidal WildCat.MonoidalTwistConstruction
WildCat.FunctorCat.(** * Categories with products *)(** ** Indexed products *)(** For [A] a wild 1-category, [I] a type, and [x : I -> A] an [I]-indexed family of objects in [A], we study the categorical product of this family of objects. *)(** When [x] is an [I]-indexed family of objects in [A] and [prod] is an object with an [I]-indexed family of projections, we get for each [z] an induced map from the 0-groupoid of morphisms [z $-> prod] to the product of the 0-groupoids [z $-> x i] over [i : I]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A prod: A pr: foralli : I, prod $-> x i z: A
yon_0gpd prod z $-> prod_0gpd I (funi : I => yon_0gpd (x i) z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A prod: A pr: foralli : I, prod $-> x i z: A
yon_0gpd prod z $-> prod_0gpd I (funi : I => yon_0gpd (x i) z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A prod: A pr: foralli : I, prod $-> x i z: A
foralli : I, yon_0gpd prod z $-> (funi0 : I => yon_0gpd (x i0) z) i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A prod: A pr: foralli0 : I, prod $-> x i0 z: A i: I
yon_0gpd prod z $-> (funi0 : I => yon_0gpd (x i0) z) i
exact (fmap (funx => yon_0gpd x z) (pr i)).Defined.(** An object is a product of an [I]-indexed family of objects of a category if there is an [I]-indexed family of projections such that the induced map defined above is an equivalence. *)ClassIsProduct {A : Type} `{Is1Cat A} {I : Type} (x : I -> A) (cat_prod : A)
:= Build_IsProduct' {
cat_pr : foralli : I, cat_prod $-> x i;
cat_isequiv_cat_prod_corec_inv
:: forallz : A, CatIsEquiv (cat_prod_corec_inv x cat_prod cat_pr z);
}.Arguments cat_pr {A _ _ _ _ _ x cat_prod isprod} : rename.Arguments cat_isequiv_cat_prod_corec_inv {A _ _ _ _ _} x cat_prod {isprod} : rename.Arguments Build_IsProduct' {A _ _ _ _ _} x cat_prod.(** A product is an object together with the data that it is a product. *)ClassProduct {A : Type} `{Is1Cat A} {I : Type} (x : I -> A) := Build_Product' {
cat_prod : A;
cat_isprod :: IsProduct x cat_prod;
}.Arguments Build_Product' {A _ _ _ _ _} x cat_prod cat_isprod.Arguments cat_prod {A _ _ _ _ _} x {product} : rename.Arguments cat_isprod {A _ _ _ _ _} x {product} : rename.SectionProductConstructors.Context {A : Type} `{Is1Cat A} {I : Type} (x : I -> A)
(cat_prod : A) (cat_pr : foralli : I, cat_prod $-> x i)
(cat_prod_corec : forallz : A,
(foralli : I, z $-> x i) -> (z $-> cat_prod))
(cat_prod_beta_pr : forall (z : A) (f : foralli, z $-> x i) (i : I),
cat_pr i $o cat_prod_corec z f $== f i)
(cat_prod_eta_pr : forall (z : A) (fg : z $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g).(** A convenience wrapper for building [IsProduct]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz : A, (foralli : I, z $-> x i) -> z $-> cat_prod cat_prod_beta_pr: forall (z : A) (f : foralli : I, z $-> x i) (i : I),
cat_pr i $o cat_prod_corec z f $== f i cat_prod_eta_pr: forall (z : A) (fg : z $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g
IsProduct x cat_prod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz : A, (foralli : I, z $-> x i) -> z $-> cat_prod cat_prod_beta_pr: forall (z : A) (f : foralli : I, z $-> x i) (i : I),
cat_pr i $o cat_prod_corec z f $== f i cat_prod_eta_pr: forall (z : A) (fg : z $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g
IsProduct x cat_prod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz : A, (foralli : I, z $-> x i) -> z $-> cat_prod cat_prod_beta_pr: forall (z : A) (f : foralli : I, z $-> x i) (i : I),
cat_pr i $o cat_prod_corec z f $== f i cat_prod_eta_pr: forall (z : A) (fg : z $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g
forallz : A, CatIsEquiv (cat_prod_corec_inv x cat_prod cat_pr z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
CatIsEquiv (cat_prod_corec_inv x cat_prod cat_pr z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
IsSurjInj (cat_prod_corec_inv x cat_prod cat_pr z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
SplEssSurj (cat_prod_corec_inv x cat_prod cat_pr z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
forallx0y : zerogpd_graph (yon_0gpd cat_prod z),
cat_prod_corec_inv x cat_prod cat_pr z x0 $==
cat_prod_corec_inv x cat_prod cat_pr z y -> x0 $== y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
SplEssSurj (cat_prod_corec_inv x cat_prod cat_pr z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f0 : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f0 $== f0 i cat_prod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f0 $== cat_pr i $o g) -> f0 $== g z: A f: zerogpd_graph (prod_0gpd I (funi : I => yon_0gpd (x i) z))
{a : zerogpd_graph (yon_0gpd cat_prod z) &
cat_prod_corec_inv x cat_prod cat_pr z a $== f}
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f0 : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f0 $== f0 i cat_prod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f0 $== cat_pr i $o g) -> f0 $== g z: A f: zerogpd_graph (prod_0gpd I (funi : I => yon_0gpd (x i) z))
cat_prod_corec_inv x cat_prod cat_pr z (cat_prod_corec z f) $== f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli0 : I, cat_prod $-> x i0 cat_prod_corec: forallz0 : A, (foralli0 : I, z0 $-> x i0) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f0 : foralli0 : I, z0 $-> x i0)
(i0 : I), cat_pr i0 $o cat_prod_corec z0 f0 $== f0 i0 cat_prod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_prod),
(foralli0 : I, cat_pr i0 $o f0 $== cat_pr i0 $o g) -> f0 $== g z: A f: zerogpd_graph (prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) i: I
cat_prod_corec_inv x cat_prod cat_pr z (cat_prod_corec z f) i $-> f i
napply cat_prod_beta_pr.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f $== f i cat_prod_eta_pr: forall (z0 : A) (fg : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f $== cat_pr i $o g) -> f $== g z: A
forallx0y : zerogpd_graph (yon_0gpd cat_prod z),
cat_prod_corec_inv x cat_prod cat_pr z x0 $==
cat_prod_corec_inv x cat_prod cat_pr z y -> x0 $== y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_pr: foralli : I, cat_prod $-> x i cat_prod_corec: forallz0 : A, (foralli : I, z0 $-> x i) -> z0 $-> cat_prod cat_prod_beta_pr: forall (z0 : A) (f0 : foralli : I, z0 $-> x i) (i : I),
cat_pr i $o cat_prod_corec z0 f0 $== f0 i cat_prod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_prod),
(foralli : I, cat_pr i $o f0 $== cat_pr i $o g0) -> f0 $== g0 z: A f, g: zerogpd_graph (yon_0gpd cat_prod z) p: cat_prod_corec_inv x cat_prod cat_pr z f $==
cat_prod_corec_inv x cat_prod cat_pr z g
f $== g
by napply cat_prod_eta_pr.Defined.(** A convenience wrapper for building products. *)DefinitionBuild_Product : Product x
:= Build_Product' x cat_prod Build_IsProduct.EndProductConstructors.SectionLemmata.Context {A : Type} `{Is1Cat A} {I : Type} {x : I -> A}
(cat_prod : A) {cat_isprod : IsProduct x cat_prod}.Definitioncate_cat_prod_corec_inv {z : A}
: (yon_0gpd cat_prod z) $<~> prod_0gpd I (funi => yon_0gpd (x i) z)
:= Build_CatEquiv (cat_prod_corec_inv x cat_prod cat_pr z).Definitioncate_cat_prod_corec {z : A}
: prod_0gpd I (funi => yon_0gpd (x i) z) $<~> (yon_0gpd cat_prod z)
:= cate_cat_prod_corec_inv^-1$.Definitioncat_prod_corec {z : A}
: (foralli, z $-> x i) -> (z $-> cat_prod)
:= cate_fun cate_cat_prod_corec.(** Applying the [i]th projection after a tuple of maps gives the [ith] map. *)Definitioncat_prod_beta {z : A} (f : foralli, z $-> x i)
: foralli, cat_pr i $o cat_prod_corec f $== f i
:= cate_isretr cate_cat_prod_corec_inv f.(** The pairing map is the unique map that makes the following diagram commute. *)Definitioncat_prod_eta {z : A} (f : z $-> cat_prod)
: cat_prod_corec (funi => cat_pr i $o f) $== f
:= cate_issect cate_cat_prod_corec_inv f.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is0Functor (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is0Functor (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
forallab : A^op,
(a $-> b) ->
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a $->
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a $->
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a) ->
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a) ->
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b g: zerogpd_graph
((funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) a) i: I
yon_0gpd (x i) b
exact (f $o g i).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b
foralla0b0 : zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a),
(a0 $-> b0) ->
(fung : zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a) =>
(funi : I => f $o g i)
:
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b))
a0 $->
(fung : zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a) =>
(funi : I => f $o g i)
:
zerogpd_graph
((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) b))
b0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f: a $-> b g, h: zerogpd_graph
((funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) a) p: g $-> h i: I
f $o g i $-> f $o h i
exact (f $@L p i).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is1Functor (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is1Functor (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
forall (ab : A^op) (fg : a $-> b),
f $== g ->
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f $==
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
foralla : A^op,
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) (Id a) $==
Id ((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
forall (abc : A^op) (f : a $-> b) (g : b $-> c),
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) (g $o f) $==
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) g $o
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
forall (ab : A^op) (fg : a $-> b),
f $== g ->
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f $==
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f, g: a $-> b p: f $== g r: zerogpd_graph (prod_0gpd I (funi0 : I => yon_0gpd (x i0) a)) i: I
fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) f r i $->
fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) g r i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b: A^op f, g: a $-> b p: f $== g r: zerogpd_graph (prod_0gpd I (funi0 : I => yon_0gpd (x i0) a)) i: I
f $== g
exact p.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
foralla : A^op,
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) (Id a) $==
Id ((funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a: A^op r: zerogpd_graph (prod_0gpd I (funi0 : I => yon_0gpd (x i0) a)) i: I
fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z))
(Id a) r i $->
Id (prod_0gpd I (funi0 : I => yon_0gpd (x i0) a)) r i
napply cat_idl; exact _.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
forall (abc : A^op) (f : a $-> b) (g : b $-> c),
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) (g $o f) $==
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) g $o
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod a, b, c: A^op f: a $-> b g: b $-> c r: zerogpd_graph (prod_0gpd I (funi0 : I => yon_0gpd (x i0) a)) i: I
fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z))
(g $o f) r i $->
(fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) g $o
fmap (funz : A^op => prod_0gpd I (funi0 : I => yon_0gpd (x i0) z)) f) r i
napply cat_assoc; exact _.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
NatEquiv (yon_0gpd cat_prod)
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
NatEquiv (yon_0gpd cat_prod)
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
foralla : A^op,
yon_0gpd cat_prod a $<~>
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is1Natural (yon_0gpd cat_prod)
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
(funa : A^op => ?e a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod
Is1Natural (yon_0gpd cat_prod)
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
(funa : A^op => (funa0 : A^op => cate_cat_prod_corec_inv) a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i
(foralli : I, f i $== f' i) -> cat_prod_corec f $== cat_prod_corec f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i
(foralli : I, f i $== f' i) -> cat_prod_corec f $== cat_prod_corec f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i p: foralli : I, f i $== f' i
cat_prod_corec f $== cat_prod_corec f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i p: foralli : I, f i $== f' i
cate_cat_prod_corec f $== cate_cat_prod_corec f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i p: foralli : I, f i $== f' i
equiv_fun_0gpd cate_cat_prod_corec_inv (cate_cat_prod_corec f) $== f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': foralli : I, z $-> x i p: foralli : I, f i $== f' i
Id (prod_0gpd I (funi : I => yon_0gpd (x i) z)) f $== f'
exact p.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': z $-> cat_prod
(foralli : I, cat_pr i $o f $== cat_pr i $o f') -> f $== f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': z $-> cat_prod
(foralli : I, cat_pr i $o f $== cat_pr i $o f') -> f $== f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': z $-> cat_prod p: foralli : I, cat_pr i $o f $== cat_pr i $o f'
f $== f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A I: Type x: I -> A cat_prod: A cat_isprod: IsProduct x cat_prod z: A f, f': z $-> cat_prod p: foralli : I, cat_pr i $o f $== cat_pr i $o f'
cat_prod_corec (funi : I => cat_pr i $o f) $==
cat_prod_corec (funi : I => cat_pr i $o f')
by napply cat_prod_corec_eta.Defined.EndLemmata.SectionInducedFromEquiv.Context {A : Type} `{he : HasEquivs A} {I : Type} {x : I -> A}
(cat_prod : A) `{!IsProduct x cat_prod}
(y : A) (f : y $<~> cat_prod).(** A categorical equivalence into a product induces a product structure on the domain. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
IsProduct x y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
IsProduct x y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
foralli : I, y $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forallz : A, (foralli : I, z $-> x i) -> z $-> y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forall (z : A) (f0 : foralli : I, z $-> x i) (i : I),
?cat_pr i $o ?cat_prod_corec z f0 $== f0 i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forall (z : A) (f0g : z $-> y),
(foralli : I, ?cat_pr i $o f0 $== ?cat_pr i $o g) -> f0 $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
foralli : I, y $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod i: I
y $-> x i
exact (cat_pr i $o f).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forallz : A, (foralli : I, z $-> x i) -> z $-> y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A D: foralli : I, z $-> x i
z $-> y
exact (f^-1$ $o cat_prod_corec _ D).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forall (z : A) (f0 : foralli : I, z $-> x i) (i : I),
(funi0 : I => cat_pr i0 $o f) i $o
(fun (z0 : A) (D : foralli0 : I, z0 $-> x i0) =>
f^-1$ $o cat_prod_corec cat_prod D) z f0 $==
f0 i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A D: foralli0 : I, z $-> x i0 i: I
cat_pr i $o f $o (f^-1$ $o cat_prod_corec cat_prod D) $== D i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A D: foralli0 : I, z $-> x i0 i: I
cat_pr i $o f $o (f^-1$ $o cat_prod_corec cat_prod D) $==
cat_pr i $o cat_prod_corec cat_prod D
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A D: foralli0 : I, z $-> x i0 i: I
cat_pr i $o (f $o (f^-1$ $o cat_prod_corec cat_prod D)) $==
cat_pr i $o cat_prod_corec cat_prod D
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A D: foralli0 : I, z $-> x i0 i: I
f $o (f^-1$ $o cat_prod_corec cat_prod D) $== cat_prod_corec cat_prod D
apply compose_h_Vh.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod
forall (z : A) (f0g : z $-> y),
(foralli : I,
(funi0 : I => cat_pr i0 $o f) i $o f0 $==
(funi0 : I => cat_pr i0 $o f) i $o g) ->
f0 $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli : I, cat_pr i $o f $o g $== cat_pr i $o f $o g'
g $== g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli : I, cat_pr i $o f $o g $== cat_pr i $o f $o g'
f $o g $== f $o g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli : I, cat_pr i $o f $o g $== cat_pr i $o f $o g'
foralli : ?Goal, cat_pr i $o (f $o g) $== cat_pr i $o (f $o g')
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli0 : I, cat_pr i0 $o f $o g $== cat_pr i0 $o f $o g' i: ?Goal
cat_pr i $o (f $o g) $== cat_pr i $o (f $o g')
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli0 : I, cat_pr i0 $o f $o g $== cat_pr i0 $o f $o g' i: ?Goal
cat_pr i $o f $o g $== cat_pr i $o (f $o g')
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A he: HasEquivs A I: Type x: I -> A cat_prod: A IsProduct0: IsProduct x cat_prod y: A f: y $<~> cat_prod z: A g, g': z $-> y e: foralli0 : I, cat_pr i0 $o f $o g $== cat_pr i0 $o f $o g' i: ?Goal
cat_pr i $o f $o g $== cat_pr i $o f $o g'
exact (e i).Defined.(** The induced projection is given by the equivalence. *)Definitioncat_pr_comp (i : I)
: cat_pr i $== cat_pr i $o f
:= Id _.(** The induced corecursion is given by the equivalence. *)Definitioncat_prod_corec_comp {z : A} (D : foralli, z $-> x i)
: f $o cat_prod_corec (cat_isprod:=cat_prod_equiv_prod) y D $== cat_prod_corec _ D
:= compose_h_Vh _ _.EndInducedFromEquiv.(** *** Diagonal map into the product of a constant family *)Definitioncat_prod_diag {A : Type} {I : Type} (x : A) (cat_prod : A)
`{IsProduct _ I (fun_ => x) cat_prod}
: x $-> cat_prod
:= cat_prod_corec cat_prod (fun_ => Id x).(** *** Uniqueness of products *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
prod_x $<~> prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
prod_x $<~> prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
yon1_0gpd prod_x $<~> yon1_0gpd prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
NatEquiv (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z))
(yon1_0gpd prod_y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
foralla : A^op,
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a $<~>
(funz : A^op => prod_0gpd J (funi : J => yon_0gpd (y i) z)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
foralla : A^op,
(funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) a $<~>
(funz : A^op => prod_0gpd J (funi : J => yon_0gpd (y i) z)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i) z: A^op
(funz0 : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z0)) z $<~>
(funz0 : A^op => prod_0gpd J (funi : J => yon_0gpd (y i) z0)) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i) z: A^op
foralli : I, yon_0gpd (x i) z $<~> yon_0gpd (y (ie i)) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli0 : I, x i0 $<~> y (ie i0) z: A^op i: I
yon_0gpd (x i) z $<~> yon_0gpd (y (ie i)) z
exact (natequiv_yon_equiv_0gpd (e i) _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i)
forall (aa' : A^op) (f : a $-> a'),
(funa0 : A^op =>
cate_fun
((funz : A^op =>
cate_prod_0gpd ie (funi : I => yon_0gpd (x i) z)
(funi : J => yon_0gpd (y i) z)
(funi : I => natequiv_yon_equiv_0gpd (e i) z))
a0))
a' $o
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f $==
fmap (funz : A^op => prod_0gpd J (funi : J => yon_0gpd (y i) z)) f $o
(funa0 : A^op =>
cate_fun
((funz : A^op =>
cate_prod_0gpd ie (funi : I => yon_0gpd (x i) z)
(funi : J => yon_0gpd (y i) z)
(funi : I => natequiv_yon_equiv_0gpd (e i) z))
a0))
a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: zerogpd_graph (prod_0gpd I (funi : I => yon_0gpd (x i) a)) j: J
(cate_prod_0gpd ie (funi : I => yon_0gpd (x i) b)
(funi : J => yon_0gpd (y i) b)
(funi : I => natequiv_yon_equiv_0gpd (e i) b) $o
fmap (funz : A^op => prod_0gpd I (funi : I => yon_0gpd (x i) z)) f) g j $->
(fmap (funz : A^op => prod_0gpd J (funi : J => yon_0gpd (y i) z)) f $o
cate_prod_0gpd ie (funi : I => yon_0gpd (x i) a)
(funi : J => yon_0gpd (y i) a)
(funi : I => natequiv_yon_equiv_0gpd (e i) a))
g j
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: zerogpd_graph (prod_0gpd I (funi : I => yon_0gpd (x i) a)) j: J
transport (funx0 : J => b $-> y x0) (eisretr ie j)
(cate_fun' (x (ie^-1 j)) (y (ie (ie^-1 j))) (e (ie^-1 j)) $o
(g (ie^-1 j) $o f)) $->
transport (funx0 : J => a $-> y x0) (eisretr ie j)
(cate_fun' (x (ie^-1 j)) (y (ie (ie^-1 j))) (e (ie^-1 j)) $o g (ie^-1 j)) $o
f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A I, J: Type ie: I <~> J x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: zerogpd_graph (prod_0gpd I (funi : I => yon_0gpd (x i) a)) j: J
transport (funx0 : J => b $-> y x0) 1
(cate_fun' (x (ie^-1 j)) (y (ie (ie^-1 j))) (e (ie^-1 j)) $o
(g (ie^-1 j) $o f)) $->
transport (funx0 : J => a $-> y x0) 1
(cate_fun' (x (ie^-1 j)) (y (ie (ie^-1 j))) (e (ie^-1 j)) $o g (ie^-1 j)) $o
f
exact (cat_assoc_opp _ _ _).Defined.(** [I]-indexed products are unique. *)Definitioncat_prod_unique {A : Type} `{HasEquivs A} {I : Type}
(x : I -> A) (prod_x : A) `{!IsProduct x prod_x}
(y : I -> A) (prod_y : A) `{!IsProduct y prod_y}
(e : foralli : I, x i $<~> y i)
: prod_x $<~> prod_y
:= cate_cat_prod 1 x _ y _ e.(** *** Existence of products *)ClassHasProducts (A : Type) `{Is1Cat A} (I : Type)
:= has_products :: forallx : I -> A, Product x.Arguments has_products {A _ _ _ _ I hasproducts} x : rename.ClassHasAllProducts (A : Type) `{Is1Cat A}
:= has_all_products :: forallI : Type, HasProducts A I.(** *** Product functor *)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
Is0Functor (funx : I -> A => cat_prod x)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
Is0Functor (funx : I -> A => cat_prod x)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
forallab : I -> A, (a $-> b) -> cat_prod a $-> cat_prod b
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y: I -> A f: x $-> y
cat_prod x $-> cat_prod y
exact (cat_prod_corec _ (funi => f i $o cat_pr i)).Defined.
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
Is1Functor (funx : I -> A => cat_prod x)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
Is1Functor (funx : I -> A => cat_prod x)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
forall (ab : I -> A) (fg : a $-> b),
f $== g ->
fmap (funx : I -> A => cat_prod x) f $==
fmap (funx : I -> A => cat_prod x) g
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
foralla : I -> A,
fmap (funx : I -> A => cat_prod x) (Id a) $== Id (cat_prod a)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
forall (abc : I -> A) (f : a $-> b) (g : b $-> c),
fmap (funx : I -> A => cat_prod x) (g $o f) $==
fmap (funx : I -> A => cat_prod x) g $o
fmap (funx : I -> A => cat_prod x) f
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
forall (ab : I -> A) (fg : a $-> b),
f $== g ->
fmap (funx : I -> A => cat_prod x) f $==
fmap (funx : I -> A => cat_prod x) g
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y: I -> A f, g: x $-> y p: f $== g
fmap (funx0 : I -> A => cat_prod x0) f $==
fmap (funx0 : I -> A => cat_prod x0) g
exact (cat_prod_corec_eta _ (funi => p i $@R cat_pr i)).
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
foralla : I -> A,
fmap (funx : I -> A => cat_prod x) (Id a) $== Id (cat_prod a)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x: I -> A
fmap (funx0 : I -> A => cat_prod x0) (Id x) $== Id (cat_prod x)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x: I -> A
fmap (funx0 : I -> A => cat_prod x0) (Id x) $==
cat_prod_corec (cat_prod x) (funi : ?Goal1 => cat_pr i $o Id (cat_prod x))
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I
forall (abc : I -> A) (f : a $-> b) (g : b $-> c),
fmap (funx : I -> A => cat_prod x) (g $o f) $==
fmap (funx : I -> A => cat_prod x) g $o
fmap (funx : I -> A => cat_prod x) f
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z
fmap (funx0 : I -> A => cat_prod x0) (g $o f) $==
fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z
foralli : ?Goal,
cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) (g $o f) $==
cat_pr i $o
(fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: ?Goal
cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) (g $o f) $==
cat_pr i $o
(fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
(g $o f) i $o cat_pr i $==
cat_pr i $o
(fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f)
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
(g $o f) i $o cat_pr i $==
cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) g $o
fmap (funx0 : I -> A => cat_prod x0) f $== (g $o f) i $o cat_pr i
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
g i $o cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) f $==
(g $o f) i $o cat_pr i
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
g i $o (cat_pr i $o fmap (funx0 : I -> A => cat_prod x0) f) $==
(g $o f) i $o cat_pr i
A, I: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts A I x, y, z: I -> A f: x $-> y g: y $-> z i: I
g i $o (f i $o cat_pr i) $== (g $o f) i $o cat_pr i
napply cat_assoc_opp.Defined.(** *** An empty product is terminal *)
A: Type x: Empty -> A prod_empty: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A isprod: IsProduct x prod_empty
IsTerminal prod_empty
A: Type x: Empty -> A prod_empty: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A isprod: IsProduct x prod_empty
IsTerminal prod_empty
A: Type x: Empty -> A prod_empty: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A isprod: IsProduct x prod_empty a: A
{f : a $-> prod_empty & forallg : a $-> prod_empty, f $== g}
srefine (cat_prod_corec _ _; funf => cat_prod_pr_eta _ _); intros [].Defined.(** ** Binary products *)ClassIsBinaryProduct {A : Type} `{Is1Cat A} (x y : A) (cat_binprod : A)
:= is_binary_product :: IsProduct (Bool_rec _ x y) (cat_binprod).ClassBinaryProduct {A : Type} `{Is1Cat A} (x y : A)
:= binary_product :: Product (Bool_rec _ x y).Instanceisbinaryproduct_binaryproduct {A : Type} `{Is1Cat A}
(x y : A) `{!BinaryProduct x y}
: IsBinaryProduct x y (cat_prod _)
:= cat_isprod _.(** A category with binary products is a category with a binary product for each pair of objects. *)ClassHasBinaryProducts (A : Type) `{Is1Cat A}
:= has_binary_products :: forallxy : A, BinaryProduct x y.Instancehasbinaryproducts_hasproductsbool {A : Type} `{HasProducts A Bool}
: HasBinaryProducts A
:= funxy => has_products (Bool_rec _ x y).SectionBinaryProducts.Context {A : Type} `{Is1Cat A} {x y : A}
(cat_binprod : A) {isbinprod : IsBinaryProduct x y cat_binprod}.Definitioncat_pr1 : cat_binprod $-> x := cat_pr (x:=Bool_rec _ x y) true.Definitioncat_pr2 : cat_binprod $-> y := cat_pr (x:=Bool_rec _ x y) false.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
foralli : Bool, z $-> Bool_rec A x y i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> Bool_rec A x y true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> Bool_rec A x y false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> Bool_rec A x y true
exact f.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> x g: z $-> y
z $-> Bool_rec A x y false
exact g.Defined.Definitioncat_binprod_beta_pr1 {z : A} (f : z $-> x) (g : z $-> y)
: cat_pr1 $o cat_binprod_corec f g $== f
:= cat_prod_beta _ _ true.Definitioncat_binprod_beta_pr2 {z : A} (f : z $-> x) (g : z $-> y)
: cat_pr2 $o cat_binprod_corec f g $== g
:= cat_prod_beta _ _ false.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_binprod_corec (cat_pr1 $o f) (cat_pr2 $o f) $== f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_binprod_corec (cat_pr1 $o f) (cat_pr2 $o f) $== f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_prod_corec cat_binprod
(funi : Bool =>
match i as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
foralli : Bool,
cat_pr i $o
cat_prod_corec cat_binprod
(funi0 : Bool =>
match i0 as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
cat_pr i $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_pr true $o
cat_prod_corec cat_binprod
(funi : Bool =>
match i as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
cat_pr true $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_pr false $o
cat_prod_corec cat_binprod
(funi : Bool =>
match i as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
cat_pr false $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_pr true $o
cat_prod_corec cat_binprod
(funi : Bool =>
match i as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
cat_pr true $o f
exact (cat_binprod_beta_pr1 _ _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f: z $-> cat_binprod
cat_pr false $o
cat_prod_corec cat_binprod
(funi : Bool =>
match i as b return (z $-> Bool_rec A x y b) with
| true => cat_pr1 $o f
| false => cat_pr2 $o f
end) $==
cat_pr false $o f
exact (cat_binprod_beta_pr2 _ _).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
foralli : Bool, cat_pr i $o f $== cat_pr i $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
cat_pr true $o f $== cat_pr true $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
cat_pr false $o f $== cat_pr false $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
cat_pr true $o f $== cat_pr true $o g
exact p.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, g: z $-> cat_binprod p: cat_pr1 $o f $== cat_pr1 $o g q: cat_pr2 $o f $== cat_pr2 $o g
cat_pr false $o f $== cat_pr false $o g
exact q.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y
f $== f' -> g $== g' -> cat_binprod_corec f g $== cat_binprod_corec f' g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y
f $== f' -> g $== g' -> cat_binprod_corec f g $== cat_binprod_corec f' g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
cat_binprod_corec f g $== cat_binprod_corec f' g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
foralli : Bool,
match i as b return (z $-> Bool_rec A x y b) with
| true => f
| false => g
end $==
match i as b return (z $-> Bool_rec A x y b) with
| true => f'
| false => g'
end
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
f $== f'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
g $== g'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
f $== f'
exact p.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A isbinprod: IsBinaryProduct x y cat_binprod z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
g $== g'
exact q.Defined.EndBinaryProducts.SectionBinaryProductConstructors.Context {A : Type} `{Is1Cat A} {x y : A}
(cat_binprod : A) (cat_pr1 : cat_binprod $-> x) (cat_pr2 : cat_binprod $-> y)
(cat_binprod_corec : forallz : A, z $-> x -> z $-> y -> z $-> cat_binprod)
(cat_binprod_beta_pr1 : forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f)
(cat_binprod_beta_pr2 : forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g)
(cat_binprod_eta_pr : forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g).(** A convenience wrapper for building [IsBinaryProduct]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
IsBinaryProduct x y cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
IsBinaryProduct x y cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
foralli : Bool, cat_binprod $-> Bool_rec A x y i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forallz : A, (foralli : Bool, z $-> Bool_rec A x y i) -> z $-> cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forall (z : A) (f : foralli : Bool, z $-> Bool_rec A x y i)
(i : Bool), ?cat_pr i $o ?cat_prod_corec z f $== f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forall (z : A) (fg : z $-> cat_binprod),
(foralli : Bool, ?cat_pr i $o f $== ?cat_pr i $o g) -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
foralli : Bool, cat_binprod $-> Bool_rec A x y i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
cat_binprod $-> Bool_rec A x y true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
cat_binprod $-> Bool_rec A x y false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
cat_binprod $-> Bool_rec A x y true
exact cat_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
cat_binprod $-> Bool_rec A x y false
exact cat_pr2.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forallz : A, (foralli : Bool, z $-> Bool_rec A x y i) -> z $-> cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
z $-> cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
z $-> x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
z $-> y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
z $-> x
exact (f true).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
z $-> y
exact (f false).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forall (z : A) (f : foralli : Bool, z $-> Bool_rec A x y i)
(i : Bool),
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
(fun (z0 : A) (f0 : foralli0 : Bool, z0 $-> Bool_rec A x y i0) =>
cat_binprod_corec z0 (f0 true) (f0 false)) z f $==
f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
cat_pr1 $o cat_binprod_corec z (f true) (f false) $== f true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
cat_pr2 $o cat_binprod_corec z (f true) (f false) $== f false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
cat_pr1 $o cat_binprod_corec z (f true) (f false) $== f true
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g $== g cat_binprod_eta_pr: forall (z0 : A) (f0g : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g -> cat_pr2 $o f0 $== cat_pr2 $o g -> f0 $== g z: A f: foralli : Bool, z $-> Bool_rec A x y i
cat_pr2 $o cat_binprod_corec z (f true) (f false) $== f false
napply cat_binprod_beta_pr2.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz : A, (z $-> x) -> (z $-> y) -> z $-> cat_binprod cat_binprod_beta_pr1: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr1 $o cat_binprod_corec z f g $== f cat_binprod_beta_pr2: forall (z : A) (f : z $-> x) (g : z $-> y),
cat_pr2 $o cat_binprod_corec z f g $== g cat_binprod_eta_pr: forall (z : A) (fg : z $-> cat_binprod),
cat_pr1 $o f $== cat_pr1 $o g -> cat_pr2 $o f $== cat_pr2 $o g -> f $== g
forall (z : A) (fg : z $-> cat_binprod),
(foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g) ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g0 $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g0 $== g0 cat_binprod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g0 ->
cat_pr2 $o f0 $== cat_pr2 $o g0 -> f0 $== g0 z: A f, g: z $-> cat_binprod p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g0 $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g0 $== g0 cat_binprod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g0 ->
cat_pr2 $o f0 $== cat_pr2 $o g0 -> f0 $== g0 z: A f, g: z $-> cat_binprod p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g
cat_pr1 $o f $== cat_pr1 $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g0 $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g0 $== g0 cat_binprod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g0 ->
cat_pr2 $o f0 $== cat_pr2 $o g0 -> f0 $== g0 z: A f, g: z $-> cat_binprod p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g
cat_pr2 $o f $== cat_pr2 $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g0 $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g0 $== g0 cat_binprod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g0 ->
cat_pr2 $o f0 $== cat_pr2 $o g0 -> f0 $== g0 z: A f, g: z $-> cat_binprod p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g
cat_pr1 $o f $== cat_pr1 $o g
exact (p true).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y, cat_binprod: A cat_pr1: cat_binprod $-> x cat_pr2: cat_binprod $-> y cat_binprod_corec: forallz0 : A, (z0 $-> x) -> (z0 $-> y) -> z0 $-> cat_binprod cat_binprod_beta_pr1: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr1 $o cat_binprod_corec z0 f0 g0 $== f0 cat_binprod_beta_pr2: forall (z0 : A) (f0 : z0 $-> x) (g0 : z0 $-> y),
cat_pr2 $o cat_binprod_corec z0 f0 g0 $== g0 cat_binprod_eta_pr: forall (z0 : A) (f0g0 : z0 $-> cat_binprod),
cat_pr1 $o f0 $== cat_pr1 $o g0 ->
cat_pr2 $o f0 $== cat_pr2 $o g0 -> f0 $== g0 z: A f, g: z $-> cat_binprod p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod $-> Bool_rec A x y b) with
| true => cat_pr1
| false => cat_pr2
end) i $o
g
cat_pr2 $o f $== cat_pr2 $o g
exact (p false).Defined.(** A convenience wrapper for building binary products. *)DefinitionBuild_BinaryProduct : BinaryProduct x y
:= Build_Product' _ cat_binprod Build_IsBinaryProduct.EndBinaryProductConstructors.Definitioncat_binprod {A: Type} `{HasBinaryProducts A} (x y : A) : A
:= cat_prod (Bool_rec _ x y).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z)
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g ->
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g ->
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z)
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g ->
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g ->
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g
exact p.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr1 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o f) $==
cat_pr1 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr2 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o f) $==
cat_pr2 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr1 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o f) $==
cat_pr1 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o g q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o g
cat_pr2 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o f) $==
cat_pr2 (cat_binprod y z) $o (cat_pr2 (cat_binprod x (cat_binprod y z)) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g ->
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g ->
cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g ->
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g ->
cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr1 (cat_binprod x y) $o (cat_pr1 (cat_binprod (cat_binprod x y) z) $o f) $==
cat_pr1 (cat_binprod x y) $o (cat_pr1 (cat_binprod (cat_binprod x y) z) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr2 (cat_binprod x y) $o (cat_pr1 (cat_binprod (cat_binprod x y) z) $o f) $==
cat_pr2 (cat_binprod x y) $o (cat_pr1 (cat_binprod (cat_binprod x y) z) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr1 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr2 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr1 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
exact p.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g q: cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o g r: cat_pr2 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod (cat_binprod x y) z) $o g
cat_pr2 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o f $==
cat_pr2 (cat_binprod x y) $o cat_pr1 (cat_binprod (cat_binprod x y) z) $o g
exact q.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z)
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) ->
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) ->
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) ->
f $== Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z)
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) ->
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) ->
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) ->
f $== Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
f $== Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
exact (p $@ (cat_idr _)^$).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
exact (q $@ (cat_idr _)^$).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: cat_binprod x (cat_binprod y z) $-> cat_binprod x (cat_binprod y z) p: cat_pr1 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_binprod x (cat_binprod y z)) q: cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) r: cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o f $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o
Id (cat_binprod x (cat_binprod y z))
exact (r $@ (cat_idr _)^$).Defined.(** From binary products, all [Bool]-shaped products can be constructed. This should not be an instance to avoid a cycle with [hasbinaryproducts_hasproductsbool]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
HasProducts A Bool
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
HasProducts A Bool
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
Product x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
foralli : Bool, ?cat_prod $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forallz : A, (foralli : Bool, z $-> x i) -> z $-> ?cat_prod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forall (z : A) (f : foralli : Bool, z $-> x i) (i : Bool),
?cat_pr i $o ?cat_prod_corec z f $== f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forall (z : A) (fg : z $-> ?cat_prod),
(foralli : Bool, ?cat_pr i $o f $== ?cat_pr i $o g) -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
A
exact (cat_binprod (x true) (x false)).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
foralli : Bool, cat_binprod (x true) (x false) $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
cat_binprod (x true) (x false) $-> x true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
cat_binprod (x true) (x false) $-> x false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
cat_binprod (x true) (x false) $-> x true
exact (cat_pr1 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
cat_binprod (x true) (x false) $-> x false
exact (cat_pr2 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forallz : A,
(foralli : Bool, z $-> x i) -> z $-> cat_binprod (x true) (x false)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
z $-> cat_binprod (x true) (x false)
exact (cat_binprod_corec _ (f true) (f false)).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forall (z : A) (f : foralli : Bool, z $-> x i) (i : Bool),
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
(fun (z0 : A) (f0 : foralli0 : Bool, z0 $-> x i0) =>
cat_binprod_corec (cat_binprod (x true) (x false)) (f0 true) (f0 false)) z f $==
f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A
forall (z : A) (fg : z $-> cat_binprod (x true) (x false)),
(foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g) ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g
cat_pr1 (cat_binprod (x true) (x false)) $o f $==
cat_pr1 (cat_binprod (x true) (x false)) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g
cat_pr2 (cat_binprod (x true) (x false)) $o f $==
cat_pr2 (cat_binprod (x true) (x false)) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g
cat_pr1 (cat_binprod (x true) (x false)) $o f $==
cat_pr1 (cat_binprod (x true) (x false)) $o g
exact (p true).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
f $==
(funi0 : Bool =>
match i0 as b return (cat_binprod (x true) (x false) $-> x b) with
| true => cat_pr1 (cat_binprod (x true) (x false))
| false => cat_pr2 (cat_binprod (x true) (x false))
end) i $o
g
cat_pr2 (cat_binprod (x true) (x false)) $o f $==
cat_pr2 (cat_binprod (x true) (x false)) $o g
exact (p false).Defined.(** *** Operations on indexed products *)(** We can take the disjoint union of the index set of an indexed product if we have all binary products. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
Product (sum_ind (fun_ : I + J => A) x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
Product (sum_ind (fun_ : I + J => A) x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
foralli : I + J, ?cat_prod $-> sum_ind (fun_ : I + J => A) x y i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forallz : A,
(foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i) ->
z $-> ?cat_prod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forall (z : A)
(f : foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i)
(i : I + J), ?cat_pr i $o ?cat_prod_corec z f $== f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forall (z : A) (fg : z $-> ?cat_prod),
(foralli : I + J, ?cat_pr i $o f $== ?cat_pr i $o g) -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
A
exact (cat_binprod prod_x prod_y).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
foralli : I + J,
cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y i: I
cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y (inl i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y j: J
cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y (inr j)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y i: I
cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y (inl i)
exact (cat_pr i $o cat_pr1 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y j: J
cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y (inr j)
exact (cat_pr j $o cat_pr2 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forallz : A,
(foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i) ->
z $-> cat_binprod prod_x prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_binprod prod_x prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
z $-> prod_x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
z $-> prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
z $-> prod_x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
foralli : I, z $-> x i
exact (f o inl).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
z $-> prod_y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i
foralli : J, z $-> y i
exact (f o inr).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forall (z : A)
(f : foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i)
(i : I + J),
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
(fun (z0 : A)
(f0 : foralli0 : I + J, z0 $-> sum_ind (fun_ : I + J => A) x y i0) =>
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (f0 o inl)) (cat_prod_corec prod_y (f0 o inr)))
z f $==
f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli0 : I + J, z $-> sum_ind (fun_ : I + J => A) x y i0 i: I
cat_pr i $o cat_pr1 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0))) $==
f (inl i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i j: J
cat_pr j $o cat_pr2 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0))) $==
f (inr j)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli0 : I + J, z $-> sum_ind (fun_ : I + J => A) x y i0 i: I
cat_pr i $o cat_pr1 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0))) $==
f (inl i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli0 : I + J, z $-> sum_ind (fun_ : I + J => A) x y i0 i: I
cat_pr i $o
(cat_pr1 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0)))) $==
f (inl i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli0 : I + J, z $-> sum_ind (fun_ : I + J => A) x y i0 i: I
cat_pr i $o cat_prod_corec prod_x (funx0 : I => f (inl x0)) $== f (inl i)
tapply (cat_prod_beta prod_x).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i j: J
cat_pr j $o cat_pr2 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0))) $==
f (inr j)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i j: J
cat_pr j $o
(cat_pr2 (cat_binprod prod_x prod_y) $o
cat_binprod_corec (cat_binprod prod_x prod_y)
(cat_prod_corec prod_x (funx0 : I => f (inl x0)))
(cat_prod_corec prod_y (funx0 : J => f (inr x0)))) $==
f (inr j)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f: foralli : I + J, z $-> sum_ind (fun_ : I + J => A) x y i j: J
cat_pr j $o cat_prod_corec prod_y (funx0 : J => f (inr x0)) $== f (inr j)
tapply (cat_prod_beta prod_y).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y
forall (z : A) (fg : z $-> cat_binprod prod_x prod_y),
(foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g) ->
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
cat_pr1 (cat_binprod prod_x prod_y) $o f $==
cat_pr1 (cat_binprod prod_x prod_y) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
cat_pr2 (cat_binprod prod_x prod_y) $o f $==
cat_pr2 (cat_binprod prod_x prod_y) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
cat_pr1 (cat_binprod prod_x prod_y) $o f $==
cat_pr1 (cat_binprod prod_x prod_y) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
foralli : I,
cat_pr i $o (cat_pr1 (cat_binprod prod_x prod_y) $o f) $==
cat_pr i $o (cat_pr1 (cat_binprod prod_x prod_y) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli0 : I + J,
(funi1 : I + J =>
match
i1 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i2 =>
(funi3 : I => cat_pr i3 $o cat_pr1 (cat_binprod prod_x prod_y)) i2
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i0 $o
f $==
(funi1 : I + J =>
match
i1 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i2 =>
(funi3 : I => cat_pr i3 $o cat_pr1 (cat_binprod prod_x prod_y)) i2
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i0 $o
g i: I
cat_pr i $o (cat_pr1 (cat_binprod prod_x prod_y) $o f) $==
cat_pr i $o (cat_pr1 (cat_binprod prod_x prod_y) $o g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
cat_pr2 (cat_binprod prod_x prod_y) $o f $==
cat_pr2 (cat_binprod prod_x prod_y) $o g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j =>
(funj0 : J => cat_pr j0 $o cat_pr2 (cat_binprod prod_x prod_y)) j
end) i $o
g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A I, J: Type x: I -> A prod_x: A IsProduct0: IsProduct x prod_x y: J -> A prod_y: A IsProduct1: IsProduct y prod_y z: A f, g: z $-> cat_binprod prod_x prod_y r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j0 =>
(funj1 : J => cat_pr j1 $o cat_pr2 (cat_binprod prod_x prod_y)) j0
end) i $o
f $==
(funi0 : I + J =>
match
i0 as s
return (cat_binprod prod_x prod_y $-> sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1 (cat_binprod prod_x prod_y)) i1
| inr j0 =>
(funj1 : J => cat_pr j1 $o cat_pr2 (cat_binprod prod_x prod_y)) j0
end) i $o
g j: J
exact ((cat_assoc _ _ _)^$ $@ r (inr j) $@ cat_assoc _ _ _).Defined.(** *** Binary product functor *)(** We prove bifunctoriality of [cat_binprod : A -> A -> A] by factoring it as [cat_prod Bool o Bool_rec A]. First, we prove that [Bool_rec A : A -> A -> (Bool -> A)] is a bifunctor. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is0Bifunctor (Bool_rec A)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is0Bifunctor (Bool_rec A)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is01Cat A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is01Cat A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is0Functor (uncurry (Bool_rec A))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is0Functor (uncurry (Bool_rec A))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
forallab : A * A,
(a $-> b) -> uncurry (Bool_rec A) a $-> uncurry (Bool_rec A) b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, a', b': A f: fst (a, b) $-> fst (a', b') g: snd (a, b) $-> snd (a', b')
uncurry (Bool_rec A) (a, b) true $-> uncurry (Bool_rec A) (a', b') true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, a', b': A f: fst (a, b) $-> fst (a', b') g: snd (a, b) $-> snd (a', b')
uncurry (Bool_rec A) (a, b) false $-> uncurry (Bool_rec A) (a', b') false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, a', b': A f: fst (a, b) $-> fst (a', b') g: snd (a, b) $-> snd (a', b')
uncurry (Bool_rec A) (a, b) true $-> uncurry (Bool_rec A) (a', b') true
exact f.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, a', b': A f: fst (a, b) $-> fst (a', b') g: snd (a, b) $-> snd (a', b')
uncurry (Bool_rec A) (a, b) false $-> uncurry (Bool_rec A) (a', b') false
exact g.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is1Bifunctor (Bool_rec A)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is1Bifunctor (Bool_rec A)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
Is1Functor (uncurry (Bool_rec A))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
forall (ab : A * A) (fg : a $-> b),
f $== g -> fmap (uncurry (Bool_rec A)) f $== fmap (uncurry (Bool_rec A)) g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
foralla : A * A,
fmap (uncurry (Bool_rec A)) (Id a) $== Id (uncurry (Bool_rec A) a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
forall (abc : A * A) (f : a $-> b) (g : b $-> c),
fmap (uncurry (Bool_rec A)) (g $o f) $==
fmap (uncurry (Bool_rec A)) g $o fmap (uncurry (Bool_rec A)) f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
forall (ab : A * A) (fg : a $-> b),
f $== g -> fmap (uncurry (Bool_rec A)) f $== fmap (uncurry (Bool_rec A)) g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A a, b, a', b': A f: fst (a, b) $-> fst (a', b') g: snd (a, b) $-> snd (a', b') f': fst (a, b) $-> fst (a', b') g': snd (a, b) $-> snd (a', b') p: fst (f, g) $-> fst (f', g') q: snd (f, g) $-> snd (f', g')
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
foralla : A * A,
fmap (uncurry (Bool_rec A)) (Id a) $== Id (uncurry (Bool_rec A) a)
intros [a b] [ | ]; reflexivity.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A
forall (abc : A * A) (f : a $-> b) (g : b $-> c),
fmap (uncurry (Bool_rec A)) (g $o f) $==
fmap (uncurry (Bool_rec A)) g $o fmap (uncurry (Bool_rec A)) f
intros [a b] [a' b'] [a'' b''] [f f'] [g g'] [ | ]; reflexivity.Defined.(** As a special case of the product functor, restriction along [Bool_rec A] yields bifunctoriality of [cat_binprod]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
Is0Bifunctor cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
Is0Bifunctor cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A p:= has_products: forallx : Bool -> A, Product x
Is0Bifunctor cat_binprod
exact (is0bifunctor_postcompose
(Bool_rec A) (funx => cat_prod x (product:=p x))).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
Is1Bifunctor cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A
Is1Bifunctor cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A p:= has_products: forallx : Bool -> A, Product x
Is1Bifunctor cat_binprod
exact (is1bifunctor_postcompose
(Bool_rec A) (funx => cat_prod x (product:=p x))).Defined.(** [cat_binprod_corec] is also functorial in each morphism. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A g: z $-> y
Is0Functor
(funf : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A g: z $-> y
Is0Functor
(funf : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A g: z $-> y
forallab : z $-> x,
(a $-> b) ->
(funf : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g) a $->
(funf : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g) b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A g: z $-> y f, f': z $-> x p: f $-> f'
(funf0 : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f0 g) f $->
(funf0 : z $-> x => cat_binprod_corec (cat_prod (Bool_rec A x y)) f0 g) f'
by napply cat_binprod_corec_eta.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: z $-> x
Is0Functor
(fung : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: z $-> x
Is0Functor
(fung : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: z $-> x
forallab : z $-> y,
(a $-> b) ->
(fung : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g) a $->
(fung : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g) b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y, z: A f: z $-> x g, h: z $-> y p: g $-> h
(fung0 : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g0) g $->
(fung0 : z $-> y => cat_binprod_corec (cat_prod (Bool_rec A x y)) f g0) h
by napply cat_binprod_corec_eta.Defined.Definitioncat_pr1_fmap01_binprod {A : Type} `{HasBinaryProducts A}
(a : A) {x y : A} (g : x $-> y)
: cat_pr1 _ $o fmap01 cat_binprod a g $== cat_pr1 _
:= cat_binprod_beta_pr1 _ _ _ $@ cat_idl _.Definitioncat_pr1_fmap10_binprod {A : Type} `{HasBinaryProducts A}
{x y : A} (f : x $-> y) (a : A)
: cat_pr1 _ $o fmap10 cat_binprod f a $== f $o cat_pr1 _
:= cat_binprod_beta_pr1 _ _ _.Definitioncat_pr1_fmap11_binprod {A : Type} `{HasBinaryProducts A}
{w x y z : A} (f : w $-> y) (g : x $-> z)
: cat_pr1 _ $o fmap11 cat_binprod f g $== f $o cat_pr1 _
:= cat_binprod_beta_pr1 _ _ _.Definitioncat_pr2_fmap01_binprod {A : Type} `{HasBinaryProducts A}
(a : A) {x y : A} (g : x $-> y)
: cat_pr2 _ $o fmap01 cat_binprod a g $== g $o cat_pr2 _
:= cat_binprod_beta_pr2 _ _ _.Definitioncat_pr2_fmap10_binprod {A : Type} `{HasBinaryProducts A}
{x y : A} (f : x $-> y) (a : A)
: cat_pr2 _ $o fmap10 cat_binprod f a $== cat_pr2 _
:= cat_binprod_beta_pr2 _ _ _ $@ cat_idl _.Definitioncat_pr2_fmap11_binprod {A : Type} `{HasBinaryProducts A}
{w x y z : A} (f : w $-> y) (g : x $-> z)
: cat_pr2 _ $o fmap11 cat_binprod f g $== g $o cat_pr2 _
:= cat_binprod_beta_pr2 _ _ _.(** *** Lemmas about [cat_binprod_corec] *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h $==
cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h $==
cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 (cat_binprod z y) $o
(fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h) $==
cat_pr1 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 (cat_binprod z y) $o
(fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h) $==
cat_pr2 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 (cat_binprod z y) $o
(fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h) $==
cat_pr1 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 (cat_binprod z y) $o fmap01 cat_binprod z g $o
cat_binprod_corec (cat_binprod z x) f h $==
cat_pr1 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 (cat_binprod z y) $o fmap01 cat_binprod z g $== Id z $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
?Goal2 $o cat_binprod_corec (cat_binprod z x) f h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h) $->
?Goal0
1-3: rapply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 (cat_binprod z y) $o
(fmap01 cat_binprod z g $o cat_binprod_corec (cat_binprod z x) f h) $==
cat_pr2 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 (cat_binprod z y) $o fmap01 cat_binprod z g $o
cat_binprod_corec (cat_binprod z x) f h $==
cat_pr2 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 (cat_binprod z y) $o fmap01 cat_binprod z g $== ?Goal2 $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
?Goal1 $o cat_binprod_corec (cat_binprod z x) f h $== ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 (cat_binprod z y) $o cat_binprod_corec (cat_binprod z y) f (g $o h) $->
?Goal2 $o ?Goal3
1-3: rapply cat_binprod_beta_pr2.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h $==
cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h $==
cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 (cat_binprod y z) $o
(fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h) $==
cat_pr1 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 (cat_binprod y z) $o
(fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h) $==
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 (cat_binprod y z) $o
(fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h) $==
cat_pr1 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 (cat_binprod y z) $o fmap10 cat_binprod f z $o
cat_binprod_corec (cat_binprod x z) g h $==
cat_pr1 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 (cat_binprod y z) $o fmap10 cat_binprod f z $== ?Goal3 $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
?Goal2 $o cat_binprod_corec (cat_binprod x z) g h $== ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h $->
?Goal3 $o ?Goal4
1-3: napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 (cat_binprod y z) $o
(fmap10 cat_binprod f z $o cat_binprod_corec (cat_binprod x z) g h) $==
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 (cat_binprod y z) $o fmap10 cat_binprod f z $o
cat_binprod_corec (cat_binprod x z) g h $==
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 (cat_binprod y z) $o fmap10 cat_binprod f z $== Id z $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
?Goal1 $o cat_binprod_corec (cat_binprod x z) g h $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) (f $o g) h $->
?Goal
1-3: napply cat_binprod_beta_pr2.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i $==
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i $==
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 (cat_binprod y z) $o
(fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i) $==
cat_pr1 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 (cat_binprod y z) $o
(fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i) $==
cat_pr2 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 (cat_binprod y z) $o
(fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i) $==
cat_pr1 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 (cat_binprod y z) $o fmap11 cat_binprod f g $o
cat_binprod_corec (cat_binprod w x) h i $==
cat_pr1 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 (cat_binprod y z) $o fmap11 cat_binprod f g $== ?Goal3 $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
?Goal2 $o cat_binprod_corec (cat_binprod w x) h i $== ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i) $->
?Goal3 $o ?Goal4
1-3: napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 (cat_binprod y z) $o
(fmap11 cat_binprod f g $o cat_binprod_corec (cat_binprod w x) h i) $==
cat_pr2 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 (cat_binprod y z) $o fmap11 cat_binprod f g $o
cat_binprod_corec (cat_binprod w x) h i $==
cat_pr2 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 (cat_binprod y z) $o fmap11 cat_binprod f g $== ?Goal2 $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
?Goal1 $o cat_binprod_corec (cat_binprod w x) h i $== ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A hbp: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 (cat_binprod y z) $o
cat_binprod_corec (cat_binprod y z) (f $o h) (g $o i) $->
?Goal2 $o ?Goal3
1-3: rapply cat_binprod_beta_pr2.Defined.(** *** Diagonal *)(** Annoyingly this doesn't follow directly from the general diagonal since [Bool_rec _ x x] is not definitionally equal to [fun _ => x]. *)Definitioncat_binprod_diag {A : Type} `{Is1Cat A} (x : A)
(cat_binprod : A) `{isbinprod : !IsBinaryProduct x x cat_binprod}
: x $-> cat_binprod
:= cat_binprod_corec _ (Id _) (Id _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_binprod_diag y (cat_binprod y y) $o f $==
fmap11 cat_binprod f f $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_binprod_diag y (cat_binprod y y) $o f $==
fmap11 cat_binprod f f $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_binprod_diag y (cat_binprod y y) $o f $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
fmap11 cat_binprod f f $o cat_binprod_diag x (cat_binprod x x) $-> ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_binprod_diag y (cat_binprod y y) $o f $==
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr1 (cat_binprod y y) $o (cat_binprod_diag y (cat_binprod y y) $o f) $==
cat_pr1 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr2 (cat_binprod y y) $o (cat_binprod_diag y (cat_binprod y y) $o f) $==
cat_pr2 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr1 (cat_binprod y y) $o (cat_binprod_diag y (cat_binprod y y) $o f) $==
cat_pr1 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr1 (cat_binprod y y) $o cat_binprod_diag y (cat_binprod y y) $o f $==
cat_pr1 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr1 (cat_binprod y y) $o cat_binprod_diag y (cat_binprod y y) $== Id y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr1 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x) $->
f $o Id x
1,2: rapply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr2 (cat_binprod y y) $o (cat_binprod_diag y (cat_binprod y y) $o f) $==
cat_pr2 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr2 (cat_binprod y y) $o cat_binprod_diag y (cat_binprod y y) $o f $==
cat_pr2 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr2 (cat_binprod y y) $o cat_binprod_diag y (cat_binprod y y) $== Id y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x, y: A f: x $-> y
cat_pr2 (cat_binprod y y) $o
cat_binprod_corec (cat_binprod y y) (f $o Id x) (f $o Id x) $->
f $o Id x
1,2: rapply cat_binprod_beta_pr2.Defined.(** *** Symmetry of binary products *)SectionSymmetry.(** The requirement of having all binary products can be weakened further to having specific binary products, but it is not clear this is a useful generality. *)Context {A : Type} `{HasEquivs A} `{hbp : !HasBinaryProducts A}.Definitioncat_binprod_swap (xy : A) : cat_binprod x y $-> cat_binprod y x
:= cat_binprod_corec _ (cat_pr2 _) (cat_pr1 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_binprod_swap x y $o cat_binprod_swap y x $== Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_binprod_swap x y $o cat_binprod_swap y x $== Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_pr1 (cat_binprod y x) $o (cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr1 (cat_binprod y x) $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_pr2 (cat_binprod y x) $o (cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr2 (cat_binprod y x) $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_pr1 (cat_binprod y x) $o (cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr1 (cat_binprod y x) $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_pr1 (cat_binprod y x) $o cat_binprod_swap x y $o cat_binprod_swap y x $==
cat_pr1 (cat_binprod y x) $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y: A
cat_pr2 (cat_binprod x y) $o cat_binprod_swap y x $==
cat_pr1 (cat_binprod y x) $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g $==
cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g $==
cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 (cat_binprod c b) $o
(cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g) $==
cat_pr1 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 (cat_binprod c b) $o
(cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g) $==
cat_pr2 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 (cat_binprod c b) $o
(cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g) $==
cat_pr1 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 (cat_binprod c b) $o cat_binprod_swap b c $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
?Goal0 $o cat_binprod_corec (cat_binprod b c) f g $== ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 (cat_binprod b c) $o cat_binprod_corec (cat_binprod b c) f g $== g
napply cat_binprod_beta_pr2.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 (cat_binprod c b) $o
(cat_binprod_swap b c $o cat_binprod_corec (cat_binprod b c) f g) $==
cat_pr2 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 (cat_binprod c b) $o cat_binprod_swap b c $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
?Goal $o cat_binprod_corec (cat_binprod b c) f g $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 (cat_binprod c b) $o cat_binprod_corec (cat_binprod c b) g f $->
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 (cat_binprod b c) $o cat_binprod_corec (cat_binprod b c) f g $== f
napply cat_binprod_beta_pr1.Defined.Definitioncat_binprod_swap_nat {abcd : A} (f : a $-> c) (g : b $-> d)
: cat_binprod_swap c d $o fmap11 cat_binprod f g
$== fmap11 cat_binprod g f $o cat_binprod_swap a b
:= cat_binprod_swap_corec _ _ $@ (cat_binprod_fmap11_corec _ _ _ _)^$.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
SymmetricBraiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
SymmetricBraiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
Braiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallab : A,
?braiding_symmetricbraiding a b $o ?braiding_symmetricbraiding b a $==
Id (cat_binprod b a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
Braiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
Is1Natural (uncurry cat_binprod) (uncurry (flip cat_binprod))
((funa : A * A => (funxy : A => cat_binprod_swap x y) (fst a) (snd a))
:
uncurry cat_binprod $=> uncurry (flip cat_binprod))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forall (aa' : A * A) (f : a $-> a'),
(funa0 : A * A => (funxy : A => cat_binprod_swap x y) (fst a0) (snd a0))
a' $o
fmap (uncurry cat_binprod) f $==
fmap (uncurry (flip cat_binprod)) f $o
(funa0 : A * A => (funxy : A => cat_binprod_swap x y) (fst a0) (snd a0)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, b, c, d: A f: a $-> c g: b $-> d
cat_binprod_swap c d $o fmap (uncurry cat_binprod) (f, g) $==
fmap (uncurry (flip cat_binprod)) (f, g) $o cat_binprod_swap a b
exact(cat_binprod_swap_nat f g).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallab : A,
{|
trans_nattrans :=
(funa0 : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a0) (snd a0))
:
uncurry cat_binprod $=> uncurry (flip cat_binprod);
is1natural_nattrans :=
Build_Is1Natural
(funa0 : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a0) (snd a0))
(funa0 : A * A =>
(fun (a1b0 : A) (a' : A * A) =>
(fun (cd : A) (f0 : (a1, b0) $-> (c, d)) =>
(fun (f : fst (a1, b0) $-> fst (c, d))
(g : snd (a1, b0) $-> snd (c, d)) =>
cat_binprod_swap_nat f g) (fst f0) (snd f0))
(fst a') (snd a'))
(fst a0) (snd a0))
|} a b $o
{|
trans_nattrans :=
(funa0 : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a0) (snd a0))
:
uncurry cat_binprod $=> uncurry (flip cat_binprod);
is1natural_nattrans :=
Build_Is1Natural
(funa0 : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a0) (snd a0))
(funa0 : A * A =>
(fun (a1b0 : A) (a' : A * A) =>
(fun (cd : A) (f0 : (a1, b0) $-> (c, d)) =>
(fun (f : fst (a1, b0) $-> fst (c, d))
(g : snd (a1, b0) $-> snd (c, d)) =>
cat_binprod_swap_nat f g) (fst f0) (snd f0))
(fst a') (snd a'))
(fst a0) (snd a0))
|} b a $== Id (cat_binprod b a)
exact cat_binprod_swap_cat_binprod_swap.Defined.(** The swap map preserves the diagonal. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x) $==
cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x) $==
cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr1 (cat_binprod x x) $o
(cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x)) $==
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr2 (cat_binprod x x) $o
(cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x)) $==
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr1 (cat_binprod x x) $o
(cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x)) $==
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr1 (cat_binprod x x) $o cat_binprod_swap x x $== ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
?Goal2 $o cat_binprod_diag x (cat_binprod x x) $==
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x) $==
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x) $-> Id x
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr2 (cat_binprod x x) $o
(cat_binprod_swap x x $o cat_binprod_diag x (cat_binprod x x)) $==
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr2 (cat_binprod x x) $o cat_binprod_swap x x $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
?Goal $o cat_binprod_diag x (cat_binprod x x) $==
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr1 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x) $==
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x: A
cat_pr2 (cat_binprod x x) $o cat_binprod_diag x (cat_binprod x x) $-> Id x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> cat_binprod y (cat_binprod x z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> cat_binprod y (cat_binprod x z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> cat_binprod x z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> y
exact (cat_pr1 _ $o cat_pr2 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> cat_binprod x z
exact (fmap01 cat_binprod x (cat_pr2 _)).Defined.Definitioncat_binprod_pr1_twist (xyz : A)
: cat_pr1 _ $o cat_binprod_twist x y z $== cat_pr1 _ $o cat_pr2 _
:= cat_binprod_beta_pr1 _ _ _.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
(cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
fmap01 cat_binprod x (cat_pr2 (cat_binprod y z)) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
napply cat_pr1_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
(cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
fmap01 cat_binprod x (cat_pr2 (cat_binprod y z)) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
napply cat_pr2_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h)) $==
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h)) $==
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h)) $==
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
?Goal5 $o ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal4 $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
?Goal6
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal5 $o ?Goal6 $== ?Goal8
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h) $->
?Goal8
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod x (cat_binprod y z)) $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_prod (Bool_rec A y z)) $o ?Goal0 $== ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h) $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_binprod_corec (cat_binprod y z) g h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h) $->
?Goal0
1,2: napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h)) $==
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
cat_binprod_corec (cat_binprod y (cat_binprod x z)) g
(cat_binprod_corec (cat_binprod x z) f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod y (cat_binprod x z)) $o cat_binprod_twist x y z $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod x z) f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
fmap01 cat_binprod x (cat_pr2 (cat_binprod y z)) $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod x z) f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_corec (cat_binprod x z) f
(cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod x z) f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
f $== f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) g h $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 (cat_binprod y z) $o cat_binprod_corec (cat_binprod y z) g h $== h
napply cat_binprod_beta_pr2.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod_twist x y z $o cat_binprod_twist y x z $==
Id (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod_twist x y z $o cat_binprod_twist y x z $==
Id (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o cat_binprod_twist y x z $==
cat_pr1 (cat_binprod y (cat_binprod x z))
napply cat_binprod_pr1_pr2_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod x (cat_binprod y z)) $o cat_binprod_twist y x z $==
cat_pr1 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
napply cat_binprod_pr1_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z)) $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z)) $o cat_binprod_twist y x z $==
cat_pr2 (cat_prod (Bool_rec A x z)) $o
cat_pr2 (cat_binprod y (cat_binprod x z))
napply cat_binprod_pr2_pr2_twist.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $<~> cat_binprod y (cat_binprod x z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $<~> cat_binprod y (cat_binprod x z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod x (cat_binprod y z) $-> cat_binprod y (cat_binprod x z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod y (cat_binprod x z) $-> cat_binprod x (cat_binprod y z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
?f $o ?g $== Id (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
?g $o ?f $== Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod_twist x y z $o cat_binprod_twist y x z $==
Id (cat_binprod y (cat_binprod x z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_binprod_twist y x z $o cat_binprod_twist x y z $==
Id (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
(cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o
cat_pr2 (cat_binprod a' (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o
(cat_pr2 (cat_binprod a' (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 (cat_binprod a' (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o ?Goal0 $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o
(fmap11 cat_binprod g h $o cat_pr2 (cat_binprod a (cat_binprod b c))) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o fmap11 cat_binprod g h $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_prod (Bool_rec A b' c')) $o fmap11 cat_binprod g h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
?Goal0 $o cat_pr2 (cat_binprod a (cat_binprod b c)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 (cat_binprod b c) $o cat_pr2 (cat_binprod a (cat_binprod b c)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 (cat_binprod b c) $o cat_pr2 (cat_binprod a (cat_binprod b c)) $==
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 (cat_binprod b c) $o cat_pr2 (cat_binprod a (cat_binprod b c)) $==
?Goal1 $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_binprod b' (cat_binprod a' c')) $o
fmap11 cat_binprod g (fmap11 cat_binprod f h) $->
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 (cat_binprod b c) $o cat_pr2 (cat_binprod a (cat_binprod b c)) $==
g $o cat_pr1 (cat_binprod b (cat_binprod a c)) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 (cat_binprod b (cat_binprod a c)) $o cat_binprod_twist a b c $->
cat_pr1 (cat_binprod b c) $o cat_pr2 (cat_binprod a (cat_binprod b c))
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
(cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
(fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
?Goal0 $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 (cat_binprod b' (cat_binprod a' c')) $o
fmap11 cat_binprod g (fmap11 cat_binprod f h) $->
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod f h $o cat_pr2 (cat_binprod b (cat_binprod a c)) $o
cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod f h $o ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 (cat_binprod b (cat_binprod a c)) $o cat_binprod_twist a b c $->
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod f h $o fmap01 cat_binprod a (cat_pr2 (cat_binprod b c))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
?Goal0 $->
fmap01 cat_binprod a' (cat_pr2 (cat_binprod b' c')) $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
?Goal0 $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
?Goal $==
fmap11 cat_binprod f h $o fmap01 cat_binprod a (cat_pr2 (cat_binprod b c))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap11 cat_binprod
(fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a', b0)) (cat_pr2 (cat_binprod b' c'))) true $o
f)
(fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a', b0)) (cat_pr2 (cat_binprod b' c'))) false $o
fmap11 cat_binprod g h) $==
fmap11 cat_binprod
(f $o
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a, b0)) (cat_pr2 (cat_binprod b c))) true)
(h $o
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a, b0)) (cat_pr2 (cat_binprod b c))) false)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a', b0)) (cat_pr2 (cat_binprod b' c'))) true $o
f $==
f $o
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a, b0)) (cat_pr2 (cat_binprod b c))) true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a', b0)) (cat_pr2 (cat_binprod b' c'))) false $o
fmap11 cat_binprod g h $==
h $o
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a, b0)) (cat_pr2 (cat_binprod b c))) false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a', b0)) (cat_pr2 (cat_binprod b' c'))) false $o
fmap11 cat_binprod g h $==
h $o
fmap (uncurry (Bool_rec A))
(fmap (funb0 : A => (a, b0)) (cat_pr2 (cat_binprod b c))) false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
Associator cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
Associator cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
SymmetricBraiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallabc : A,
cat_binprod a (cat_binprod b c) $-> cat_binprod b (cat_binprod a c)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallabc : A,
?twist a b c $o ?twist b a c $== Id (cat_binprod b (cat_binprod a c))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forall (aa'bb'cc' : A) (f : a $-> a') (g : b $-> b')
(h : c $-> c'),
?twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o ?twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
SymmetricBraiding cat_binprod
exact _.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallabc : A,
cat_binprod a (cat_binprod b c) $-> cat_binprod b (cat_binprod a c)
exact cat_binprod_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forallabc : A,
cat_binprod_twist a b c $o cat_binprod_twist b a c $==
Id (cat_binprod b (cat_binprod a c))
exact cat_binprod_twist_cat_binprod_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A
forall (aa'bb'cc' : A) (f : a $-> a') (g : b $-> b')
(h : c $-> c'),
cat_binprod_twist a' b' c' $o fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod g (fmap11 cat_binprod f h) $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o
(symmetricbraiding_binprod z (cat_binprod x y) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod (cat_binprod x y) z) $o
symmetricbraiding_binprod z (cat_binprod x y) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
(?Goal $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
(cat_pr2 (cat_binprod (fst (z, cat_binprod x y)) (snd (z, cat_binprod x y))) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A x y)) $o
cat_pr2 (cat_binprod z (cat_binprod x y)) $o cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod x (cat_binprod z y)) $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 (cat_binprod x (cat_binprod y z))
napply cat_pr1_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr1 (cat_binprod (cat_binprod x y) z) $o
(symmetricbraiding_binprod z (cat_binprod x y) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod (cat_binprod x y) z) $o
symmetricbraiding_binprod z (cat_binprod x y) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
(?Goal $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
(cat_pr2 (cat_binprod (fst (z, cat_binprod x y)) (snd (z, cat_binprod x y))) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A x y)) $o
cat_pr2 (cat_binprod z (cat_binprod x y)) $o cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A z y)) $o
cat_pr2 (cat_binprod x (cat_binprod z y)) $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_prod (Bool_rec A z y)) $o
(symmetricbraiding_binprod y z $o cat_pr2 (cat_binprod x (cat_binprod y z))) $==
cat_pr1 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_binprod (cat_binprod x y) z) $o associator_cat_binprod x y z $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr2 (cat_binprod (cat_binprod x y) z) $o
(symmetricbraiding_binprod z (cat_binprod x y) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_binprod z (cat_binprod x y)) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z)) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A z y)) $o
cat_pr2 (cat_binprod x (cat_binprod z y)) $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A x, y, z: A
cat_pr1 (cat_prod (Bool_rec A z y)) $o
(symmetricbraiding_binprod y z $o cat_pr2 (cat_binprod x (cat_binprod y z))) $==
cat_pr2 (cat_prod (Bool_rec A y z)) $o
cat_pr2 (cat_binprod x (cat_binprod y z))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
associator_cat_binprod x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
associator_cat_binprod x y z $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z)) $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $o
cat_binprod_corec (cat_binprod x (cat_binprod y z)) f
(cat_binprod_corec (cat_binprod y z) g h) $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal0 $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o cat_binprod_twist x z y $o
?Goal $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_corec (cat_binprod x (cat_binprod z y)) f
(symmetricbraiding_binprod y z $o cat_binprod_corec (cat_binprod y z) g h) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o cat_binprod_twist x z y $o
?Goal $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod y z $o cat_binprod_corec (cat_binprod y z) g h $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o cat_binprod_twist x z y $o
cat_binprod_corec (cat_binprod x (cat_binprod z y)) f ?Goal0 $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o cat_binprod_twist x z y $o
cat_binprod_corec (cat_binprod x (cat_binprod z y)) f
(cat_binprod_corec (cat_binprod z y) h g) $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_twist x z y $o
cat_binprod_corec (cat_binprod x (cat_binprod z y)) f
(cat_binprod_corec (cat_binprod z y) h g) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o ?Goal $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod z (cat_binprod x y) $o
cat_binprod_corec (cat_binprod z (cat_binprod x y)) h
(cat_binprod_corec (cat_binprod x y) f g) $==
cat_binprod_corec (cat_binprod (cat_binprod x y) z)
(cat_binprod_corec (cat_binprod x y) f g) h
napply cat_binprod_swap_corec.Defined.Context (unit : A) `{!IsTerminal unit}.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
RightUnitor cat_binprod unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
RightUnitor cat_binprod unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
foralla : A, flip cat_binprod unit a $<~> idmap a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
Is1Natural (flip cat_binprod unit) idmap (funa : A => ?e a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
foralla : A, flip cat_binprod unit a $<~> idmap a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_binprod a unit $<~> a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_binprod a unit $-> a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
a $-> cat_binprod a unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
?f $o ?g $== Id a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
?g $o ?f $== Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_binprod a unit $-> a
exact (cat_pr1 _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
a $-> cat_binprod a unit
exact (cat_binprod_corec _ (Id _) (mor_terminal _ _)).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 (cat_binprod a unit) $o
cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $==
Id a
exact (cat_binprod_beta_pr1 _ _ _).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit) $== Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 (cat_binprod a unit) $o
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit)) $==
cat_pr1 (cat_binprod a unit) $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr2 (cat_binprod a unit) $o
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit)) $==
cat_pr2 (cat_binprod a unit) $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 (cat_binprod a unit) $o
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit)) $==
cat_pr1 (cat_binprod a unit) $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
Id a $o cat_pr1 (cat_binprod a unit) $==
cat_pr1 (cat_binprod a unit) $o Id (cat_binprod a unit)
exact (cat_idl _ $@ (cat_idr _)^$).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr2 (cat_binprod a unit) $o
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit)) $==
cat_pr2 (cat_binprod a unit) $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
mor_terminal a unit $o cat_pr1 (cat_binprod a unit) $==
cat_pr2 (cat_binprod a unit) $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cate_adjointify (cat_pr1 (cat_binprod b unit))
(cat_binprod_corec (cat_binprod b unit) (Id b) (mor_terminal b unit))
(cat_binprod_beta_pr1 (cat_binprod b unit) (Id b) (mor_terminal b unit))
(cat_binprod_eta_pr (cat_binprod b unit)
(cat_binprod_corec (cat_binprod b unit) (Id b) (mor_terminal b unit) $o
cat_pr1 (cat_binprod b unit))
(Id (cat_binprod b unit))
((cat_assoc_opp (cat_pr1 (cat_binprod b unit))
(cat_binprod_corec (cat_binprod b unit) (Id b) (mor_terminal b unit))
(cat_pr1 (cat_binprod b unit)) $@
(cat_binprod_beta_pr1 (cat_binprod b unit)
(Id b) (mor_terminal b unit) $@R
cat_pr1 (cat_binprod b unit))) $@
(cat_idl (cat_pr1 (cat_binprod b unit)) $@
(cat_idr (cat_pr1 (cat_binprod b unit)))^$))
((cat_assoc_opp (cat_pr1 (cat_binprod b unit))
(cat_binprod_corec (cat_binprod b unit) (Id b) (mor_terminal b unit))
(cat_pr2 (cat_binprod b unit)) $@
(cat_binprod_beta_pr2 (cat_binprod b unit)
(Id b) (mor_terminal b unit) $@R
cat_pr1 (cat_binprod b unit))) $@
((mor_terminal_unique (cat_binprod b unit) unit
(mor_terminal b unit $o cat_pr1 (cat_binprod b unit)))^$ $@
mor_terminal_unique (cat_binprod b unit) unit
(cat_pr2 (cat_binprod b unit) $o Id (cat_binprod b unit))))) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
?Goal $o fmap (flip cat_binprod unit) f $== fmap idmap f $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cate_adjointify (cat_pr1 (cat_binprod a unit))
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit))
(cat_binprod_beta_pr1 (cat_binprod a unit) (Id a) (mor_terminal a unit))
(cat_binprod_eta_pr (cat_binprod a unit)
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit) $o
cat_pr1 (cat_binprod a unit))
(Id (cat_binprod a unit))
((cat_assoc_opp (cat_pr1 (cat_binprod a unit))
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit))
(cat_pr1 (cat_binprod a unit)) $@
(cat_binprod_beta_pr1 (cat_binprod a unit)
(Id a) (mor_terminal a unit) $@R
cat_pr1 (cat_binprod a unit))) $@
(cat_idl (cat_pr1 (cat_binprod a unit)) $@
(cat_idr (cat_pr1 (cat_binprod a unit)))^$))
((cat_assoc_opp (cat_pr1 (cat_binprod a unit))
(cat_binprod_corec (cat_binprod a unit) (Id a) (mor_terminal a unit))
(cat_pr2 (cat_binprod a unit)) $@
(cat_binprod_beta_pr2 (cat_binprod a unit)
(Id a) (mor_terminal a unit) $@R
cat_pr1 (cat_binprod a unit))) $@
((mor_terminal_unique (cat_binprod a unit) unit
(mor_terminal a unit $o cat_pr1 (cat_binprod a unit)))^$ $@
mor_terminal_unique (cat_binprod a unit) unit
(cat_pr2 (cat_binprod a unit) $o Id (cat_binprod a unit))))) $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cat_pr1 (cat_binprod b unit) $o fmap (flip cat_binprod unit) f $==
fmap idmap f $o cat_pr1 (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
TriangleIdentity cat_binprod unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
TriangleIdentity cat_binprod unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
forallab : A,
fmap01 cat_binprod a (right_unitor_binprod b) $==
symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (right_unitor_binprod a) $o cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 cat_binprod a (right_unitor_binprod b) $==
symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (right_unitor_binprod a) $o cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
right_unitor_binprod b $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 cat_binprod a ?Goal $==
symmetricbraiding_binprod b a $o fmap01 cat_binprod b ?Goal2 $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
right_unitor_binprod a $-> ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 cat_binprod a (cat_pr1 (cat_binprod b unit)) $==
symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a b) $o
fmap01 cat_binprod a (cat_pr1 (cat_binprod b unit)) $==
cat_pr1 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 (cat_binprod a b) $o
fmap01 cat_binprod a (cat_pr1 (cat_binprod b unit)) $==
cat_pr2 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a b) $o
fmap01 cat_binprod a (cat_pr1 (cat_binprod b unit)) $==
cat_pr1 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a (flip cat_binprod unit b)) $==
cat_pr1 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit))) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a (flip cat_binprod unit b)) $==
?Goal1 $o fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a b) $o symmetricbraiding_binprod b a $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a (flip cat_binprod unit b)) $==
cat_pr2 (cat_binprod (fst (b, a)) (snd (b, a))) $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 (cat_binprod b a) $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
?Goal0 $o cat_binprod_twist a b unit $==
cat_pr1 (cat_binprod a (flip cat_binprod unit b))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod a unit) $o
cat_pr2 (cat_binprod b (flip cat_binprod unit a)) $o
cat_binprod_twist a b unit $==
cat_pr1 (cat_binprod a (flip cat_binprod unit b))
napply cat_binprod_pr1_pr2_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 (cat_binprod a b) $o
fmap01 cat_binprod a (cat_pr1 (cat_binprod b unit)) $==
cat_pr2 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod b unit) $o
cat_pr2 (cat_binprod a (flip cat_binprod unit b)) $==
cat_pr2 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit))) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod b unit) $o
cat_pr2 (cat_binprod a (flip cat_binprod unit b)) $==
cat_pr1 (cat_binprod b a) $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod b a) $o
fmap01 cat_binprod b (cat_pr1 (cat_binprod a unit)) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
?Goal $o cat_binprod_twist a b unit $==
cat_pr1 (cat_binprod b unit) $o
cat_pr2 (cat_binprod a (flip cat_binprod unit b))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 (cat_binprod b (flip cat_binprod unit a)) $o
cat_binprod_twist a b unit $==
cat_pr1 (cat_binprod b unit) $o
cat_pr2 (cat_binprod a (flip cat_binprod unit b))
napply cat_binprod_beta_pr1.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
PentagonIdentity cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
PentagonIdentity cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d) $==
fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
associator_cat_binprod (cat_binprod a b) c d $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal1 $o associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(?Goal2 $o associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
fmap10 cat_binprod (associator_cat_binprod a b c) d $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a b) $o
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 (cat_binprod a b) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a b) $o
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $== ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal4 $==
?Goal7 $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a b) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
associator_cat_binprod a b c $-> ?Goal7
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal3 $o fmap01 cat_binprod a (associator_cat_binprod b c d) $->
cat_pr1 (cat_binprod a (cat_binprod b (cat_binprod c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $-> ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d) $->
cat_pr1 (cat_binprod a (cat_binprod b (cat_binprod c d)))
napply cat_pr1_fmap01_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a b) $o
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 (cat_binprod a b) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a b) $o
cat_pr1 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal1 $==
?Goal4 $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a b) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
associator_cat_binprod a b c $-> ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o ?Goal4 $o ?Goal3 $o
fmap01 cat_binprod a (associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $-> ?Goal4 $o ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d))) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
cat_pr2 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
?Goal2 $->
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d) $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
(associator_cat_binprod b c d $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $->
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
associator_cat_binprod b c d $==
cat_pr1 (cat_prod (Bool_rec A b (cat_binprod c d)))
napply cat_pr1_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
associator_cat_binprod (cat_binprod a b) c d $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal0 $o associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
cat_pr2 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(?Goal1 $o associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
fmap10 cat_binprod (associator_cat_binprod a b c) d $->
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
(associator_cat_binprod a b c $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
?Goal1 $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A (cat_binprod a b) c)) $o
associator_cat_binprod a b c $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
(cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(?Goal1 $o fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
cat_pr1 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
cat_pr2 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o ?Goal1)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d) $->
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
(associator_cat_binprod b c d $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
associator_cat_binprod b c d $->
cat_pr1 (cat_prod (Bool_rec A c d)) $o
cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d)))
napply cat_pr2_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
cat_pr2 (cat_binprod (cat_binprod a b) (cat_binprod c d)) $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
(fmap10 cat_binprod (associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
?Goal0 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod (cat_binprod (cat_binprod a b) c) d) $o
fmap10 cat_binprod (associator_cat_binprod a b c) d $->
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
?Goal2 $o (?Goal1 $o fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_binprod (cat_binprod a (cat_binprod b c)) d) $o
associator_cat_binprod a (cat_binprod b c) d $-> ?Goal2 $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A c d)) $o
(cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d))) $o
cat_pr2 (cat_binprod a (cat_binprod b (cat_binprod c d)))) $==
cat_pr2 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
(cat_pr2 (cat_binprod a (cat_binprod (cat_binprod b c) d)) $o
fmap01 cat_binprod a (associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 (cat_prod (Bool_rec A (cat_binprod b c) d)) $o
associator_cat_binprod b c d $->
cat_pr2 (cat_prod (Bool_rec A c d)) $o
cat_pr2 (cat_prod (Bool_rec A b (cat_binprod c d)))
napply cat_pr2_associator_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
HexagonIdentity cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
HexagonIdentity cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
associator_cat_binprod a b c $o symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
(fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
symmetricbraiding_binprod b a $o cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)))) $==
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)))) $==
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)))) $==
cat_pr1 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o symmetricbraiding_binprod b a $== ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal3 $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
?Goal6 $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $-> ?Goal6
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (fst (b, a)) (snd (b, a))) $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
?Goal2 $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $-> ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (fst (b, a)) (snd (b, a))) $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod b a) $o cat_pr1 (cat_binprod (cat_binprod b a) c) $o
associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod b a) $o cat_pr1 (cat_binprod (cat_binprod b a) c) $o
associator_cat_binprod b a c $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal1 $o fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
?Goal4 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $->
?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A a c)) $o
cat_pr2 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
?Goal2 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A a c)) $o
cat_pr2 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr2 (cat_binprod (fst (cat_binprod b c, a)) (snd (cat_binprod b c, a))) $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
?Goal4 $o ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A a c)) $o ?Goal4 $== ?Goal5
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod b c) a) $o associator_cat_binprod b c a $->
?Goal5 $o ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A a c)) $o symmetricbraiding_binprod c a $==
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod b c) a) $o associator_cat_binprod b c a $->
?Goal1 $o cat_pr2 (cat_binprod b (cat_binprod c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A a c)) $o symmetricbraiding_binprod c a $==
cat_pr2 (cat_prod (Bool_rec A c a))
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o
(symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)))) $==
cat_pr2 (cat_binprod a b) $o
(cat_pr1 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o symmetricbraiding_binprod b a $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr2 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o symmetricbraiding_binprod b a $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal0 $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
?Goal3 $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $-> ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod (fst (b, a)) (snd (b, a))) $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
?Goal1 $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a b) $o cat_pr1 (cat_binprod (cat_binprod a b) c) $o
associator_cat_binprod a b c $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod (fst (b, a)) (snd (b, a))) $o
(cat_pr1 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod b a) $o cat_pr1 (cat_binprod (cat_binprod b a) c) $o
associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod b a) $o cat_pr1 (cat_binprod (cat_binprod b a) c) $o
associator_cat_binprod b a c $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal0 $o fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o ?Goal3 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $->
?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o ?Goal1 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $->
?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_binprod (fst (cat_binprod b c, a)) (snd (cat_binprod b c, a))) $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_binprod (cat_binprod b c) a) $o associator_cat_binprod b c a $->
cat_pr1 (cat_binprod b (cat_binprod c a))
napply cat_pr1_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
(fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a))) $==
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
(associator_cat_binprod a b c $o
(symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
fmap10 cat_binprod (symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
cat_pr2 (cat_binprod (cat_binprod a b) c) $o associator_cat_binprod a b c $o
symmetricbraiding_binprod (cat_binprod b c) a $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o
fmap10 cat_binprod (symmetricbraiding_binprod b a) c $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
?Goal2 $o symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o associator_cat_binprod a b c $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
?Goal0 $o symmetricbraiding_binprod (cat_binprod b c) a $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod a b) c) $o associator_cat_binprod a b c $->
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod (cat_binprod b a) c) $o
(associator_cat_binprod b a c $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a)) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A a c)) $o
cat_pr2 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod b (cat_binprod a c)) $o
fmap01 cat_binprod b (symmetricbraiding_binprod c a) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A a c)) $o ?Goal $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a) $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A a c)) $o
(symmetricbraiding_binprod c a $o cat_pr2 (cat_binprod b (cat_binprod c a))) $==
cat_pr2 (cat_prod (Bool_rec A b c)) $o
(cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a) $o
associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A a c)) $o symmetricbraiding_binprod c a $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A b c)) $o ?Goal2 $o associator_cat_binprod b c a $->
?Goal $o cat_pr2 (cat_binprod b (cat_binprod c a))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_binprod a (cat_binprod b c)) $o
symmetricbraiding_binprod (cat_binprod b c) a $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A hbp: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 (cat_prod (Bool_rec A b c)) $o
cat_pr1 (cat_binprod (fst (cat_binprod b c, a)) (snd (cat_binprod b c, a))) $o
associator_cat_binprod b c a $->
cat_pr1 (cat_binprod (fst (c, a)) (snd (c, a))) $o
cat_pr2 (cat_binprod b (cat_binprod c a))
napply cat_pr2_pr1_associator_binprod.Defined.Local Instanceismonoidal_cat_binprod
: IsMonoidal A cat_binprod unit
:= {}.(** Many of the above instances are declared to be local because they follow from this one. *)#[export] Instanceissymmetricmonoidal_cat_binprod
: IsSymmetricMonoidal A cat_binprod unit
:= {}.EndAssociativity.(** ** Examples *)(** *** Products in Type *)(** Since we use the Yoneda lemma in this file, we therefore depend on WildCat.Universe which means these instances have to live here. *)(** Assuming [Funext], [Type] has all products. *)
H: Funext
HasAllProducts Type
H: Funext
HasAllProducts Type
H: Funext I: Type x: I -> Type
Product x
H: Funext I: Type x: I -> Type
Type
H: Funext I: Type x: I -> Type
foralli : I, ?cat_prod $-> x i
H: Funext I: Type x: I -> Type
forallz : Type, (foralli : I, z $-> x i) -> z $-> ?cat_prod
H: Funext I: Type x: I -> Type
forall (z : Type) (f : foralli : I, z $-> x i) (i : I),
?cat_pr i $o ?cat_prod_corec z f $== f i
H: Funext I: Type x: I -> Type
forall (z : Type) (fg : z $-> ?cat_prod),
(foralli : I, ?cat_pr i $o f $== ?cat_pr i $o g) -> f $== g
H: Funext I: Type x: I -> Type
Type
exact (forall (i : I), x i).
H: Funext I: Type x: I -> Type
foralli : I, (foralli0 : I, x i0) $-> x i
H: Funext I: Type x: I -> Type i: I f: foralli0 : I, x i0
x i
exact (f i).
H: Funext I: Type x: I -> Type
forallz : Type, (foralli : I, z $-> x i) -> z $-> (foralli : I, x i)
H: Funext I: Type x: I -> Type Z: Type f: foralli0 : I, Z $-> x i0 a: Z i: I
x i
exact (f i a).
H: Funext I: Type x: I -> Type
forall (z : Type) (f : foralli : I, z $-> x i) (i : I),
(funi0 : I =>
(funf0 : foralli1 : I, x i1 => f0 i0) : (foralli1 : I, x i1) $-> x i0) i $o
(fun (Z : Type) (f0 : foralli0 : I, Z $-> x i0) =>
(fun (a : Z) (i0 : I) => f0 i0 a) : Z $-> (foralli0 : I, x i0)) z f $==
f i
reflexivity.
H: Funext I: Type x: I -> Type
forall (z : Type) (fg : z $-> (foralli : I, x i)),
(foralli : I,
(funi0 : I =>
(funf0 : foralli1 : I, x i1 => f0 i0) : (foralli1 : I, x i1) $-> x i0) i $o
f $==
(funi0 : I =>
(funf0 : foralli1 : I, x i1 => f0 i0) : (foralli1 : I, x i1) $-> x i0) i $o
g) ->
f $== g
H: Funext I: Type x: I -> Type Z: Type f, g: Z $-> (foralli : I, x i) p: foralli : I,
(funi0 : I =>
(funf0 : foralli1 : I, x i1 => f0 i0) : (foralli1 : I, x i1) $-> x i0) i $o
f $==
(funi0 : I =>
(funf0 : foralli1 : I, x i1 => f0 i0) : (foralli1 : I, x i1) $-> x i0) i $o
g a: Z
f a = g a
exact (path_forall _ _ (funi => p i a)).Defined.(** It follows that [Type] has binary products, but we prove this separately to avoid [Funext]. *)
HasBinaryProducts Type
HasBinaryProducts Type
X, Y: Type
BinaryProduct X Y
X, Y: Type
Type
X, Y: Type
?cat_binprod $-> X
X, Y: Type
?cat_binprod $-> Y
X, Y: Type
forallz : Type, (z $-> X) -> (z $-> Y) -> z $-> ?cat_binprod
X, Y: Type
forall (z : Type) (f : z $-> X) (g : z $-> Y),
?cat_pr1 $o ?cat_binprod_corec z f g $== f
X, Y: Type
forall (z : Type) (f : z $-> X) (g : z $-> Y),
?cat_pr2 $o ?cat_binprod_corec z f g $== g
X, Y: Type
forall (z : Type) (fg : z $-> ?cat_binprod),
?cat_pr1 $o f $== ?cat_pr1 $o g -> ?cat_pr2 $o f $== ?cat_pr2 $o g -> f $== g
X, Y: Type
Type
exact (X * Y).
X, Y: Type
X * Y $-> X
exact fst.
X, Y: Type
X * Y $-> Y
exact snd.
X, Y: Type
forallz : Type, (z $-> X) -> (z $-> Y) -> z $-> X * Y
X, Y, Z: Type f: Z $-> X g: Z $-> Y z: Z
X * Y
exact (f z, g z).
X, Y: Type
forall (z : Type) (f : z $-> X) (g : z $-> Y),
fst $o
(fun (Z : Type) (f0 : Z $-> X) (g0 : Z $-> Y) =>
(funz0 : Z => (f0 z0, g0 z0)) : Z $-> X * Y) z f g $==
f
reflexivity.
X, Y: Type
forall (z : Type) (f : z $-> X) (g : z $-> Y),
snd $o
(fun (Z : Type) (f0 : Z $-> X) (g0 : Z $-> Y) =>
(funz0 : Z => (f0 z0, g0 z0)) : Z $-> X * Y) z f g $==
g
reflexivity.
X, Y: Type
forall (z : Type) (fg : z $-> X * Y),
fst $o f $== fst $o g -> snd $o f $== snd $o g -> f $== g
X, Y, Z: Type f, g: Z $-> X * Y p: fst $o f $== fst $o g q: snd $o f $== snd $o g x: Z
f x = g x
X, Y, Z: Type f, g: Z $-> X * Y p: fst $o f $== fst $o g q: snd $o f $== snd $o g x: Z
fst (f x) = fst (g x)
X, Y, Z: Type f, g: Z $-> X * Y p: fst $o f $== fst $o g q: snd $o f $== snd $o g x: Z
snd (f x) = snd (g x)
X, Y, Z: Type f, g: Z $-> X * Y p: fst $o f $== fst $o g q: snd $o f $== snd $o g x: Z
fst (f x) = fst (g x)
exact (p x).
X, Y, Z: Type f, g: Z $-> X * Y p: fst $o f $== fst $o g q: snd $o f $== snd $o g x: Z
snd (f x) = snd (g x)
exact (q x).Defined.(** *** Products in ZeroGpd *)(** Since we use products in ZeroGpd to define general products, we must depend on ZeroGroupoid, which means that these instances have to live here. *)(** Note that this does not rely on [Funext], since the 1-cells in the product 0-groupoid are *defined* to be homotopies. *)
HasAllProducts ZeroGpd
HasAllProducts ZeroGpd
I: Type x: I -> ZeroGpd
Product x
I: Type x: I -> ZeroGpd
ZeroGpd
I: Type x: I -> ZeroGpd
foralli : I, ?cat_prod $-> x i
I: Type x: I -> ZeroGpd
forallz : ZeroGpd, (foralli : I, z $-> x i) -> z $-> ?cat_prod
I: Type x: I -> ZeroGpd
forall (z : ZeroGpd) (f : foralli : I, z $-> x i)
(i : I), ?cat_pr i $o ?cat_prod_corec z f $== f i
I: Type x: I -> ZeroGpd
forall (z : ZeroGpd) (fg : z $-> ?cat_prod),
(foralli : I, ?cat_pr i $o f $== ?cat_pr i $o g) -> f $== g
I: Type x: I -> ZeroGpd
ZeroGpd
exact (prod_0gpd I x).
I: Type x: I -> ZeroGpd
foralli : I, prod_0gpd I x $-> x i
exact prod_0gpd_pr.
I: Type x: I -> ZeroGpd
forallz : ZeroGpd, (foralli : I, z $-> x i) -> z $-> prod_0gpd I x
I: Type x: I -> ZeroGpd G: ZeroGpd
(foralli : I, G $-> x i) -> G $-> prod_0gpd I x
apply equiv_prod_0gpd_corec.
I: Type x: I -> ZeroGpd
forall (z : ZeroGpd) (f : foralli : I, z $-> x i)
(i : I),
prod_0gpd_pr i $o
(funG : ZeroGpd => letX := equiv_fun equiv_prod_0gpd_corec in X) z f $==
f i
reflexivity.
I: Type x: I -> ZeroGpd
forall (z : ZeroGpd) (fg : z $-> prod_0gpd I x),
(foralli : I, prod_0gpd_pr i $o f $== prod_0gpd_pr i $o g) -> f $== g
I: Type x: I -> ZeroGpd G: ZeroGpd f, g: G $-> prod_0gpd I x p: foralli : I, prod_0gpd_pr i $o f $== prod_0gpd_pr i $o g
f $== g
I: Type x: I -> ZeroGpd G: ZeroGpd f, g: G $-> prod_0gpd I x p: foralli : I, prod_0gpd_pr i $o f $== prod_0gpd_pr i $o g a: zerogpd_graph G
f a $-> g a
I: Type x: I -> ZeroGpd G: ZeroGpd f, g: G $-> prod_0gpd I x p: foralli0 : I, prod_0gpd_pr i0 $o f $== prod_0gpd_pr i0 $o g a: zerogpd_graph G i: I
f a i $-> g a i
exact (p i a).Defined.(** This follows from the previous result, but we prove it separately because using these custom binary products can make certain things easier, and can sometimes avoid the need to use [Funext]. *)
HasBinaryProducts ZeroGpd
HasBinaryProducts ZeroGpd
G, H: ZeroGpd
BinaryProduct G H
G, H: ZeroGpd
ZeroGpd
G, H: ZeroGpd
?cat_binprod $-> G
G, H: ZeroGpd
?cat_binprod $-> H
G, H: ZeroGpd
forallz : ZeroGpd, (z $-> G) -> (z $-> H) -> z $-> ?cat_binprod
G, H: ZeroGpd
forall (z : ZeroGpd) (f : z $-> G) (g : z $-> H),
?cat_pr1 $o ?cat_binprod_corec z f g $== f
G, H: ZeroGpd
forall (z : ZeroGpd) (f : z $-> G) (g : z $-> H),
?cat_pr2 $o ?cat_binprod_corec z f g $== g
G, H: ZeroGpd
forall (z : ZeroGpd) (fg : z $-> ?cat_binprod),
?cat_pr1 $o f $== ?cat_pr1 $o g -> ?cat_pr2 $o f $== ?cat_pr2 $o g -> f $== g
G, H: ZeroGpd
ZeroGpd
exact (binprod_0gpd G H).
G, H: ZeroGpd
binprod_0gpd G H $-> G
apply binprod_0gpd_pr1.
G, H: ZeroGpd
binprod_0gpd G H $-> H
apply binprod_0gpd_pr2.
G, H: ZeroGpd
forallz : ZeroGpd, (z $-> G) -> (z $-> H) -> z $-> binprod_0gpd G H
G, H, K: ZeroGpd f: K $-> G g: K $-> H
K $-> binprod_0gpd G H
exact (equiv_binprod_0gpd_corec G H K (f, g)).
G, H: ZeroGpd
forall (z : ZeroGpd) (f : z $-> G) (g : z $-> H),
binprod_0gpd_pr1 G H $o
(fun (K : ZeroGpd) (f0 : K $-> G) (g0 : K $-> H) =>
equiv_binprod_0gpd_corec G H K (f0, g0)) z f g $==
f
reflexivity.
G, H: ZeroGpd
forall (z : ZeroGpd) (f : z $-> G) (g : z $-> H),
binprod_0gpd_pr2 G H $o
(fun (K : ZeroGpd) (f0 : K $-> G) (g0 : K $-> H) =>
equiv_binprod_0gpd_corec G H K (f0, g0)) z f g $==
g
reflexivity.
G, H: ZeroGpd
forall (z : ZeroGpd) (fg : z $-> binprod_0gpd G H),
binprod_0gpd_pr1 G H $o f $== binprod_0gpd_pr1 G H $o g ->
binprod_0gpd_pr2 G H $o f $== binprod_0gpd_pr2 G H $o g -> f $== g
G, H, K: ZeroGpd f, g: K $-> binprod_0gpd G H p: binprod_0gpd_pr1 G H $o f $== binprod_0gpd_pr1 G H $o g q: binprod_0gpd_pr2 G H $o f $== binprod_0gpd_pr2 G H $o g k: zerogpd_graph K