Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A prod: A x: I -> A z: A pr: foralli : I, prod $-> x i
yon_0gpd prod z $->
prod_0gpd I (funi : I => yon_0gpd (x i) z)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A prod: A x: I -> A z: A pr: foralli : I, prod $-> x i
yon_0gpd prod z $->
prod_0gpd I (funi : I => yon_0gpd (x i) z)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A prod: A x: I -> A z: A pr: foralli : I, prod $-> x i
foralli : I,
yon_0gpd prod z $->
(funi0 : I => yon_0gpd (x i0) z) i
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A prod: A x: I -> A z: A pr: foralli : I, prod $-> x i i: I
yon_0gpd prod z $-> (funi : I => yon_0gpd (x i) z) i
exact (fmap (funx => yon_0gpd x z) (pr i)).Defined.(* A product of an [I]-indexed family of objects of a category is an object of the category with an [I]-indexed family of projections such that the induced map is an equivalence. *)ClassProduct (I : Type) {A : Type} `{Is1Cat A} {x : I -> A} := Build_Product' {
cat_prod : A;
cat_pr : foralli : I, cat_prod $-> x i;
cat_isequiv_cat_prod_corec_inv
:: forallz : A, CatIsEquiv (cat_prod_corec_inv cat_prod x z cat_pr);
}.Arguments Product I {A _ _ _ _} x.Arguments cat_prod I {A _ _ _ _} x {product} : rename.(** A convenience wrapper for building products *)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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
Product I x
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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
Product I x
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 cat_prod x z cat_pr)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
CatIsEquiv (cat_prod_corec_inv cat_prod x z cat_pr)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
IsSurjInj (cat_prod_corec_inv cat_prod x z cat_pr)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
SplEssSurj (cat_prod_corec_inv cat_prod x z cat_pr)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
forallx0y : Graph.graph_carrier
(zerogpd_graph (yon_0gpd cat_prod z)),
cat_prod_corec_inv cat_prod x z cat_pr x0 $==
cat_prod_corec_inv cat_prod x z cat_pr y ->
x0 $== y
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
SplEssSurj (cat_prod_corec_inv cat_prod x z cat_pr)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A f: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) z)))
{a
: Graph.graph_carrier
(zerogpd_graph (yon_0gpd cat_prod z)) &
cat_prod_corec_inv cat_prod x z cat_pr a $== f}
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A f: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) z)))
cat_prod_corec_inv cat_prod x z cat_pr
(cat_prod_corec z f) $== f
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A f: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) z))) i: I
cat_prod_corec_inv cat_prod x z cat_pr
(cat_prod_corec z f) i $-> f i
napply cat_prod_beta_pr.
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A
forallx0y : Graph.graph_carrier
(zerogpd_graph (yon_0gpd cat_prod z)),
cat_prod_corec_inv cat_prod x z cat_pr x0 $==
cat_prod_corec_inv cat_prod x z cat_pr y -> x0 $== y
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A 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 z: A f, g: Graph.graph_carrier
(zerogpd_graph (yon_0gpd cat_prod z)) p: cat_prod_corec_inv cat_prod x z cat_pr f $==
cat_prod_corec_inv cat_prod x z cat_pr g
f $== g
by napply cat_prod_eta_pr.Defined.SectionLemmata.Context (I : Type) {A : Type} {x : I -> A} `{Product I _ x}.Definitioncate_cat_prod_corec_inv {z : A}
: (yon_0gpd (cat_prod I x) z) $<~> prod_0gpd I (funi => yon_0gpd (x i) z)
:= Build_CatEquiv (cat_prod_corec_inv (cat_prod I x) x z cat_pr).Definitioncate_cat_prod_corec {z : A}
: prod_0gpd I (funi => yon_0gpd (x i) z) $<~> (yon_0gpd (cat_prod I x) z)
:= cate_cat_prod_corec_inv^-1$.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A
(foralli : I, z $-> x i) -> z $-> cat_prod I x
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A
(foralli : I, z $-> x i) -> z $-> cat_prod I x
apply cate_cat_prod_corec.Defined.(** Applying the [i]th projection after a tuple of maps gives the [ith] map. *)
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f: foralli : I, z $-> x i
foralli : I, cat_pr i $o cat_prod_corec f $== f i
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f: foralli : I, z $-> x i
foralli : I, cat_pr i $o cat_prod_corec f $== f i
exact (cate_isretr cate_cat_prod_corec_inv f).Defined.(** The pairing map is the unique map that makes the following diagram commute. *)
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f: z $-> cat_prod I x
cat_prod_corec (funi : I => cat_pr i $o f) $== f
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f: z $-> cat_prod I x
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is0Functor
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is0Functor
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x 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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) a)) ->
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) b))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b
Is0Functor ?F
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) a)) ->
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) b))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b g: Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
a)) i: I
yon_0gpd (x i) b
exact (f $o g i).
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b
Is0Functor
(fung : Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I
(funi : I => yon_0gpd (x i) z)) a))
=>
(funi : I => f $o g i)
:
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
b)))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b
foralla0b0 : Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I
(funi : I => yon_0gpd (x i) z)) a)),
(a0 $-> b0) ->
(fung : Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I
(funi : I => yon_0gpd (x i) z)) a))
=>
(funi : I => f $o g i)
:
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) b)))
a0 $->
(fung : Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I
(funi : I => yon_0gpd (x i) z)) a))
=>
(funi : I => f $o g i)
:
Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) b)))
b0
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f: a $-> b g, h: Graph.graph_carrier
(zerogpd_graph
((funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
a)) p: g $-> h i: I
f $o g i $-> f $o h i
exact (f $@L p i).Defined.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is1Functor
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is1Functor
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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)
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f, g: a $-> b p: f $== g r: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) i: I
fmap
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) f r i $->
fmap
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) g r i
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b: A^op f, g: a $-> b p: f $== g r: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) i: I
f $== g
exact p.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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)
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a: A^op r: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) i: I
fmap
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) (Id a)
r i $->
Id (prod_0gpd I (funi : I => yon_0gpd (x i) a)) r i
napply cat_idl; exact _.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
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
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x a, b, c: A^op f: a $-> b g: b $-> c r: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) i: I
fmap
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
(g $o f) r i $->
(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) r
i
napply cat_assoc; exact _.Defined.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
NatEquiv (yon_0gpd (cat_prod I x))
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
NatEquiv (yon_0gpd (cat_prod I x))
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
foralla : A^op,
yon_0gpd (cat_prod I x) a $<~>
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) a
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is1Natural (yon_0gpd (cat_prod I x))
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z))
(funa : A^op => ?e a)
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x
Is1Natural (yon_0gpd (cat_prod I x))
(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)
exact (is1natural_yoneda_0gpd
(cat_prod I x)
(funz => prod_0gpd I (funi => yon_0gpd (x i) z))
cat_pr).Defined.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': foralli : I, z $-> x i
(foralli : I, f i $== f' i) ->
cat_prod_corec f $== cat_prod_corec f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': foralli : I, z $-> x i
(foralli : I, f i $== f' i) ->
cat_prod_corec f $== cat_prod_corec f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': foralli : I, z $-> x i p: foralli : I, f i $== f' i
cat_prod_corec f $== cat_prod_corec f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x 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'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x 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'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x 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.
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': z $-> cat_prod I x
(foralli : I, cat_pr i $o f $== cat_pr i $o f') ->
f $== f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': z $-> cat_prod I x
(foralli : I, cat_pr i $o f $== cat_pr i $o f') ->
f $== f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': z $-> cat_prod I x p: foralli : I, cat_pr i $o f $== cat_pr i $o f'
f $== f'
I, A: Type x: I -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product I x z: A f, f': z $-> cat_prod I x 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.(** *** Diagonal map *)Definitioncat_prod_diag {I : Type} {A : Type} (x : A)
`{Product I _ (fun_ => x)}
: x $-> cat_prod I (fun_ => x)
:= cat_prod_corec I (fun_ => Id x).(** *** Uniqueness of products *)
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
cat_prod I x $<~> cat_prod J y
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
cat_prod I x $<~> cat_prod J y
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
yon1_0gpd (cat_prod I x) $<~> yon1_0gpd (cat_prod J y)
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J 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 (cat_prod J y))
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J 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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J 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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i) z: A^op
(funz : A^op =>
prod_0gpd I (funi : I => yon_0gpd (x i) z)) z $<~>
(funz : A^op =>
prod_0gpd J (funi : J => yon_0gpd (y i) z)) z
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J 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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i) z: A^op i: I
yon_0gpd (x i) z $<~> yon_0gpd (y (ie i)) z
exact (natequiv_yon_equiv_0gpd (e i) _).
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i)
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J 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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: Graph.graph_carrier
(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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) j: J
transport (funx : J => b $-> y x) (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 (funx : J => a $-> y x) (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
I, J: Type ie: I <~> J A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: J -> A Product1: Product J y e: foralli : I, x i $<~> y (ie i) a, b: A^op f: a $-> b g: Graph.graph_carrier
(zerogpd_graph
(prod_0gpd I (funi : I => yon_0gpd (x i) a))) j: J
transport (funx : J => b $-> y x) 1
(cate_fun' (x (ie^-1 j)) (y (ie (ie^-1 j)))
(e (ie^-1 j)) $o (g (ie^-1 j) $o f)) $->
transport (funx : J => a $-> y x) 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 no matter how they are constructed. *)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: I -> A Product1: Product I y e: foralli : I, x i $<~> y i
cat_prod I x $<~> cat_prod I y
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A x: I -> A Product0: Product I x y: I -> A Product1: Product I y e: foralli : I, x i $<~> y i
cat_prod I x $<~> cat_prod I y
exact (cate_cat_prod 1 x y e).Defined.(** *** Existence of products *)ClassHasProducts (IA : Type) `{Is1Cat A}
:= has_products :: forallx : I -> A, Product I x.ClassHasAllProducts (A : Type) `{Is1Cat A}
:= has_all_products :: forallI : Type, HasProducts I A.(** *** Product functor *)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
Is0Functor (funx : I -> A => cat_prod I x)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
Is0Functor (funx : I -> A => cat_prod I x)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
forallab : I -> A,
(a $-> b) -> cat_prod I a $-> cat_prod I b
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y: I -> A f: x $-> y
cat_prod I x $-> cat_prod I y
exact (cat_prod_corec I (funi => f i $o cat_pr i)).Defined.
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
Is1Functor (funx : I -> A => cat_prod I x)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
Is1Functor (funx : I -> A => cat_prod I x)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
forall (ab : I -> A) (fg : a $-> b),
f $== g ->
fmap (funx : I -> A => cat_prod I x) f $==
fmap (funx : I -> A => cat_prod I x) g
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
foralla : I -> A,
fmap (funx : I -> A => cat_prod I x) (Id a) $==
Id (cat_prod I a)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
forall (abc : I -> A)
(f : a $-> b) (g : b $-> c),
fmap (funx : I -> A => cat_prod I x) (g $o f) $==
fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
forall (ab : I -> A) (fg : a $-> b),
f $== g ->
fmap (funx : I -> A => cat_prod I x) f $==
fmap (funx : I -> A => cat_prod I x) g
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y: I -> A f, g: x $-> y p: f $== g
fmap (funx : I -> A => cat_prod I x) f $==
fmap (funx : I -> A => cat_prod I x) g
exact (cat_prod_corec_eta I (funi => p i $@R cat_pr i)).
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
foralla : I -> A,
fmap (funx : I -> A => cat_prod I x) (Id a) $==
Id (cat_prod I a)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x: I -> A
fmap (funx : I -> A => cat_prod I x) (Id x) $==
Id (cat_prod I x)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x: I -> A
fmap (funx : I -> A => cat_prod I x) (Id x) $==
cat_prod_corec I
(funi : I => cat_pr i $o Id (cat_prod I x))
exact (cat_prod_corec_eta I (funi => cat_idl _ $@ (cat_idr _)^$)).
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A
forall (abc : I -> A) (f : a $-> b) (g : b $-> c),
fmap (funx : I -> A => cat_prod I x) (g $o f) $==
fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z
fmap (funx : I -> A => cat_prod I x) (g $o f) $==
fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z
foralli : I,
cat_pr i $o
fmap (funx : I -> A => cat_prod I x) (g $o f) $==
cat_pr i $o
(fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z i: I
cat_pr i $o
fmap (funx : I -> A => cat_prod I x) (g $o f) $==
cat_pr i $o
(fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A 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 (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f)
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A 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 (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z i: I
cat_pr i $o fmap (funx : I -> A => cat_prod I x) g $o
fmap (funx : I -> A => cat_prod I x) f $==
(g $o f) i $o cat_pr i
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z i: I
g i $o cat_pr i $o
fmap (funx : I -> A => cat_prod I x) f $==
(g $o f) i $o cat_pr i
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A x, y, z: I -> A f: x $-> y g: y $-> z i: I
g i $o
(cat_pr i $o fmap (funx : I -> A => cat_prod I x) f) $==
(g $o f) i $o cat_pr i
I, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasProducts I A 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.(** *** Categories with specific kinds of products *)
A: Type z: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product Empty (fun_ : Empty => z)
IsTerminal (cat_prod Empty (fun_ : Empty => z))
A: Type z: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product Empty (fun_ : Empty => z)
IsTerminal (cat_prod Empty (fun_ : Empty => z))
A: Type z: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: Product Empty (fun_ : Empty => z) a: A
{f : a $-> cat_prod Empty (fun_ : Empty => z) &
forallg : a $-> cat_prod Empty (fun_ : Empty => z),
f $== g}
snrefine (cat_prod_corec _ _; funf => cat_prod_pr_eta _ _); intros [].Defined.(** *** Binary products *)ClassBinaryProduct {A : Type} `{Is1Cat A} (x y : A)
:= binary_product :: Product Bool (funb => if b then x else y).(** 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 Bool A}
: HasBinaryProducts A
:= funxy => has_products (funb : Bool => if b then x else y).SectionBinaryProducts.Context {A : Type} `{Is1Cat A} {x y : A} `{!BinaryProduct x y}.Definitioncat_binprod' : A
:= cat_prod Bool (funb : Bool => if b then x else y).Definitioncat_pr1 : cat_binprod' $-> x := cat_pr true.Definitioncat_pr2 : cat_binprod' $-> y := cat_pr false.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y z: A f: z $-> x g: z $-> y
foralli : Bool, z $-> (if i then x else y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> x g: z $-> y
z $-> x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> x g: z $-> y
z $-> y
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> x g: z $-> y
z $-> x
exact f.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> x g: z $-> y
z $-> y
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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
cat_prod_corec Bool
(funi : Bool =>
if i as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $== f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
foralli : Bool,
cat_pr i $o
cat_prod_corec Bool
(funi0 : Bool =>
if i0 as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $== cat_pr i $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
cat_pr true $o
cat_prod_corec Bool
(funi : Bool =>
if i as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $== cat_pr true $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
cat_pr false $o
cat_prod_corec Bool
(funi : Bool =>
if i as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $==
cat_pr false $o f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
cat_pr true $o
cat_prod_corec Bool
(funi : Bool =>
if i as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $== 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: A BinaryProduct0: BinaryProduct x y z: A f: z $-> cat_binprod'
cat_pr false $o
cat_prod_corec Bool
(funi : Bool =>
if i as b return (z $-> (if b then x else y))
then cat_pr1 $o f
else cat_pr2 $o f) $== 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
foralli : Bool,
(if i as b return (z $-> (if b then x else y))
then f
else g) $==
(if i as b return (z $-> (if b then x else y))
then f'
else g')
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x, y: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y 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: A BinaryProduct0: BinaryProduct x y z: A f, f': z $-> x g, g': z $-> y p: f $== f' q: g $== g'
g $== g'
exact q.Defined.EndBinaryProducts.Arguments cat_binprod' {A _ _ _ _} x y {_}.(** A convenience wrapper for building binary products *)
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
Product Bool (funb : Bool => if b then x else 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: 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
Product Bool (funb : Bool => if b then x else 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: 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' $->
(funb : Bool => if b then x else 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 $-> (funb : Bool => if b then x else 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 $-> (funb : Bool => if b then x else 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' $->
(funb : Bool => if b then x else 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' $-> 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: 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' $-> 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: 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' $-> x
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' $-> y
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 $-> (funb : Bool => if b then x else 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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 $-> (funb : Bool => if b then x else y) i)
(i : Bool),
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o
(fun (z0 : A)
(f0 : foralli0 : Bool,
z0 $->
(funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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: 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 z: A f: foralli : Bool,
z $-> (funb : Bool => if b then x else 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 =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) 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 z: A f, g: z $-> cat_binprod' p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) 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 z: A f, g: z $-> cat_binprod' p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) 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: 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 z: A f, g: z $-> cat_binprod' p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) 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: 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 z: A f, g: z $-> cat_binprod' p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) 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: 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 z: A f, g: z $-> cat_binprod' p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod' $-> (if b then x else y))
then cat_pr1
else cat_pr2) i $o g
cat_pr2 $o f $== cat_pr2 $o g
exact (p false).Defined.Definitioncat_binprod {A: Type} `{HasBinaryProducts A} x y := cat_binprod' 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 $o f $== cat_pr1 $o g ->
cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 $o g ->
cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g ->
cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 $o g ->
cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $o g
cat_pr1 $o f $== cat_pr1 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $o g
cat_pr2 $o f $== cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $o g
cat_pr1 $o f $== cat_pr1 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $o g
cat_pr2 $o f $== cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 $o g q: cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $o g r: cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o cat_pr1 $o f $== cat_pr1 $o cat_pr1 $o g ->
cat_pr2 $o cat_pr1 $o f $== cat_pr2 $o 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 H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z
cat_pr1 $o cat_pr1 $o f $== cat_pr1 $o cat_pr1 $o g ->
cat_pr2 $o cat_pr1 $o f $== cat_pr2 $o 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 H0: HasBinaryProducts A w, x, y, z: A f, g: w $-> cat_binprod (cat_binprod x y) z p: cat_pr1 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr1 $o f $== cat_pr1 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr2 $o f $== cat_pr2 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr1 $o f $== cat_pr1 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr1 $o cat_pr1 $o f $== cat_pr1 $o cat_pr1 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr2 $o cat_pr1 $o f $== cat_pr2 $o cat_pr1 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr1 $o cat_pr1 $o f $== cat_pr1 $o cat_pr1 $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 $o cat_pr1 $o f $==
cat_pr1 $o cat_pr1 $o g q: cat_pr2 $o cat_pr1 $o f $==
cat_pr2 $o cat_pr1 $o g r: cat_pr2 $o f $== cat_pr2 $o g
cat_pr2 $o cat_pr1 $o f $== cat_pr2 $o cat_pr1 $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 $o f $== cat_pr1 ->
cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 ->
cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2 ->
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 $o f $== cat_pr1 ->
cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 ->
cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2 ->
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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr1 $o f $==
cat_pr1 $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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr1 $o f $==
cat_pr1 $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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr1 $o cat_pr2 $o f $==
cat_pr1 $o cat_pr2 $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 $o f $== cat_pr1 q: cat_pr1 $o cat_pr2 $o f $== cat_pr1 $o cat_pr2 r: cat_pr2 $o cat_pr2 $o f $== cat_pr2 $o cat_pr2
cat_pr2 $o cat_pr2 $o f $==
cat_pr2 $o cat_pr2 $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 H0: HasBinaryProducts A
HasProducts Bool A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A
HasProducts Bool A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A
Product Bool x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A
A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: 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 H0: HasBinaryProducts A x: Bool -> A
forall (z : A) (f : foralli : Bool, z $-> x i)
(i : Bool),
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o
(fun (z0 : A) (f0 : foralli0 : Bool, z0 $-> x i0) =>
cat_binprod_corec (f0 true) (f0 false)) z f $== f i
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
cat_pr1 $o cat_binprod_corec (f true) (f false) $==
f true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
cat_pr2 $o cat_binprod_corec (f true) (f false) $==
f false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
cat_pr1 $o cat_binprod_corec (f true) (f false) $==
f true
exact (cat_binprod_beta_pr1 (f true) (f false)).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f: foralli : Bool, z $-> x i
cat_pr2 $o cat_binprod_corec (f true) (f false) $==
f false
exact (cat_binprod_beta_pr2 (f true) (f false)).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A
forall (z : A)
(fg : z $-> cat_binprod (x true) (x false)),
(foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o g) -> f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o g
f $== g
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) 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 H0: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) 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 H0: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) 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 H0: HasBinaryProducts A x: Bool -> A z: A f, g: z $-> cat_binprod (x true) (x false) p: foralli : Bool,
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o f $==
(funi0 : Bool =>
if i0 as b
return (cat_binprod (x true) (x false) $-> x b)
then cat_pr1
else cat_pr2) i $o g
cat_pr2 $o f $== cat_pr2 $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. This is useful for associating products in a canonical way. This leads to symmetry and associativity of binary products. *)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A
Product I x ->
Product J y ->
Product (I + J) (sum_ind (fun_ : I + J => A) x y)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A
Product I x ->
Product J y ->
Product (I + J) (sum_ind (fun_ : I + J => A) x y)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
Product (I + J) (sum_ind (fun_ : I + J => A) x y)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
A
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
foralli : I + J,
?cat_prod $-> sum_ind (fun_ : I + J => A) x y i
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
forallz : A,
(foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i) ->
z $-> ?cat_prod
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
forall (z : A) (fg : z $-> ?cat_prod),
(foralli : I + J, ?cat_pr i $o f $== ?cat_pr i $o g) ->
f $== g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
A
exact (cat_binprod (cat_prod I x) (cat_prod J y)).
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
foralli : I + J,
cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y i
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y i: I
cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y (inl i)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y j: J
cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y (inr j)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y i: I
cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y (inl i)
exact (cat_pr _ $o cat_pr1).
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y j: J
cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y (inr j)
exact (cat_pr _ $o cat_pr2).
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
forallz : A,
(foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i) ->
z $-> cat_binprod (cat_prod I x) (cat_prod J y)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_binprod (cat_prod I x) (cat_prod J y)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_prod I x
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_prod J y
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_prod I x
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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).
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i
z $-> cat_prod J y
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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).
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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 (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 => (funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) 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_prod_corec I (f0 o inl))
(cat_prod_corec J (f0 o inr))) z f $== f i
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i i: I
cat_pr i $o cat_pr1 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x))) $==
f (inl i)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x))) $==
f (inr j)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i i: I
cat_pr i $o cat_pr1 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x))) $==
f (inl i)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i i: I
cat_pr i $o
(cat_pr1 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x)))) $==
f (inl i)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f: foralli : I + J,
z $-> sum_ind (fun_ : I + J => A) x y i i: I
cat_pr i $o cat_prod_corec I (funx : I => f (inl x)) $==
f (inl i)
rapply cat_prod_beta.
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x))) $==
f (inr j)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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 $o
cat_binprod_corec
(cat_prod_corec I (funx : I => f (inl x)))
(cat_prod_corec J (funx : J => f (inr x)))) $==
f (inr j)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J 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 J (funx : J => f (inr x)) $==
f (inr j)
rapply cat_prod_beta.
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y
forall (z : A)
(fg : z $-> cat_binprod (cat_prod I x) (cat_prod J y)),
(foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 => (funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 => (funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g) -> f $== g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
f $== g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
cat_pr1 $o f $== cat_pr1 $o g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
cat_pr2 $o f $== cat_pr2 $o g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
cat_pr1 $o f $== cat_pr1 $o g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
foralli : I,
cat_pr i $o (cat_pr1 $o f) $==
cat_pr i $o (cat_pr1 $o g)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g i: I
cat_pr i $o (cat_pr1 $o f) $==
cat_pr i $o (cat_pr1 $o g)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
cat_pr2 $o f $== cat_pr2 $o g
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o g
foralli : J,
cat_pr i $o (cat_pr2 $o f) $==
cat_pr i $o (cat_pr2 $o g)
I, J, A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: I -> A y: J -> A p: Product I x q: Product J y z: A f, g: z $-> cat_binprod (cat_prod I x) (cat_prod J y) r: foralli : I + J,
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
end) i $o f $==
(funi0 : I + J =>
match
i0 as s
return
(cat_binprod (cat_prod I x) (cat_prod J y) $->
sum_ind (fun_ : I + J => A) x y s)
with
| inl i1 =>
(funi2 : I => cat_pr i2 $o cat_pr1) i1
| inr j => (funj0 : J => cat_pr j0 $o cat_pr2) j
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 H0: HasBinaryProducts A
Is0Bifunctor (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A
Is0Bifunctor (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A p:= has_products: forallx : Bool -> A, Product Bool x
Is0Bifunctor (funxy : A => cat_binprod x y)
exact (is0bifunctor_postcompose
(Bool_rec A) (funx => cat_prod Bool x (product:=p x))).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A
Is1Bifunctor (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A
Is1Bifunctor (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A p:= has_products: forallx : Bool -> A, Product Bool x
Is1Bifunctor (funxy : A => cat_binprod x y)
exact (is1bifunctor_postcompose
(Bool_rec A) (funx => cat_prod Bool x (product:=p x))).Defined.(** Binary products are functorial in each argument. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A y: A
Is0Functor (funx : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A y: A
Is0Functor (funx : A => cat_binprod x y)
exact (is0functor10_bifunctor (funxy => cat_binprod x y) y).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A y: A
Is1Functor (funx : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A y: A
Is1Functor (funx : A => cat_binprod x y)
exact (is1functor10_bifunctor _ y).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: A
Is0Functor (funy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: A
Is0Functor (funy : A => cat_binprod x y)
exact (is0functor01_bifunctor (funxy => cat_binprod x y) x).Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: A
Is1Functor (funy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasBinaryProducts A x: A
Is1Functor (funy : A => cat_binprod x y)
exact (is1functor01_bifunctor _ 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 $-> y => cat_binprod_corec 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 $-> y => cat_binprod_corec 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 $-> y,
(a $-> b) ->
(funf : z $-> y => cat_binprod_corec f g) a $->
(funf : z $-> y => cat_binprod_corec 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, f, f': z $-> y p: f $-> f'
(funf : z $-> y => cat_binprod_corec f g) f $->
(funf : z $-> y => cat_binprod_corec f 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 $-> x => cat_binprod_corec 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 $-> x => cat_binprod_corec 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 $-> x,
(a $-> b) ->
(fung : z $-> x => cat_binprod_corec f g) a $->
(fung : z $-> x => cat_binprod_corec 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, g, h: z $-> x p: g $-> h
(fung : z $-> x => cat_binprod_corec f g) g $->
(fung : z $-> x => cat_binprod_corec f g) 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 (funxy => cat_binprod x y) 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 (funxy => cat_binprod x y) 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 (funxy => cat_binprod x y) 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 (funxy => cat_binprod x y) 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 (funxy => cat_binprod x y) 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 (funxy => cat_binprod x y) f g $== g $o cat_pr2
:= cat_binprod_beta_pr2 _ _.(** *** Diagonal *)(** Annoyingly this doesn't follow directly from the general diagonal since [fun b => if b then x else x] is not definitionally equal to [fun _ => x]. *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x: A BinaryProduct0: BinaryProduct x x
x $-> cat_binprod' x x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A x: A BinaryProduct0: BinaryProduct x x
x $-> cat_binprod' x x
snapply cat_binprod_corec; exact (Id _).Defined.(** *** Lemmas about [cat_binprod_corec] *)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h $== cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h $== cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 $o
(fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h) $==
cat_pr1 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 $o
(fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h) $==
cat_pr2 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 $o
(fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h) $==
cat_pr1 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 $o fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h $==
cat_pr1 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 $o fmap01 (funxy : A => cat_binprod x y) z g $==
Id z $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
?Goal2 $o cat_binprod_corec f h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr1 $o cat_binprod_corec 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 HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 $o
(fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h) $==
cat_pr2 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 $o fmap01 (funxy : A => cat_binprod x y) z g $o
cat_binprod_corec f h $==
cat_pr2 $o cat_binprod_corec f (g $o h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
cat_pr2 $o fmap01 (funxy : A => cat_binprod x y) z g $==
?Goal2 $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
?Goal1 $o cat_binprod_corec f h $== ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> z g: x $-> y h: w $-> x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h $== cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h $== cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h) $==
cat_pr1 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h) $==
cat_pr2 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h) $==
cat_pr1 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 $o fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h $==
cat_pr1 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr1 $o fmap10 (funxy : A => cat_binprod x y) f z $==
?Goal3 $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
?Goal2 $o cat_binprod_corec g h $== ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h) $==
cat_pr2 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 $o fmap10 (funxy : A => cat_binprod x y) f z $o
cat_binprod_corec g h $==
cat_pr2 $o cat_binprod_corec (f $o g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 $o fmap10 (funxy : A => cat_binprod x y) f z $==
Id z $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
?Goal1 $o cat_binprod_corec g h $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: x $-> y g: w $-> x h: w $-> z
cat_pr2 $o cat_binprod_corec (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 HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i $==
cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i $==
cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 $o
(fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i) $==
cat_pr1 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 $o
(fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i) $==
cat_pr2 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 $o
(fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i) $==
cat_pr1 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 $o fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i $==
cat_pr1 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr1 $o fmap11 (funxy : A => cat_binprod x y) f g $==
?Goal3 $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: 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 h i $== ?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 $o
(fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i) $==
cat_pr2 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 $o fmap11 (funxy : A => cat_binprod x y) f g $o
cat_binprod_corec h i $==
cat_pr2 $o cat_binprod_corec (f $o h) (g $o i)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
cat_pr2 $o fmap11 (funxy : A => cat_binprod x y) f g $==
?Goal2 $o ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: 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 h i $== ?Goal3
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A HasBinaryProducts0: HasBinaryProducts A v, w, x, y, z: A f: w $-> y g: x $-> z h: v $-> w i: v $-> x
1-3: 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} `{!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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A x, y: A
cat_pr1 $o
(cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr1 $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y: A
cat_pr2 $o
(cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr2 $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y: A
cat_pr1 $o
(cat_binprod_swap x y $o cat_binprod_swap y x) $==
cat_pr1 $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y: A
cat_pr1 $o cat_binprod_swap x y $o
cat_binprod_swap y x $==
cat_pr1 $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y: A
cat_pr2 $o cat_binprod_swap y x $==
cat_pr1 $o Id (cat_binprod y x)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_binprod_swap b c $o cat_binprod_corec f g $==
cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_binprod_swap b c $o cat_binprod_corec f g $==
cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 $o
(cat_binprod_swap b c $o cat_binprod_corec f g) $==
cat_pr1 $o cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 $o
(cat_binprod_swap b c $o cat_binprod_corec f g) $==
cat_pr2 $o cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 $o
(cat_binprod_swap b c $o cat_binprod_corec f g) $==
cat_pr1 $o cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 $o cat_binprod_swap b c $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
?Goal0 $o cat_binprod_corec f g $== ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 $o cat_binprod_corec g f $-> ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 $o cat_binprod_corec 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 HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 $o
(cat_binprod_swap b c $o cat_binprod_corec f g) $==
cat_pr2 $o cat_binprod_corec g f
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 $o cat_binprod_swap b c $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
?Goal $o cat_binprod_corec f g $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr2 $o cat_binprod_corec g f $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, b, c: A f: a $-> b g: a $-> c
cat_pr1 $o cat_binprod_corec 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 (funxy : A => cat_binprod x y) f g
$== fmap11 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A
SymmetricBraiding (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
SymmetricBraiding (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Braiding (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
forallab : A,
?braiding_symmetricbraiding a b $o
?braiding_symmetricbraiding b a $==
Id ((funxy : A => cat_binprod x y) b a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Braiding (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
uncurry (funxy : A => cat_binprod x y) $=>
uncurry (flip (funxy : A => cat_binprod x y))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Is1Natural (uncurry (funxy : A => cat_binprod x y))
(uncurry (flip (funxy : A => cat_binprod x y)))
?alpha
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
uncurry (funxy : A => cat_binprod x y) $=>
uncurry (flip (funxy : A => cat_binprod x y))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y: A
uncurry (funxy : A => cat_binprod x y) (x, y) $->
uncurry (flip (funxy : A => cat_binprod x y)) (x, y)
exact (cat_binprod_swap x y).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Is1Natural (uncurry (funxy : A => cat_binprod x y))
(uncurry (flip (funxy : A => cat_binprod x y)))
((funa : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a)
(snd a))
:
uncurry (funxy : A => cat_binprod x y) $=>
uncurry (flip (funxy : A => cat_binprod x y)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 (funxy : A => cat_binprod x y)) f $==
fmap (uncurry (flip (funxy : A => cat_binprod x y)))
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 HasBinaryProducts0: HasBinaryProducts A a, b, c, d: A f: a $-> c g: b $-> d
cat_binprod_swap c d $o
fmap (uncurry (funxy : A => cat_binprod x y)) (f, g) $==
fmap (uncurry (flip (funxy : A => cat_binprod x y)))
(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 HasBinaryProducts0: HasBinaryProducts A
forallab : A,
{|
trans_nattrans :=
(funa0 : A * A =>
(funxy : A => cat_binprod_swap x y) (fst a0)
(snd a0))
:
uncurry (funxy : A => cat_binprod x y) $=>
uncurry (flip (funxy : A => cat_binprod x y));
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 (funxy : A => cat_binprod x y) $=>
uncurry (flip (funxy : A => cat_binprod x y));
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 ((funxy : A => cat_binprod x y) b a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o cat_binprod_twist x y z $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o cat_binprod_twist x y z $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o (cat_pr2 $o cat_binprod_twist x y z) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o fmap01 cat_binprod x cat_pr2 $== cat_pr1
napply cat_pr1_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o cat_binprod_twist x y z $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o cat_binprod_twist x y z $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o (cat_pr2 $o cat_binprod_twist x y z) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o fmap01 cat_binprod x cat_pr2 $==
cat_pr2 $o cat_pr2
napply cat_pr2_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $==
cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $==
cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o
(cat_binprod_twist x y z $o
cat_binprod_corec f (cat_binprod_corec g h)) $==
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $o
(cat_binprod_twist x y z $o
cat_binprod_corec f (cat_binprod_corec g h)) $==
cat_pr2 $o cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o
(cat_binprod_twist x y z $o
cat_binprod_corec f (cat_binprod_corec g h)) $==
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_twist x y z $o
cat_binprod_corec f (cat_binprod_corec g h) $==
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_twist x y z $==
?Goal3 $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal2 $o cat_binprod_corec f (cat_binprod_corec g h) $==
?Goal4
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal3 $o ?Goal4 $== ?Goal6
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec f h) $->
?Goal6
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $o cat_binprod_corec f (cat_binprod_corec g h) $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o ?Goal0 $== ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec f h) $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_corec g h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr1 $o cat_binprod_corec g (cat_binprod_corec 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 HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $o
(cat_binprod_twist x y z $o
cat_binprod_corec f (cat_binprod_corec g h)) $==
cat_pr2 $o cat_binprod_corec g (cat_binprod_corec f h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
?Goal $o cat_binprod_corec f (cat_binprod_corec g h) $==
cat_binprod_corec f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
fmap01 cat_binprod x cat_pr2 $o
cat_binprod_corec f (cat_binprod_corec g h) $==
cat_binprod_corec f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_corec f (cat_pr2 $o cat_binprod_corec g h) $==
cat_binprod_corec f h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $o cat_binprod_corec g h $== h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_pr2 $o cat_binprod_corec 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o cat_binprod_twist y x z $==
cat_pr1
napply cat_binprod_pr1_pr2_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_binprod_twist y x z $==
cat_pr1 $o cat_pr2
napply cat_binprod_pr1_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o
(cat_binprod_twist x y z $o cat_binprod_twist y x z) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o cat_binprod_twist y x z $==
cat_pr2 $o cat_pr2
napply cat_binprod_pr2_pr2_twist.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o
(cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 $o
(cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o
(cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o
(cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o ?Goal0 $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o (fmap11 cat_binprod g h $o cat_pr2) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o fmap11 cat_binprod g h $o cat_pr2 $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o fmap11 cat_binprod g h $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
?Goal0 $o cat_pr2 $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 $o cat_pr2 $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 $o cat_pr2 $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 $o cat_pr2 $==
?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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
g $o cat_pr1 $o cat_pr2 $==
g $o cat_pr1 $o cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr1 $o cat_binprod_twist a b c $->
cat_pr1 $o cat_pr2
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 $o
(cat_binprod_twist a' b' c' $o
fmap11 cat_binprod f (fmap11 cat_binprod g h)) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod f h $o cat_pr2 $o
cat_binprod_twist a b c
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap01 cat_binprod a' cat_pr2 $o
fmap11 cat_binprod f (fmap11 cat_binprod g h) $==
fmap11 cat_binprod f h $o fmap01 cat_binprod a cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 $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 HasBinaryProducts0: 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 HasBinaryProducts0: 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
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a', b)) cat_pr2) true $o f $==
f $o
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a, b)) cat_pr2) true
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a', b)) cat_pr2) false $o
fmap11 cat_binprod g h $==
h $o
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a, b)) cat_pr2) false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A a, a', b, b', c, c': A f: a $-> a' g: b $-> b' h: c $-> c'
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a', b)) cat_pr2) false $o
fmap11 cat_binprod g h $==
h $o
fmap (uncurry (Bool_rec A))
(fmap (funb : A => (a, b)) cat_pr2) false
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Associator cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
Associator cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A
SymmetricBraiding cat_binprod
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A
SymmetricBraiding cat_binprod
exact _.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod x y z $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod x y z $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr1 $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
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
(?Goal $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
(cat_pr2 $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1
napply cat_pr1_fmap01_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr1 $o associator_cat_binprod x y z $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr1 $o associator_cat_binprod x y z $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr1 $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 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o
(?Goal $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o
(cat_pr2 $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z))) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o cat_pr2 $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o (symmetricbraiding_binprod y z $o cat_pr2) $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o associator_cat_binprod x y z $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $o associator_cat_binprod x y z $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr2 $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 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o
(cat_binprod_twist x z y $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z)) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o cat_pr2 $o
fmap01 cat_binprod x (symmetricbraiding_binprod y z) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A x, y, z: A
cat_pr1 $o (symmetricbraiding_binprod y z $o cat_pr2) $==
cat_pr2 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $==
cat_binprod_corec (cat_binprod_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $==
cat_binprod_corec (cat_binprod_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $==
cat_binprod_corec (cat_binprod_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec g h) $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
cat_binprod_corec f
(symmetricbraiding_binprod y z $o
cat_binprod_corec g h) $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A w, x, y, z: A f: w $-> x g: w $-> y h: w $-> z
symmetricbraiding_binprod y z $o cat_binprod_corec g h $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f ?Goal0 $==
cat_binprod_corec (cat_binprod_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec h g) $==
cat_binprod_corec (cat_binprod_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 f (cat_binprod_corec h g) $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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_corec f g) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 h (cat_binprod_corec f g) $==
cat_binprod_corec (cat_binprod_corec 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
RightUnitor (funxy : A => cat_binprod x y) unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
RightUnitor (funxy : A => cat_binprod x y) unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
foralla : A,
flip (funxy : A => cat_binprod x y) unit a $<~>
idmap a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
Is1Natural
(flip (funxy : A => cat_binprod x y) unit) idmap
(funa : A => ?e a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
foralla : A,
flip (funxy : A => cat_binprod x y) unit a $<~>
idmap a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 $o
cat_binprod_corec (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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1 $== Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 $o
(cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1) $== cat_pr1 $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr2 $o
(cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1) $== cat_pr2 $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr1 $o
(cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1) $== cat_pr1 $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
Id a $o cat_pr1 $== cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
cat_pr2 $o
(cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1) $== cat_pr2 $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a: A
mor_terminal a unit $o cat_pr1 $==
cat_pr2 $o Id (cat_binprod a unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
Is1Natural
(flip (funxy : A => cat_binprod x y) unit) idmap
(funa : A =>
(funa0 : A =>
cate_adjointify cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit))
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit) $o cat_pr1)
(Id (cat_binprod a0 unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod a0 unit)
unit (mor_terminal a0 unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod a0 unit)
unit
(cat_pr2 $o Id (cat_binprod a0 unit)))))
:
flip (funxy : A => cat_binprod x y) unit a0 $<~>
idmap a0) a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
forall (aa' : A) (f : a $-> a'),
(funa0 : A =>
cate_fun
((funa1 : A =>
cate_adjointify cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit))
(cat_binprod_beta_pr1 (Id a1)
(mor_terminal a1 unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit) $o cat_pr1)
(Id (cat_binprod a1 unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id a1)
(mor_terminal a1 unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id a1)
(mor_terminal a1 unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod a1 unit)
unit (mor_terminal a1 unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod a1 unit)
unit
(cat_pr2 $o Id (cat_binprod a1 unit)))))
:
flip (funxy : A => cat_binprod x y) unit a1 $<~>
idmap a1) a0)) a' $o
fmap (flip (funxy : A => cat_binprod x y) unit) f $==
fmap idmap f $o
(funa0 : A =>
cate_fun
((funa1 : A =>
cate_adjointify cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit))
(cat_binprod_beta_pr1 (Id a1)
(mor_terminal a1 unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit) $o cat_pr1)
(Id (cat_binprod a1 unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id a1)
(mor_terminal a1 unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a1)
(mor_terminal a1 unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id a1)
(mor_terminal a1 unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod a1 unit)
unit (mor_terminal a1 unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod a1 unit)
unit
(cat_pr2 $o Id (cat_binprod a1 unit)))))
:
flip (funxy : A => cat_binprod x y) unit a1 $<~>
idmap a1) a0)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
(funa : A =>
cate_fun
((funa0 : A =>
cate_adjointify cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit))
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit) $o cat_pr1)
(Id (cat_binprod a0 unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod a0 unit)
unit (mor_terminal a0 unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod a0 unit)
unit
(cat_pr2 $o Id (cat_binprod a0 unit)))))
:
flip (funxy : A => cat_binprod x y) unit a0 $<~>
idmap a0) a)) b $o
fmap (flip (funxy : A => cat_binprod x y) unit) f $==
fmap idmap f $o
(funa : A =>
cate_fun
((funa0 : A =>
cate_adjointify cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit))
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit) $o cat_pr1)
(Id (cat_binprod a0 unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id a0)
(mor_terminal a0 unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id a0)
(mor_terminal a0 unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod a0 unit)
unit (mor_terminal a0 unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod a0 unit)
unit
(cat_pr2 $o Id (cat_binprod a0 unit)))))
:
flip (funxy : A => cat_binprod x y) unit a0 $<~>
idmap a0) a)) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cate_adjointify cat_pr1
(cat_binprod_corec (Id b) (mor_terminal b unit))
(cat_binprod_beta_pr1 (Id b) (mor_terminal b unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id b) (mor_terminal b unit) $o
cat_pr1) (Id (cat_binprod b unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id b)
(mor_terminal b unit)) cat_pr1 $@
(cat_binprod_beta_pr1 (Id b)
(mor_terminal b unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec (Id b)
(mor_terminal b unit)) cat_pr2 $@
(cat_binprod_beta_pr2 (Id b)
(mor_terminal b unit) $@R cat_pr1)) $@
((mor_terminal_unique (cat_binprod b unit) unit
(mor_terminal b unit $o cat_pr1))^$ $@
mor_terminal_unique (cat_binprod b unit) unit
(cat_pr2 $o Id (cat_binprod b unit))))) $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
?Goal $o
fmap (flip (funxy : A => cat_binprod x y) unit) f $==
fmap idmap f $o ?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cate_adjointify cat_pr1
(cat_binprod_corec (Id a) (mor_terminal a unit))
(cat_binprod_beta_pr1 (Id a) (mor_terminal a unit))
(cat_binprod_eta_pr
(cat_binprod_corec (Id a) (mor_terminal a unit) $o
cat_pr1) (Id (cat_binprod a unit))
((cat_assoc_opp cat_pr1
(cat_binprod_corec
(Id a) (mor_terminal a unit)) cat_pr1 $@
(cat_binprod_beta_pr1
(Id a) (mor_terminal a unit) $@R cat_pr1)) $@
(cat_idl cat_pr1 $@ (cat_idr cat_pr1)^$))
((cat_assoc_opp cat_pr1
(cat_binprod_corec
(Id a) (mor_terminal a unit)) cat_pr2 $@
(cat_binprod_beta_pr2
(Id a) (mor_terminal a unit) $@R cat_pr1)) $@
((mor_terminal_unique
(cat_binprod a unit) unit
(mor_terminal a unit $o cat_pr1))^$ $@
mor_terminal_unique
(cat_binprod a unit) unit
(cat_pr2 $o Id (cat_binprod a unit))))) $->
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A f: a $-> b
cat_pr1 $o
fmap (flip (funxy : A => cat_binprod x y) unit) f $==
fmap idmap f $o cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
TriangleIdentity (funxy : A => cat_binprod x y) unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
TriangleIdentity (funxy : A => cat_binprod x y) unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
forallab : A,
fmap01 (funxy : A => cat_binprod x y) a
(right_unitor_binprod b) $==
symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 (funxy : A => cat_binprod x y) a
(right_unitor_binprod b) $==
symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 (funxy : A => cat_binprod x y) a ?Goal $==
symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
fmap01 (funxy : A => cat_binprod x y) a cat_pr1 $==
symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) a cat_pr1 $==
cat_pr1 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) a cat_pr1 $==
cat_pr2 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) a cat_pr1 $==
cat_pr1 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $==
cat_pr1 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $==
?Goal1 $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o symmetricbraiding_binprod b a $-> ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $==
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $==
?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
?Goal0 $o cat_binprod_twist a b unit $== cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o cat_pr2 $o cat_binprod_twist a b unit $==
cat_pr1
napply cat_binprod_pr1_pr2_twist.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) a cat_pr1 $==
cat_pr2 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o cat_pr2 $==
cat_pr2 $o
(symmetricbraiding_binprod b a $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1) $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o cat_pr2 $==
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $o
cat_binprod_twist a b unit
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) b cat_pr1 $==
?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
?Goal $o cat_binprod_twist a b unit $==
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b: A
cat_pr1 $o cat_binprod_twist a b unit $==
cat_pr1 $o cat_pr2
napply cat_binprod_beta_pr1.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
PentagonIdentity (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
PentagonIdentity (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: 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 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: 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 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 $o
(?Goal2 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
fmap10 (funxy : A => cat_binprod x y)
(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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 $o
(associator_cat_binprod a b c $o cat_pr1 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
(cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 $o
(cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
(cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
(cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr1 $o
(cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr1 $o cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
?Goal2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal2 $==
?Goal5 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod a b c $->
?Goal5
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $==
cat_pr1 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $==
cat_pr1 $o cat_pr1 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal3 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d) $-> cat_pr1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d) $-> cat_pr1
napply cat_pr1_fmap01_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
(cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 $o cat_pr1 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
?Goal1 $==
?Goal4 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr2 $==
cat_pr1 $o cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr2 $==
cat_pr1 $o cat_pr2 $o cat_pr1 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr2 $==
cat_pr1 $o ?Goal4 $o ?Goal3 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr2 $==
cat_pr1 $o cat_pr1 $o cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o
(associator_cat_binprod b c d $o cat_pr2) $->
cat_pr1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod b c d $==
cat_pr1
napply cat_pr1_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: 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 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o cat_pr2 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 $o cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
(cat_pr2 $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o
(cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(?Goal1 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o
fmap10 (funxy : A => cat_binprod x y)
(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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(associator_cat_binprod a b c $o cat_pr1 $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(associator_cat_binprod a b c $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
?Goal1 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d)))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(?Goal1 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(cat_pr1 $o cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr1 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(cat_pr1 $o (associator_cat_binprod b c d $o cat_pr2))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr1 $o associator_cat_binprod b c d $->
cat_pr1 $o cat_pr2
napply cat_pr2_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
(associator_cat_binprod (cat_binprod a b) c d $o
associator_cat_binprod a b (cat_binprod c d)) $==
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o cat_pr2 $o
associator_cat_binprod a b (cat_binprod c d) $==
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(associator_cat_binprod a b c) d $o
associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o (cat_pr2 $o cat_pr2) $==
?Goal0 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o
fmap10 (funxy : A => cat_binprod x y)
(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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(associator_cat_binprod a (cat_binprod b c) d $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o (cat_pr2 $o cat_pr2) $==
?Goal2 $o
(?Goal1 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o (cat_pr2 $o cat_pr2) $==
cat_pr2 $o
(cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) a
(associator_cat_binprod b c d))
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c, d: A
cat_pr2 $o associator_cat_binprod b c d $->
cat_pr2 $o cat_pr2
napply cat_pr2_associator_binprod.Defined.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
HexagonIdentity (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit
HexagonIdentity (funxy : A => cat_binprod x y)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
symmetricbraiding_binprod b a $o cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)))) $==
cat_pr1 $o
(cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)))) $==
cat_pr2 $o
(cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)))) $==
cat_pr1 $o
(cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o symmetricbraiding_binprod b a $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal1 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
?Goal4 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr1 $o associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal1 $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr2 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o ?Goal4 $== ?Goal5
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o symmetricbraiding_binprod c a $== ?Goal1
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o associator_cat_binprod b c a $->
?Goal1 $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o symmetricbraiding_binprod c a $== cat_pr2
napply cat_binprod_beta_pr1.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)))) $==
cat_pr2 $o
(cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o symmetricbraiding_binprod b a $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o symmetricbraiding_binprod b a $== ?Goal0
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal0 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
(cat_pr1 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr1 $o cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr1 $o cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal0 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr1 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr1 $o cat_pr1 $o associator_cat_binprod b c a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr1 $o cat_pr1 $o associator_cat_binprod b c a $->
cat_pr1
napply cat_pr1_pr1_associator_binprod.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a))) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)) $==
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
fmap10 (funxy : A => cat_binprod x y)
(symmetricbraiding_binprod b a) c $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
?Goal $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) 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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
(associator_cat_binprod b a c $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a)) $==
cat_pr2 $o cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $==
cat_pr2 $o cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o
fmap01 (funxy : A => cat_binprod x y) b
(symmetricbraiding_binprod c a) $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o ?Goal $==
cat_pr2 $o
(cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o (symmetricbraiding_binprod c a $o cat_pr2) $==
cat_pr2 $o
(cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o symmetricbraiding_binprod c a $== ?Goal
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o ?Goal2 $o associator_cat_binprod b c a $->
?Goal $o cat_pr2
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $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 HasBinaryProducts0: HasBinaryProducts A unit: A IsTerminal0: IsTerminal unit a, b, c: A
cat_pr2 $o cat_pr1 $o associator_cat_binprod b c a $->
cat_pr1 $o cat_pr2
napply cat_pr2_pr1_associator_binprod.Defined.#[export] Instanceismonoidal_cat_binprod
: IsMonoidal A (funxy => cat_binprod x y) unit
:= {}.#[export] Instanceissymmetricmonoidal_cat_binprod
: IsSymmetricMonoidal A (funxy => cat_binprod x y) unit
:= {}.EndAssociativity.(** *** 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. *)
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.(** Assuming [Funext], [Type] has all products. *)
H: Funext
HasAllProducts Type
H: Funext
HasAllProducts Type
H: Funext I: Type x: I -> Type
Product I 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: foralli : I, x i
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 A: Type f: foralli : I, A $-> x i a: A 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 (A : Type) (f0 : foralli0 : I, A $-> x i0) =>
(fun (a : A) (i0 : I) => f0 i0 a)
:
A $-> (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 A: Type f, g: A $-> (foralli : I, x i) p: foralli : I,
(funi0 : I =>
(funf : foralli1 : I, x i1 => f i0)
:
(foralli1 : I, x i1) $-> x i0) i $o f $==
(funi0 : I =>
(funf : foralli1 : I, x i1 => f i0)
:
(foralli1 : I, x i1) $-> x i0) i $o g a: A