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]
Require Import WildCat.Core WildCat.Bifunctor WildCat.Prod WildCat.Equiv.Require Import WildCat.NatTrans WildCat.Opposite.(** * Monoidal Categories *)(** In this file we define monoidal categories and symmetric monoidal categories. *)(** ** Typeclasses for common diagrams *)(** TODO: These should eventually be moved to a separate file in WildCat and used in other places. They can be thought of as a wildcat generalization of the classes in canonical_names.v *)(** *** Associators *)ClassAssociator {A : Type} `{HasEquivs A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F}
:= associator_uncurried
: NatEquiv (fun '(a, b, c) => F a (F b c)) (fun '(a, b, c) => F (F a b) c).Arguments associator_uncurried {A _ _ _ _ _ F _ _ _}.Definitionassociator {A : Type} `{HasEquivs A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F}
: forallabc, F a (F b c) $<~> F (F a b) c
:= funabc => associator_uncurried (a, b, c).Coercionassociator : Associator >-> Funclass.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
Associator F
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
Associator F
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
foralla : A * A * A,
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F a0 (F b c)) a $<~>
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F (F a0 b) c) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funa : A * A * A => ?e a)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
foralla : A * A * A,
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F a0 (F b c)) a $<~>
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F (F a0 b) c) a
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c) a, b, c: A
(letx := (a, b, c) inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c)) $<~>
(letx := (a, b, c) inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
exact (associator a b c).
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F associator: forallabc : A,
F a (F b c) $<~> F (F a b) c isnat_assoc: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in associator a b c)
Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funa : A * A * A =>
(funa0 : A * A * A =>
(funfst : A * A =>
(funa1bc : A => associator a1 b c)
(Overture.fst fst) (snd fst)) (fst a0) (snd a0))
a)
exact isnat_assoc.Defined.(** *** Unitors *)ClassLeftUnitor {A : Type} `{HasEquivs A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F} (unit : A)
(** A natural isomorphism [left_unitor] witnessing the left unit law of [F]. *)
:= left_unitor : NatEquiv (F unit) idmap.Coercionleft_unitor : LeftUnitor >-> NatEquiv.Arguments left_unitor {A _ _ _ _ _ F _ _ unit _}.ClassRightUnitor {A : Type} `{HasEquivs A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F} (unit : A)
(** A natural isomorphism [right_unitor] witnessing the right unit law of [F]. *)
:= right_unitor : NatEquiv (flip F unit) idmap.Coercionright_unitor : RightUnitor >-> NatEquiv.Arguments right_unitor {A _ _ _ _ _ F _ _ unit _}.(** *** Triangle and Pentagon identities *)ClassTriangleIdentity {A : Type} `{HasEquivs A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F}
(unit : A) `{!LeftUnitor F unit, !RightUnitor F unit}
(** The triangle identity for an associator and unitors. *)
:= triangle_identity a b
: fmap01 F a (left_unitor b)
$== fmap10 F (right_unitor a) b $o (associator (F := F) a unit b).Coerciontriangle_identity : TriangleIdentity >-> Funclass.Arguments triangle_identity {A _ _ _ _ _} F {_ _ _} unit {_}.ClassPentagonIdentity {A : Type} `{HasEquivs A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F}
(** The pentagon identity for an associator. *)
:= pentagon_identity a b c d
: associator (F a b) c d $o associator a b (F c d)
$== fmap10 F (associator a b c) d $o associator a (F b c) d
$o fmap01 F a (associator b c d).Coercionpentagon_identity : PentagonIdentity >-> Funclass.Arguments pentagon_identity {A _ _ _ _ _} F {_ _ _}.(** *** Braiding *)ClassBraiding {A : Type} `{Is1Cat A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F}
:= braid_uncurried : NatTrans (uncurry F) (uncurry (flip F)).Arguments braid_uncurried {A _ _ _ _ F _ _ _}.Definitionbraid {A : Type} `{Is1Cat A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, !Braiding F}
: forallab, F a b $-> F b a
:= funab => braid_uncurried (a, b).Coercionbraid : Braiding >-> Funclass.ClassSymmetricBraiding {A : Type} `{Is1Cat A}
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F} := {
braiding_symmetricbraiding :: Braiding F;
braid_braid : forallab, braid a b $o braid b a $== Id (F b a);
}.(** We could have used [::>] in [braiding_symmetricbraiding] instead however due to bug https://github.com/coq/coq/issues/18971 the coercion isn't registered, so we have to register it manually instead. *)Coercionbraiding_symmetricbraiding : SymmetricBraiding >-> Braiding.Arguments braid_braid {A _ _ _ _ F _ _ _} a b.(** *** Hexagon identity *)ClassHexagonIdentity {A : Type} `{HasEquivs A}
(F : A -> A -> A)
`{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F, !Braiding F}
(** The hexagon identity for an associator and a braiding. *)
:= hexagon_identity a b c
: fmap10 F (braid b a) c $o associator b a c $o fmap01 F b (braid c a)
$== associator a b c $o braid (F b c) a $o associator b c a.Coercionhexagon_identity : HexagonIdentity >-> Funclass.Arguments hexagon_identity {A _ _ _ _ _} F {_ _}.(** ** Monoidal Categories *)(** A monoidal 1-category is a 1-category with equivalences together with the following: *)ClassIsMonoidal (A : Type) `{HasEquivs A}
(** It has a binary operation [cat_tensor] called the tensor product. *)
(cat_tensor : A -> A -> A)
(** It has a unit object [cat_tensor_unit] called the tensor unit. *)
(cat_tensor_unit : A)
(** These all satisfy the following properties: *)
:= {
(** A [cat_tensor] is a 1-bifunctor. *)
is0bifunctor_cat_tensor :: Is0Bifunctor cat_tensor | 10;
is1bifunctor_cat_tensor :: Is1Bifunctor cat_tensor | 10;
(** A natural isomorphism [associator] witnessing the associativity of the tensor product. *)
cat_tensor_associator :: Associator cat_tensor;
(** A natural isomorphism [left_unitor] witnessing the left unit law. *)
cat_tensor_left_unitor :: LeftUnitor cat_tensor cat_tensor_unit;
(** A natural isomorphism [right_unitor] witnessing the right unit law. *)
cat_tensor_right_unitor :: RightUnitor cat_tensor cat_tensor_unit;
(** The triangle identity. *)
cat_tensor_triangle_identity :: TriangleIdentity cat_tensor cat_tensor_unit;
(** The pentagon identity. *)
cat_tensor_pentagon_identity :: PentagonIdentity cat_tensor;
}.(** TODO: Braided monoidal categories *)(** ** Symmetric Monoidal Categories *)(** A symmetric monoidal 1-category is a 1-category with equivalences together with the following: *)ClassIsSymmetricMonoidal (A : Type) `{HasEquivs A}
(** A binary operation [cat_tensor] called the tensor product. *)
(cat_tensor : A -> A -> A)
(** A unit object [cat_tensor_unit] called the tensor unit. *)
(cat_tensor_unit : A)
:= {
(** A monoidal structure with [cat_tensor] and [cat_tensor_unit]. *)
issymmetricmonoidal_ismonoidal :: IsMonoidal A cat_tensor cat_tensor_unit;
(** A natural transformation [braid] witnessing the symmetry of the tensor product such that [braid] is its own inverse. *)
cat_symm_tensor_braiding :: SymmetricBraiding cat_tensor;
(** The hexagon identity. *)
cat_symm_tensor_hexagon :: HexagonIdentity cat_tensor;
}.(** *** Theory about [Associator] *)SectionAssociator.Context {A : Type} `{HasEquivs A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, assoc : !Associator F}.
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x', y, y', z, z': A f: x $-> x' g: y $-> y' h: z $-> z'
assoc x' y' z' $o fmap11 F f (fmap11 F g h) $==
fmap11 F (fmap11 F f g) h $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x', y, y', z, z': A f: x $-> x' g: y $-> y' h: z $-> z'
assoc x' y' z' $o fmap11 F f (fmap11 F g h) $==
fmap11 F (fmap11 F f g) h $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x', y, y', z, z': A f: x $-> x' g: y $-> y' h: z $-> z' asso: foralla : A * A * A,
(letx := a inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F a0 (F b c)) $<~>
(letx := a inletfst := fst x inletc := snd x inletfst0 := fst inleta0 := Overture.fst fst0 inletb := snd fst0 in F (F a0 b) c) nat: Is1Natural
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F a (F b c))
(funpat : A * A * A =>
letx := pat inletfst := fst x inletc := snd x inletfst0 := fst inleta := Overture.fst fst0 inletb := snd fst0 in F (F a b) c)
(funa : A * A * A => asso a)
{|
cat_equiv_natequiv := asso;
is1natural_natequiv := nat
|} x' y' z' $o fmap11 F f (fmap11 F g h) $==
fmap11 F (fmap11 F f g) h $o
{|
cat_equiv_natequiv := asso;
is1natural_natequiv := nat
|} x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
assoc x' y z $o fmap10 F f (F y z) $==
fmap10 F (fmap10 F f y) z $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
assoc x' y z $o fmap10 F f (F y z) $==
fmap10 F (fmap10 F f y) z $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
?Goal $-> fmap10 F f (F y z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
assoc x' y z $o ?Goal $== ?Goal2 $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
?Goal2 $== fmap10 F (fmap10 F f y) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
fmap11 F f (fmap11 F (Id y) (Id z)) $->
fmap10 F f (F y z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
fmap11 F (fmap11 F f (Id y)) (Id z) $==
fmap10 F (fmap10 F f y) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
fmap11 F f (fmap11 F (Id y) (Id z)) $->
fmap10 F f (F y z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, x': A f: x $-> x' y, z: A
fmap11 F (fmap11 F f (Id y)) (Id z) $==
fmap10 F (fmap10 F f y) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
assoc x y' z $o fmap01 F x (fmap10 F g z) $==
fmap10 F (fmap01 F x g) z $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
assoc x y' z $o fmap01 F x (fmap10 F g z) $==
fmap10 F (fmap01 F x g) z $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
?Goal $-> fmap01 F x (fmap10 F g z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
assoc x y' z $o ?Goal $== ?Goal2 $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
?Goal2 $== fmap10 F (fmap01 F x g) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
fmap11 F (Id x) (fmap11 F g (Id z)) $->
fmap01 F x (fmap10 F g z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
fmap11 F (fmap11 F (Id x) g) (Id z) $==
fmap10 F (fmap01 F x g) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
fmap11 F (Id x) (fmap11 F g (Id z)) $->
fmap01 F x (fmap10 F g z)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, y': A g: y $-> y' z: A
fmap11 F (fmap11 F (Id x) g) (Id z) $==
fmap10 F (fmap01 F x g) z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
assoc x y z' $o fmap01 F x (fmap01 F y h) $==
fmap01 F (F x y) h $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
assoc x y z' $o fmap01 F x (fmap01 F y h) $==
fmap01 F (F x y) h $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
?Goal $-> fmap01 F x (fmap01 F y h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
assoc x y z' $o ?Goal $== ?Goal2 $o assoc x y z
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
?Goal2 $== fmap01 F (F x y) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
fmap11 F (Id x) (fmap11 F (Id y) h) $->
fmap01 F x (fmap01 F y h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
fmap11 F (fmap11 F (Id x) (Id y)) h $==
fmap01 F (F x y) h
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
fmap11 F (Id x) (fmap11 F (Id y) h) $->
fmap01 F x (fmap01 F y h)
A: Type IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A F: A -> A -> A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F assoc: Associator F x, y, z, z': A h: z $-> z'
fmap11 F (fmap11 F (Id x) (Id y)) h $==
fmap01 F (F x y) h
exact (fmap21 _ (fmap11_id _ _ _) _ $@ fmap01_is_fmap11 F _ _).Defined.#[export] Instanceassociator_op : Associator (A:=A^op) F
:= natequiv_inverse (natequiv_op assoc).EndAssociator.Definitionassociator_op' {A : Type} `{HasEquivs A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, assoc : !Associator (A:=A^op) F}
: Associator F
:= associator_op (A:=A^op) (assoc := assoc).(** ** Theory about [LeftUnitor] and [RightUnitor] *)SectionLeftUnitor.Context {A : Type} `{HasEquivs A} {F : A -> A -> A} (unit : A)
`{!Is0Bifunctor F, !Is1Bifunctor F, !LeftUnitor F unit, !RightUnitor F unit}.#[export] Instanceleft_unitor_op : LeftUnitor (A:=A^op) F unit
:= natequiv_inverse (natequiv_op left_unitor).#[export] Instanceright_unitor_op : RightUnitor (A:=A^op) F unit
:= natequiv_inverse (natequiv_op right_unitor).EndLeftUnitor.(** ** Theory about [Braiding] *)Instancebraiding_op {A : Type} `{HasEquivs A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, braid : !Braiding F}
: Braiding (A:=A^op) F
:= nattrans_op (nattrans_flip braid).Definitionbraiding_op' {A : Type} `{HasEquivs A} {F : A -> A -> A}
`{!Is0Bifunctor F, !Is1Bifunctor F, braid : !Braiding (A:=A^op) F}
: Braiding F
:= braiding_op (A:=A^op) (braid := braid).(** ** Theory about [SymmetricBraid] *)SectionSymmetricBraid.Context {A : Type} {F : A -> A -> A} `{SymmetricBraiding A F, !HasEquivs A}.(** [braid] is its own inverse and therefore an equivalence. *)Instancecatie_braidab : CatIsEquiv (braid a b)
:= catie_adjointify (braid a b) (braid b a) (braid_braid a b) (braid_braid b a).(** [braide] is the bundled equivalence whose underlying map is [braid]. *)Definitionbraideab
: F a b $<~> F b a
:= Build_CatEquiv (braid a b).
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a
H0 a b $o f $== g -> f $== H0 b a $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a
H0 a b $o f $== g -> f $== H0 b a $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a p: H0 a b $o f $== g
f $== H0 b a $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a p: H0 a b $o f $== g
braide a b $o f $== braide a b $o (H0 b a $o g)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a p: H0 a b $o f $== g
g $== braide a b $o H0 b a $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a p: H0 a b $o f $== g
braide a b $o H0 b a $-> Id (F b a)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a p: H0 a b $o f $== g
H0 a b $o H0 b a $== Id (F b a)
apply braid_braid.Defined.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c
f $o H0 a b $== g -> f $== g $o H0 b a
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c
f $o H0 a b $== g -> f $== g $o H0 b a
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $== g $o H0 b a
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o braide a b $== g $o H0 b a $o braide a b
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o braide a b $== g $o (H0 b a $o braide a b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o braide a b $== g $o ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
H0 b a $o H0 a b $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o braide a b $== g $o Id (F a b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
braide a b $== ?Goal
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o ?Goal $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c p: f $o H0 a b $== g
f $o H0 a b $== g
exact p.Defined.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a
f $== H0 b a $o g -> H0 a b $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: c $-> F a b g: c $-> F b a
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c
f $== g $o H0 b a -> f $o H0 a b $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: F b a $-> c g: F a b $-> c
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b)
fmap01 F a (H0 b c) $o f $== g ->
f $== fmap01 F a (H0 c b) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b)
fmap01 F a (H0 b c) $o f $== g ->
f $== fmap01 F a (H0 c b) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
f $== fmap01 F a (H0 c b) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
emap01 F a (braide b c) $o f $==
emap01 F a (braide b c) $o (fmap01 F a (H0 c b) $o g)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
emap01 F a (braide b c) $o f $==
emap01 F a (braide b c) $o fmap01 F a (H0 c b) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
emap01 F a (braide b c) $o f $== ?Goal0 $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
?Goal0 $==
emap01 F a (braide b c) $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
?Goal0 $==
emap01 F a (braide b c) $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
?Goal0 $== ?Goal2 $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
emap01 F a (braide b c) $-> ?Goal2
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
?Goal0 $==
fmap01 F a (braide b c) $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
Id (F c b) $== braide b c $o H0 c b
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
braide b c $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
?Goal0 $o H0 c b $== Id (F c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
H0 b c $o H0 c b $== Id (F c b)
apply braid_braid.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
emap01 F a (braide b c) $o f $== Id (F a (F c b)) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b) p: fmap01 F a (H0 b c) $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d
f $o fmap01 F a (H0 b c) $== g ->
f $== g $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d
f $o fmap01 F a (H0 b c) $== g ->
f $== g $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
f $== g $o fmap01 F a (H0 c b)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
f $o emap01 F a (braide b c) $==
g $o fmap01 F a (H0 c b) $o emap01 F a (braide b c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
f $o emap01 F a (braide b c) $==
g $o (fmap01 F a (H0 c b) $o emap01 F a (braide b c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
f $o emap01 F a (braide b c) $== g $o ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
?Goal0 $==
fmap01 F a (H0 c b) $o emap01 F a (braide b c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
?Goal0 $==
fmap01 F a (H0 c b) $o emap01 F a (braide b c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
fmap01 F a (H0 c b) $o ?Goal2 $-> ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
emap01 F a (braide b c) $-> ?Goal2
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
fmap01 F a (H0 c b) $o fmap01 F a (braide b c) $->
?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
H0 c b $o braide b c $== Id (F b c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
braide b c $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
H0 c b $o ?Goal0 $== Id (F b c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
H0 c b $o H0 b c $== Id (F b c)
apply braid_braid.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
f $o emap01 F a (braide b c) $== g $o Id (F a (F b c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d p: f $o fmap01 F a (H0 b c) $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b)
f $== fmap01 F a (H0 c b) $o g ->
fmap01 F a (H0 b c) $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: d $-> F a (F b c) g: d $-> F a (F c b)
f $== fmap01 F a (H0 c b) $o g ->
fmap01 F a (H0 b c) $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d
f $== g $o fmap01 F a (H0 c b) ->
f $o fmap01 F a (H0 b c) $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: F a (F c b) $-> d g: F a (F b c) $-> d
f $== g $o fmap01 F a (H0 c b) ->
f $o fmap01 F a (H0 b c) $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c))
fmap01 F a (fmap01 F b (H0 c d)) $o f $== g ->
f $== fmap01 F a (fmap01 F b (H0 d c)) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c))
fmap01 F a (fmap01 F b (H0 c d)) $o f $== g ->
f $== fmap01 F a (fmap01 F b (H0 d c)) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
f $== fmap01 F a (fmap01 F b (H0 d c)) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $o f $==
emap01 F a (emap01 F b (braide c d)) $o
(fmap01 F a (fmap01 F b (H0 d c)) $o g)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $o f $==
emap01 F a (emap01 F b (braide c d)) $o
fmap01 F a (fmap01 F b (H0 d c)) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $o f $==
?Goal0 $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
?Goal0 $==
emap01 F a (emap01 F b (braide c d)) $o
fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
?Goal0 $==
emap01 F a (emap01 F b (braide c d)) $o
fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
?Goal0 $== ?Goal2 $o fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $-> ?Goal2
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
?Goal0 $==
fmap01 F a (emap01 F b (braide c d)) $o
fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
Id (F b (F d c)) $==
emap01 F b (braide c d) $o fmap01 F b (H0 d c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
Id (F b (F d c)) $== ?Goal1 $o fmap01 F b (H0 d c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F b (braide c d) $-> ?Goal1
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
Id (F b (F d c)) $==
fmap01 F b (braide c d) $o fmap01 F b (H0 d c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
Id (F d c) $== braide c d $o H0 d c
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
braide c d $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
?Goal0 $o H0 d c $== Id (F d c)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
H0 c d $o H0 d c $== Id (F d c)
apply braid_braid.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $o f $==
Id (F a (F b (F d c))) $o g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F a (emap01 F b (braide c d)) $==
fmap01 F a (fmap01 F b (H0 c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
emap01 F b (braide c d) $== fmap01 F b (H0 c d)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c)) p: fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
braide c d $== H0 c d
apply cate_buildequiv_fun.Defined.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e
f $o fmap01 F a (fmap01 F b (H0 c d)) $== g ->
f $== g $o fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e
f $o fmap01 F a (fmap01 F b (H0 c d)) $== g ->
f $== g $o fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
f $== g $o fmap01 F a (fmap01 F b (H0 d c))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
f $o emap01 F a (emap01 F b (braide c d)) $==
g $o fmap01 F a (fmap01 F b (H0 d c)) $o
emap01 F a (emap01 F b (braide c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
f $o emap01 F a (emap01 F b (braide c d)) $==
g $o
(fmap01 F a (fmap01 F b (H0 d c)) $o
emap01 F a (emap01 F b (braide c d)))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
f $o emap01 F a (emap01 F b (braide c d)) $==
g $o ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
?Goal0 $==
fmap01 F a (fmap01 F b (H0 d c)) $o
emap01 F a (emap01 F b (braide c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
?Goal0 $==
fmap01 F a (fmap01 F b (H0 d c)) $o
emap01 F a (emap01 F b (braide c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
fmap01 F a (fmap01 F b (H0 d c)) $o ?Goal2 $-> ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
emap01 F a (emap01 F b (braide c d)) $-> ?Goal2
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
fmap01 F a (fmap01 F b (H0 d c)) $o
fmap01 F a (emap01 F b (braide c d)) $-> ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
fmap01 F b (H0 d c) $o emap01 F b (braide c d) $==
Id (F b (F c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
emap01 F b (braide c d) $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
fmap01 F b (H0 d c) $o ?Goal0 $== Id (F b (F c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
fmap01 F b (H0 d c) $o fmap01 F b (braide c d) $==
Id (F b (F c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
H0 d c $o braide c d $== Id (F c d)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
braide c d $== ?Goal0
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
H0 d c $o ?Goal0 $== Id (F c d)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
H0 d c $o H0 c d $== Id (F c d)
apply braid_braid.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
f $o emap01 F a (emap01 F b (braide c d)) $==
g $o Id (F a (F b (F c d)))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
emap01 F a (emap01 F b (braide c d)) $==
fmap01 F a (fmap01 F b (H0 c d))
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
emap01 F b (braide c d) $== fmap01 F b (H0 c d)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e p: f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
braide c d $== H0 c d
apply cate_buildequiv_fun.Defined.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c))
f $== fmap01 F a (fmap01 F b (H0 d c)) $o g ->
fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: e $-> F a (F b (F c d)) g: e $-> F a (F b (F d c))
f $== fmap01 F a (fmap01 F b (H0 d c)) $o g ->
fmap01 F a (fmap01 F b (H0 c d)) $o f $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e
f $== g $o fmap01 F a (fmap01 F b (H0 d c)) ->
f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d, e: A f: F a (F b (F d c)) $-> e g: F a (F b (F c d)) $-> e
f $== g $o fmap01 F a (fmap01 F b (H0 d c)) ->
f $o fmap01 F a (fmap01 F b (H0 c d)) $== g
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: a $-> c g: b $-> d
H0 c d $o fmap11 F f g $== fmap11 F g f $o H0 a b
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c, d: A f: a $-> c g: b $-> d
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: a $-> b
H0 b c $o fmap10 F f c $== fmap01 F c f $o H0 a c
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: a $-> b
H0 b c $o fmap10 F f c $== fmap01 F c f $o H0 a c
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A f: a $-> b
H0 b c $o fmap11 F f (Id c) $==
fmap11 F (Id c) f $o H0 a c
exact (isnat braid_uncurried (a := (a, c)) (a' := (b, c)) (f, Id _)).Defined.(** This is just the inverse of above. *)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A g: b $-> c
H0 a c $o fmap01 F a g $== fmap10 F g a $o H0 a b
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A g: b $-> c
H0 a c $o fmap01 F a g $== fmap10 F g a $o H0 a b
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b, c: A g: b $-> c
H0 a c $o fmap11 F (Id a) g $==
fmap11 F g (Id a) $o H0 a b
exact (isnat braid_uncurried (a := (a, b)) (a' := (a, c)) (Id _ , g)).Defined.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
SymmetricBraiding F
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
SymmetricBraiding F
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
Braiding F
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
forallab : A^op,
?braiding_symmetricbraiding a b $o
?braiding_symmetricbraiding b a $==
Id (F b a)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
Braiding F
exact _.
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A
forallab : A^op,
braiding_op a b $o braiding_op b a $== Id (F b a)
A: Type F: A -> A -> A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A Is0Bifunctor0: Is0Bifunctor F Is1Bifunctor0: Is1Bifunctor F H0: SymmetricBraiding F HasEquivs0: HasEquivs A a, b: A^op
braiding_op a b $o braiding_op b a $== Id (F b a)
rapply braid_braid.Defined.EndSymmetricBraid.Definitionsymmetricbraiding_op' {A : Type} {F : A -> A -> A}
`{HasEquivs A, !Is0Bifunctor F, !Is1Bifunctor F,
H' : !SymmetricBraiding (A:=A^op) F}
: SymmetricBraiding F
:= symmetricbraiding_op (A:=A^op) (F := F).(** ** Opposite Monoidal Categories *)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
IsMonoidal A^op tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
IsMonoidal A^op tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
Is0Bifunctor tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
Is1Bifunctor tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
Associator tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
LeftUnitor tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
RightUnitor tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
TriangleIdentity tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
PentagonIdentity tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
TriangleIdentity tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
PentagonIdentity tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
TriangleIdentity tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
fmap01 tensor a
(cate_fun' b (tensor unit b)
(cate_buildequiv' b
(tensor unit b)
(cate_inv' (tensor unit b) b
(cat_tensor_left_unitor b))
(catie_adjointify
(cate_inv' (tensor unit b) b
(cat_tensor_left_unitor b))
(cate_fun' (tensor unit b) b
(cat_tensor_left_unitor b))
(cate_issect'
(tensor unit b) b
(cat_tensor_left_unitor b))
(cate_isretr'
(tensor unit b) b
(cat_tensor_left_unitor b))))) $==
cate_fun' (tensor (tensor a unit) b)
(tensor a (tensor unit b))
(associator_op a unit b) $o
fmap10 tensor
(cate_fun' a (tensor a unit)
(cate_buildequiv' a
(tensor a unit)
(cate_inv' (tensor a unit) a
(cat_tensor_right_unitor a))
(catie_adjointify
(cate_inv' (tensor a unit) a
(cat_tensor_right_unitor a))
(cate_fun' (tensor a unit) a
(cat_tensor_right_unitor a))
(cate_issect'
(tensor a unit) a
(cat_tensor_right_unitor a))
(cate_isretr'
(tensor a unit) a
(cat_tensor_right_unitor a))))) b
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
?Goal $->
fmap01 tensor a
(cate_fun' b (tensor unit b)
(cate_buildequiv' b
(tensor unit b)
(cate_inv' (tensor unit b) b
(cat_tensor_left_unitor b))
(catie_adjointify
(cate_inv' (tensor unit b) b
(cat_tensor_left_unitor b))
(cate_fun' (tensor unit b) b
(cat_tensor_left_unitor b))
(cate_issect'
(tensor unit b) b
(cat_tensor_left_unitor b))
(cate_isretr'
(tensor unit b) b
(cat_tensor_left_unitor b)))))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
?Goal $==
cate_fun' (tensor (tensor a unit) b)
(tensor a (tensor unit b))
(associator_op a unit b) $o
?Goal2
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
?Goal2 $==
fmap10 tensor
(cate_fun' a (tensor a unit)
(cate_buildequiv' a
(tensor a unit)
(cate_inv' (tensor a unit) a
(cat_tensor_right_unitor a))
(catie_adjointify
(cate_inv' (tensor a unit) a
(cat_tensor_right_unitor a))
(cate_fun' (tensor a unit) a
(cat_tensor_right_unitor a))
(cate_issect'
(tensor a unit) a
(cat_tensor_right_unitor a))
(cate_isretr'
(tensor a unit) a
(cat_tensor_right_unitor a))))) b
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
(emap (tensor a) (cat_tensor_left_unitor b))^-1$ $==
cate_fun' (tensor (tensor a unit) b)
(tensor a (tensor unit b))
(associator_op a unit b) $o
(emap (flip tensor b) (cat_tensor_right_unitor a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
emap (tensor a) (cat_tensor_left_unitor b) $==
emap (flip tensor b) (cat_tensor_right_unitor a) $oE
cat_tensor_associator (a, unit, b)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b: A
fmap (tensor a) (cat_tensor_left_unitor b) $==
fmap (flip tensor b) (cat_tensor_right_unitor a) $o
cat_tensor_associator (a, unit, b)
rapply cat_tensor_triangle_identity.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
PentagonIdentity tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cate_fun' (tensor (tensor a b) (tensor c d))
(tensor a (tensor b (tensor c d)))
(associator_op a b (tensor c d)) $o
cate_fun' (tensor (tensor (tensor a b) c) d)
(tensor (tensor a b) (tensor c d))
(associator_op (tensor a b) c d) $==
fmap01 tensor a
(cate_fun' (tensor (tensor b c) d)
(tensor b (tensor c d))
(associator_op b c d)) $o
(cate_fun' (tensor (tensor a (tensor b c)) d)
(tensor a (tensor (tensor b c) d))
(associator_op a (tensor b c) d) $o
fmap10 tensor
(cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c)) d)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cate_fun' (tensor (tensor a b) (tensor c d))
(tensor a (tensor b (tensor c d)))
(associator_op a b (tensor c d)) $o
cate_fun' (tensor (tensor (tensor a b) c) d)
(tensor (tensor a b) (tensor c d))
(associator_op (tensor a b) c d) $==
?Goal0 $o
(cate_fun' (tensor (tensor a (tensor b c)) d)
(tensor a (tensor (tensor b c) d))
(associator_op a (tensor b c) d) $o
?Goal1)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
?Goal1 $==
fmap10 tensor
(cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c)) d
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
?Goal0 $==
fmap01 tensor a
(cate_fun' (tensor (tensor b c) d)
(tensor b (tensor c d))
(associator_op b c d))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cate_fun' (tensor (tensor a b) (tensor c d))
(tensor a (tensor b (tensor c d)))
(associator_op a b (tensor c d)) $o
cate_fun' (tensor (tensor (tensor a b) c) d)
(tensor (tensor a b) (tensor c d))
(associator_op (tensor a b) c d) $==
(emap (tensor a) (cat_tensor_associator (b, c, d)))^-1$ $o
(cate_fun' (tensor (tensor a (tensor b c)) d)
(tensor a (tensor (tensor b c) d))
(associator_op a (tensor b c) d) $o
(emap (flip tensor d)
(cat_tensor_associator (a, b, c)))^-1$)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cat_tensor_associator (tensor a b, c, d) $oE
cat_tensor_associator (a, b, tensor c d) $==
emap (flip tensor d) (cat_tensor_associator (a, b, c)) $oE
cat_tensor_associator (a, tensor b c, d) $oE
emap (tensor a) (cat_tensor_associator (b, c, d))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cat_tensor_associator (tensor a b, c, d) $o
cat_tensor_associator (a, b, tensor c d) $==
emap (flip tensor d) (cat_tensor_associator (a, b, c)) $o
cat_tensor_associator (a, tensor b c, d) $o
emap (tensor a) (cat_tensor_associator (b, c, d))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit a, b, c, d: A
cat_tensor_associator (tensor a b, c, d) $o
cat_tensor_associator (a, b, tensor c d) $==
fmap (flip tensor d) (cat_tensor_associator (a, b, c)) $o
cat_tensor_associator (a, tensor b c, d) $o
fmap (tensor a) (cat_tensor_associator (b, c, d))
rapply cat_tensor_pentagon_identity.Defined.Definitionismonoidal_op' {A : Type} (tensor : A -> A -> A) (unit : A)
`{HasEquivs A} `{!IsMonoidal A^op tensor unit}
: IsMonoidal A tensor unit
:= ismonoidal_op (A:=A^op) tensor unit.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
IsSymmetricMonoidal A^op tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
IsSymmetricMonoidal A^op tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
IsMonoidal A^op tensor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
SymmetricBraiding tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
HexagonIdentity tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
IsMonoidal A^op tensor unit
rapply ismonoidal_op.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
SymmetricBraiding tensor
exact symmetricbraiding_op.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit
HexagonIdentity tensor
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
(braiding_op (tensor b c) a $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
(?f $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor a (tensor b c) $-> tensor (tensor b c) a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?f $== braiding_op (tensor b c) a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(braide (tensor b c) a)^-1$ $==
braiding_op (tensor b c) a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(braide (tensor b c) a)^-1$ $==
braiding_op (tensor b c) a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
Id (tensor a (tensor b c)) $==
braide (tensor b c) a $o braiding_op (tensor b c) a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
braide (tensor b c) a $o braiding_op (tensor b c) a $==
Id (tensor a (tensor b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
braide (tensor b c) a $== ?Goal0
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal0 $o braiding_op (tensor b c) a $==
Id (tensor a (tensor b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
cat_symm_tensor_braiding (tensor b c) a $o
braiding_op (tensor b c) a $==
Id (tensor a (tensor b c))
rapply braid_braid.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor b (tensor a c) $-> tensor b (tensor c a)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $== ?g
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?g $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor b (tensor a c) $-> tensor b (tensor c a)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor c a $<~> tensor a c
rapply braide.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $==
(emap (tensor b) (braide c a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap01 tensor b (braiding_op c a) $==
(emap (tensor b) (braide c a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $==
fmap01 tensor b (braiding_op c a)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(braide c a)^-1$ $== braiding_op c a
napply cate_inv_adjointify.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
fmap10 tensor (braiding_op b a) c) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor (tensor a b) c $-> tensor (tensor b a) c
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap10 tensor (braiding_op b a) c $== ?g
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
?g) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor (tensor a b) c $-> tensor (tensor b a) c
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
tensor b a $<~> tensor a b
rapply braide.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap10 tensor (braiding_op b a) c $==
(emap (flip tensor c) (braide b a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
(emap (flip tensor c) (braide b a))^-1$) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
fmap10 tensor (braiding_op b a) c $==
(emap (flip tensor c) (braide b a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (flip tensor c) (braide b a))^-1$ $==
fmap10 tensor (braiding_op b a) c
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(braide b a)^-1$ $== braiding_op b a
napply cate_inv_adjointify.
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
(emap (tensor b) (braide c a))^-1$ $o
(cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
(emap (flip tensor c) (braide b a))^-1$) $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
((braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal $==
cate_fun' (tensor (tensor b a) c)
(tensor b (tensor a c))
(associator_op b a c) $o
(emap (flip tensor c) (braide b a))^-1$
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal2^-1$ $->
(emap (tensor b) (braide c a))^-1$ $o ?Goal
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal2 $== ?Goal3
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal3^-1$ $==
cate_fun' (tensor (tensor b c) a)
(tensor b (tensor c a))
(associator_op b c a) $o
?Goal6
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal6 $==
(braide (tensor b c) a)^-1$ $o
cate_fun' (tensor (tensor a b) c)
(tensor a (tensor b c))
(associator_op a b c)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
emap (flip tensor c) (braide b a) $oE
cat_tensor_associator (b, a, c) $oE
emap (tensor b) (braide c a) $==
cat_tensor_associator (a, b, c) $oE
braide (tensor b c) a $oE
cat_tensor_associator (b, c, a)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
emap (flip tensor c) (braide b a) $oE
cat_tensor_associator (b, a, c) $oE
emap (tensor b) (braide c a) $==
?Goal3 $o ?Goal1
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal1 $== ?Goal2
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal3 $== ?Goal4
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal4 $o ?Goal2 $== ?Goal10 $o ?Goal12
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal9 $== ?Goal10
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
cat_tensor_associator (a, b, c) $oE
braide (tensor b c) a $oE
cat_tensor_associator (b, c, a) $->
?Goal9 $o ?Goal12
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
emap (flip tensor c) (braide b a) $o
cat_tensor_associator (b, a, c) $o
fmap (tensor b) (braide c a) $==
cat_tensor_associator (a, b, c) $o
braide (tensor b c) a $o
cat_tensor_associator (b, c, a)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
braide c a $== cat_symm_tensor_braiding c a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
emap (flip tensor c) (braide b a) $==
fmap10 tensor ?Goal1 c
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
?Goal1 $== cat_symm_tensor_braiding b a
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsSymmetricMonoidal A tensor unit a, b, c: A
braide (tensor b c) a $->
cat_symm_tensor_braiding (tensor b c) a
1-4: napply cate_buildequiv_fun.Defined.Definitionissymmetricmonoidal_op' {A : Type} (tensor : A -> A -> A) (unit : A)
`{HasEquivs A} `{H' : !IsSymmetricMonoidal A^op tensor unit}
: IsSymmetricMonoidal A tensor unit
:= issymmetricmonoidal_op (A:=A^op) tensor unit.(** ** Further Coherence Conditions *)(** In Mac Lane's original axiomatisation of a monoidal category, 3 extra coherence conditions were given in addition to the pentagon and triangle identities. It was later shown by Kelly that these axioms are redundant and follow from the rest. We reproduce these arguments here. *)(** The left unitor of a tensor can be decomposed as an associator and a functorial action of the tensor on a left unitor. *)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
(cat_tensor_left_unitor (tensor x y)
:
tensor unit (tensor x y) $-> tensor x y) $==
fmap10 tensor (cat_tensor_left_unitor x) y $o
cat_tensor_associator unit x y
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
(cat_tensor_left_unitor (tensor x y)
:
tensor unit (tensor x y) $-> tensor x y) $==
fmap10 tensor (cat_tensor_left_unitor x) y $o
cat_tensor_associator unit x y
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (tensor unit)
(cate_fun' (tensor unit (tensor x y))
(tensor x y)
(cat_tensor_left_unitor (tensor x y))) $==
fmap (tensor unit)
(fmap10 tensor (cat_tensor_left_unitor x) y $o
cat_tensor_associator unit x y)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (tensor unit)
(cate_fun' (tensor unit (tensor x y))
(tensor x y)
(cat_tensor_left_unitor (tensor x y))) $==
fmap01 tensor unit
(fmap10 tensor (cat_tensor_left_unitor x) y) $o
fmap01 tensor unit (cat_tensor_associator unit x y)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (tensor unit)
(cate_fun' (tensor unit (tensor x y))
(tensor x y)
(cat_tensor_left_unitor (tensor x y))) $==
(cat_tensor_associator unit x y)^-1$ $o
(fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y) $o
fmap01 tensor unit (cat_tensor_associator unit x y)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (tensor unit)
(cate_fun' (tensor unit (tensor x y))
(tensor x y)
(cat_tensor_left_unitor (tensor x y))) $==
(cat_tensor_associator unit x y)^-1$ $o
(fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap01 tensor unit
(cate_fun' (tensor unit (tensor x y))
(tensor x y)
(cat_tensor_left_unitor (tensor x y))) $==
(cat_tensor_associator unit x y)^-1$ $o
(fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap01 tensor unit
(cat_tensor_left_unitor (tensor x y)) $==
(cat_tensor_associator unit x y)^-1$ $o
(fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap01 tensor unit
(cat_tensor_left_unitor (tensor x y)) $==
fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
(fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $o
cat_tensor_associator unit unit (tensor x y)) $==
fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $o
cat_tensor_associator unit unit (tensor x y) $==
fmap10 tensor
(fmap01 tensor unit (cat_tensor_left_unitor x)) y $o
(cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $o
cat_tensor_associator unit unit (tensor x y) $==
fmap10 tensor
(fmap10 tensor (cat_tensor_right_unitor unit) x) y $o
fmap10 tensor (cat_tensor_associator unit unit x) y $o
(cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $o
cat_tensor_associator unit unit (tensor x y) $==
fmap10 tensor
(fmap10 tensor (cat_tensor_right_unitor unit) x) y $o
(fmap10 tensor (cat_tensor_associator unit unit x) y $o
(cat_tensor_associator unit (tensor unit x) y $o
fmap01 tensor unit (cat_tensor_associator unit x y)))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $o
cat_tensor_associator unit unit (tensor x y) $==
fmap10 tensor
(fmap10 tensor (cat_tensor_right_unitor unit) x) y $o
(cat_tensor_associator (tensor unit unit) x y $o
cat_tensor_associator unit unit (tensor x y))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator unit x y $o
fmap10 tensor (cat_tensor_right_unitor unit)
(tensor x y) $==
fmap10 tensor
(fmap10 tensor (cat_tensor_right_unitor unit) x) y $o
cat_tensor_associator (tensor unit unit) x y
exact (associator_nat_l _ _ _).Defined.(** The right unitor of a tensor can be decomposed as an inverted associator and a functorial action of the tensor on a right unitor. *)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
(fmap01 tensor x (cat_tensor_right_unitor y)
:
tensor x (flip tensor unit y) $-> tensor x y) $==
cat_tensor_right_unitor (tensor x y) $o
cat_tensor_associator x y unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
(fmap01 tensor x (cat_tensor_right_unitor y)
:
tensor x (flip tensor unit y) $-> tensor x y) $==
cat_tensor_right_unitor (tensor x y) $o
cat_tensor_associator x y unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (flip tensor unit)
(fmap (tensor x) (cat_tensor_right_unitor y)) $==
fmap (flip tensor unit)
(cat_tensor_right_unitor (tensor x y) $o
cat_tensor_associator x y unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap (flip tensor unit)
(fmap (tensor x) (cat_tensor_right_unitor y)) $==
fmap10 tensor (cat_tensor_right_unitor (tensor x y))
unit $o
fmap10 tensor (cat_tensor_associator x y unit) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y unit $o
fmap01 tensor x
(fmap10 tensor (cat_tensor_right_unitor y) unit) $o
(cat_tensor_associator x (flip tensor unit y) unit)^-1$ $==
fmap10 tensor (cat_tensor_right_unitor (tensor x y))
unit $o
fmap10 tensor (cat_tensor_associator x y unit) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y unit $o
fmap01 tensor x
(fmap10 tensor (cat_tensor_right_unitor y) unit) $o
(cat_tensor_associator x (flip tensor unit y) unit)^-1$ $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
fmap10 tensor (cat_tensor_associator x y unit) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y unit $o
fmap01 tensor x
(fmap10 tensor (cat_tensor_right_unitor y) unit) $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y unit $o
(fmap01 tensor x
(fmap01 tensor y (cat_tensor_left_unitor unit)) $o
fmap01 tensor x
(cat_tensor_associator y unit unit)^-1$) $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y unit $o
fmap01 tensor x
(fmap01 tensor y (cat_tensor_left_unitor unit)) $o
fmap01 tensor x
(cat_tensor_associator y unit unit)^-1$ $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator x y (tensor unit unit) $o
fmap01 tensor x
(cat_tensor_associator y unit unit)^-1$) $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
(cat_tensor_associator x y (tensor unit unit) $o
fmap01 tensor x
(cat_tensor_associator y unit unit)^-1$) $==
fmap01 tensor (tensor x y)
(cat_tensor_left_unitor unit) $o
((cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y (tensor unit unit) $o
fmap01 tensor x
(cat_tensor_associator y unit unit)^-1$ $==
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y (tensor unit unit) $o
(emap (tensor x) (cat_tensor_associator y unit unit))^-1$ $==
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y (tensor unit unit) $==
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit) $o
emap (tensor x) (cat_tensor_associator y unit unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y (tensor unit unit) $==
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit) $o
fmap (tensor x) (cat_tensor_associator y unit unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator x y (tensor unit unit) $==
(cat_tensor_associator (tensor x y) unit unit)^-1$ $o
(fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit $o
fmap (tensor x) (cat_tensor_associator y unit unit))
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit x, y: A
cat_tensor_associator (tensor x y) unit unit $o
cat_tensor_associator x y (tensor unit unit) $==
fmap10 tensor (cat_tensor_associator x y unit) unit $o
cat_tensor_associator x (flip tensor unit y) unit $o
fmap (tensor x) (cat_tensor_associator y unit unit)
rapply pentagon_identity.Defined.(** The left unitor at the unit is the right unitor at the unit. *)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
(cat_tensor_left_unitor unit
:
tensor unit unit $-> unit) $==
cat_tensor_right_unitor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
(cat_tensor_left_unitor unit
:
tensor unit unit $-> unit) $==
cat_tensor_right_unitor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
cat_tensor_left_unitor unit $o
fmap (tensor unit) (cat_tensor_left_unitor unit) $o
(cat_tensor_left_unitor (tensor unit unit))^-1$ $==
cat_tensor_right_unitor unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
cat_tensor_left_unitor unit $o
fmap (tensor unit) (cat_tensor_left_unitor unit) $==
cat_tensor_right_unitor unit $o
cat_tensor_left_unitor (tensor unit unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
cat_tensor_left_unitor unit $o
fmap (tensor unit) (cat_tensor_left_unitor unit) $==
cat_tensor_right_unitor unit $o
(fmap10 tensor (cat_tensor_left_unitor unit) unit $o
cat_tensor_associator unit unit unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
cat_tensor_left_unitor unit $o
fmap (tensor unit) (cat_tensor_left_unitor unit) $==
?Goal0 $o cat_tensor_associator unit unit unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
?Goal0 $==
cat_tensor_right_unitor unit $o
fmap10 tensor (cat_tensor_left_unitor unit) unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
cat_tensor_left_unitor unit $o
fmap (tensor unit) (cat_tensor_left_unitor unit) $==
fmap idmap (cat_tensor_left_unitor unit) $o
(funa : A => cate_fun (cat_tensor_right_unitor a))
(tensor unit unit) $o
cat_tensor_associator unit unit unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
fmap (tensor unit) (cat_tensor_left_unitor unit) $==
cat_tensor_right_unitor (tensor unit unit) $o
cat_tensor_associator unit unit unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
fmap10 tensor (cat_tensor_right_unitor unit) unit $o
cat_tensor_associator unit unit unit $==
cat_tensor_right_unitor (tensor unit unit) $o
cat_tensor_associator unit unit unit
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
fmap10 tensor (cat_tensor_right_unitor unit) unit $==
cat_tensor_right_unitor (tensor unit unit)
A: Type tensor: A -> A -> A unit: A IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensor unit
?Goal1 $o
fmap10 tensor (cat_tensor_right_unitor unit) unit $==
?Goal1 $o cat_tensor_right_unitor (tensor unit unit)
exact (isnat_natequiv right_unitor (right_unitor unit)).Defined.(** TODO: Kelly also shows that there are redundant coherence conditions for symmetric monoidal categories also, but we leave these out for now. *)(** ** Monoidal functors *)(** A (lax) monoidal functor [F] between two monoidal categories [A] and [B] is a functor [F : A -> B] together with: *)ClassIsMonoidalFunctor {AB : Type}
{tensorA : A -> A -> A} {tensorB : B -> B -> B} {IA : A} {IB : B}
`{IsMonoidal A tensorA IA, IsMonoidal B tensorB IB}
(F : A -> B) `{!Is0Functor F, !Is1Functor F} := {
(** A natural transformation [fmap_tensor] from [F a ⊗ F b] to [F (a ⊗ b)]. *)
fmap_tensor
: NatTrans
(uncurry (funab => tensorB (F a) (F b)))
(uncurry (funab => F (tensorA a b)));
(** A morphism [fmap_unit] relating the two unit objects. *)
fmap_unit : IB $-> F (IA);
(** Such that the following coherence conditions hold: [F] preserves the [associator]s in a suitable way. *)
fmap_tensor_assoc a b c
: fmap F (associator a b c)
$o fmap_tensor (a, tensorA b c)
$o fmap01 tensorB (F a) (fmap_tensor (b, c))
$== fmap_tensor (tensorA a b, c)
$o fmap10 tensorB (fmap_tensor (a, b)) (F c)
$o associator (F a) (F b) (F c);
(** [F] preserves the [left_unitor]s in a suitable way. *)
fmap_tensor_left_unitor a
: trans_nattrans left_unitor (F a)
$== fmap F (left_unitor a)
$o fmap_tensor (IA, a)
$o fmap10 tensorB fmap_unit (F a);
(** [F] preserves the [right_unitors]s in a suitable way. *)
fmap_tensor_right_unitor a
: trans_nattrans right_unitor (F a)
$== fmap F (right_unitor a)
$o fmap_tensor (a, IA)
$o fmap01 tensorB (F a) fmap_unit;
}.Arguments fmap_tensor {A B tensorA tensorB IA IB _ _ _ _ _ _ _ _ _ _ _ _}
F {_ _ _}.
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y, y': A f: x $-> x' g: y $-> y'
fmap_tensor F (x', y') $o
fmap11 tensorB (fmap F f) (fmap F g) $==
fmap F (fmap11 tensorA f g) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y, y': A f: x $-> x' g: y $-> y'
fmap_tensor F (x', y') $o
fmap11 tensorB (fmap F f) (fmap F g) $==
fmap F (fmap11 tensorA f g) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y, y': A f: x $-> x' g: y $-> y' fmap_tensor_F: uncurry
(funab : A => tensorB (F a) (F b)) $=>
uncurry
(funab : A => F (tensorA a b)) nat: Is1Natural
(uncurry (funab : A => tensorB (F a) (F b)))
(uncurry (funab : A => F (tensorA a b)))
fmap_tensor_F
{|
trans_nattrans := fmap_tensor_F;
is1natural_nattrans := nat
|} (x', y') $o fmap11 tensorB (fmap F f) (fmap F g) $==
fmap F (fmap11 tensorA f g) $o
{|
trans_nattrans := fmap_tensor_F;
is1natural_nattrans := nat
|} (x, y)
exact (nat (x, y) (x', y') (f, g)).Defined.
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y: A f: x $-> x'
fmap_tensor F (x', y) $o
fmap10 tensorB (fmap F f) (F y) $==
fmap F (fmap10 tensorA f y) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y: A f: x $-> x'
fmap_tensor F (x', y) $o
fmap10 tensorB (fmap F f) (F y) $==
fmap F (fmap10 tensorA f y) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y: A f: x $-> x'
fmap_tensor F (x', y) $o
fmap11 tensorB (fmap F f) (fmap F (Id (snd (x, y)))) $==
fmap F (fmap10 tensorA f y) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, x', y: A f: x $-> x'
fmap_tensor F (x', y) $o
fmap11 tensorB (fmap F f) (fmap F (Id (snd (x, y)))) $==
fmap F (fmap11 tensorA f (Id (snd (x', y)))) $o
fmap_tensor F (x, y)
snapply fmap_tensor_nat.Defined.
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, y, y': A g: y $-> y'
fmap_tensor F (x, y') $o
fmap01 tensorB (F x) (fmap F g) $==
fmap F (fmap01 tensorA x g) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, y, y': A g: y $-> y'
fmap_tensor F (x, y') $o
fmap01 tensorB (F x) (fmap F g) $==
fmap F (fmap01 tensorA x g) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, y, y': A g: y $-> y'
fmap_tensor F (x, y') $o
fmap11 tensorB (fmap F (Id (fst (x, y)))) (fmap F g) $==
fmap F (fmap01 tensorA x g) $o fmap_tensor F (x, y)
A, B: Type tensorA: A -> A -> A tensorB: B -> B -> B IA: A IB: B F: A -> B IsGraph0: IsGraph A Is2Graph0: Is2Graph A Is01Cat0: Is01Cat A H: Is1Cat A H0: HasEquivs A H1: IsMonoidal A tensorA IA IsGraph1: IsGraph B Is2Graph1: Is2Graph B Is01Cat1: Is01Cat B H2: Is1Cat B H3: HasEquivs B H4: IsMonoidal B tensorB IB Is0Functor0: Is0Functor F Is1Functor0: Is1Functor F H5: IsMonoidalFunctor F x, y, y': A g: y $-> y'
fmap_tensor F (x, y') $o
fmap11 tensorB (fmap F (Id (fst (x, y)))) (fmap F g) $==
fmap F (fmap11 tensorA (Id (fst (x, y'))) g) $o
fmap_tensor F (x, y)