@@ -113,8 +113,21 @@ Class HexagonIdentity {A : Type} `{HasEquivs A}
113113Coercion hexagon_identity : HexagonIdentity >-> Funclass.
114114Arguments hexagon_identity {A _ _ _ _ _} F {_ _}.
115115
116+ (** *** Hexagon identity with inverse associators *)
117+
116118(** ** Monoidal Categories *)
117119
120+ Class HexagonIdentityInverseAssoc {A : Type } `{HasEquivs A}
121+ (F : A -> A -> A)
122+ `{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F, !Braiding F}
123+ (** The other hexagon identity for an associator and a braiding. *)
124+ := hexagon_identity_inv_assoc a b c
125+ : fmap01 F b (braid a c) $o (associator b a c)^-1$ $o fmap10 F (braid a b) c
126+ $== (associator b c a)^-1$ $o braid a (F b c) $o (associator a b c)^-1$.
127+
128+ Coercion hexagon_identity_inv_assoc : HexagonIdentityInverseAssoc >-> Funclass.
129+ Arguments hexagon_identity_inv_assoc {A _ _ _ _ _} F {_ _}.
130+
118131(** A monoidal 1-category is a 1-category with equivalences together with the following: *)
119132Class IsMonoidal (A : Type ) `{HasEquivs A}
120133 (** It has a binary operation [cat_tensor] called the tensor product. *)
@@ -439,6 +452,42 @@ Definition symmetricbraiding_op' {A : Type} {F : A -> A -> A}
439452 H' : !SymmetricBraiding (A:=A^op) F}
440453 : SymmetricBraiding F
441454 := symmetricbraiding_op (A:=A^op) (F := F).
455+
456+ (** Symmetric monoidal categories also satisfy the other hexagon axiom. This is very close to the hexagon axiom of the opposite monoidal category. *)
457+ Instance cat_symm_tensor_hexagon_inv_assoc
458+ {A : Type } {F : A -> A -> A} {unit : A}
459+ `{IsSymmetricMonoidal A F unit}
460+ : HexagonIdentityInverseAssoc F.
461+ Proof .
462+ intros a b c.
463+ snrefine (_ $@ ((_ $@L _) $@R _)).
464+ 2: exact ((braide _ _)^-1$).
465+ 2: { napply cate_moveR_V1.
466+ symmetry.
467+ nrefine ((_ $@R _) $@ _).
468+ 1: napply cate_buildequiv_fun.
469+ rapply braid_braid. }
470+ nrefine (cat_assoc _ _ _ $@ _).
471+ snrefine ((_ $@R _) $@ _).
472+ { refine (emap _ _)^-1$.
473+ rapply braide. }
474+ { symmetry.
475+ refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
476+ napply cate_inv_adjointify. }
477+ snrefine ((_ $@L (_ $@L _)) $@ _).
478+ { refine (emap (flip F c) _)^-1$.
479+ rapply braide. }
480+ { symmetry.
481+ refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
482+ napply cate_inv_adjointify. }
483+ nrefine (_ $@ cat_assoc_opp _ _ _).
484+ refine ((_ $@L _)^$ $@ _^$ $@ cate_inv2 _ $@ _ $@ (_ $@L _)).
485+ 1,2,4,5: rapply cate_inv_compose'.
486+ refine (_ $@ (_ $@@ _) $@ _ $@ (_ $@R _)^$ $@ _^$).
487+ 1-3,5-6: rapply cate_buildequiv_fun.
488+ refine ((fmap02 _ _ _ $@@ ((_ $@ fmap20 _ _ _) $@R _)) $@ cat_symm_tensor_hexagon a b c $@ ((_ $@L _^$) $@R _)).
489+ 1-4: napply cate_buildequiv_fun.
490+ Defined .
442491
443492(** ** Opposite Monoidal Categories *)
444493
@@ -479,31 +528,8 @@ Proof.
479528 - rapply ismonoidal_op.
480529 - exact symmetricbraiding_op.
481530 - intros a b c; unfold op in a, b, c; simpl.
482- snrefine (_ $@ (_ $@L (_ $@R _))).
483- 2: exact ((braide _ _)^-1$).
484- 2: { napply cate_moveR_V1.
485- symmetry.
486- nrefine ((_ $@R _) $@ _).
487- 1: napply cate_buildequiv_fun.
488- rapply braid_braid. }
489- snrefine ((_ $@R _) $@ _).
490- { refine (emap _ _)^-1$.
491- rapply braide. }
492- { symmetry.
493- refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
494- napply cate_inv_adjointify. }
495- snrefine ((_ $@L (_ $@L _)) $@ _).
496- { refine (emap (flip tensor c) _)^-1$.
497- rapply braide. }
498- { symmetry.
499- refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
500- napply cate_inv_adjointify. }
501- refine ((_ $@L _)^$ $@ _^$ $@ cate_inv2 _ $@ _ $@ (_ $@L _)).
502- 1,2,4,5: rapply cate_inv_compose'.
503- refine (_ $@ (_ $@@ _) $@ _ $@ (_ $@R _)^$ $@ _^$).
504- 1-3,5-6: rapply cate_buildequiv_fun.
505- refine ((fmap02 _ _ _ $@@ ((_ $@ fmap20 _ _ _) $@R _)) $@ cat_symm_tensor_hexagon a b c $@ ((_ $@L _^$) $@R _)).
506- 1-4: napply cate_buildequiv_fun.
531+ nrefine (cat_assoc_opp _ _ _ $@ _ $@ cat_assoc _ _ _).
532+ napply cat_symm_tensor_hexagon_inv_assoc.
507533Defined .
508534
509535Definition issymmetricmonoidal_op' {A : Type } (tensor : A -> A -> A) (unit : A)
0 commit comments