Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

symmetric monoidal categories satisfy the other hexagon #2191

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 51 additions & 25 deletions theories/WildCat/Monoidal.v
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,21 @@ Class HexagonIdentity {A : Type} `{HasEquivs A}
Coercion hexagon_identity : HexagonIdentity >-> Funclass.
Arguments hexagon_identity {A _ _ _ _ _} F {_ _}.

(** *** Hexagon identity with inverse associators *)

(** ** Monoidal Categories *)

Class HexagonIdentityInverseAssoc {A : Type} `{HasEquivs A}
(F : A -> A -> A)
`{!Is0Bifunctor F, !Is1Bifunctor F, !Associator F, !Braiding F}
(** The other hexagon identity for an associator and a braiding. *)
:= hexagon_identity_inv_assoc a b c
: fmap01 F b (braid a c) $o (associator b a c)^-1$ $o fmap10 F (braid a b) c
$== (associator b c a)^-1$ $o braid a (F b c) $o (associator a b c)^-1$.

Coercion hexagon_identity_inv_assoc : HexagonIdentityInverseAssoc >-> Funclass.
Arguments hexagon_identity_inv_assoc {A _ _ _ _ _} F {_ _}.

(** A monoidal 1-category is a 1-category with equivalences together with the following: *)
Class IsMonoidal (A : Type) `{HasEquivs A}
(** It has a binary operation [cat_tensor] called the tensor product. *)
Expand Down Expand Up @@ -439,6 +452,42 @@ Definition symmetricbraiding_op' {A : Type} {F : A -> A -> A}
H' : !SymmetricBraiding (A:=A^op) F}
: SymmetricBraiding F
:= symmetricbraiding_op (A:=A^op) (F := F).

(** Symmetric monoidal categories also satisfy the other hexagon axiom. This is very close to the hexagon axiom of the opposite monoidal category. *)
Global Instance cat_symm_tensor_hexagon_inv_assoc
{A : Type} {F : A -> A -> A} {unit : A}
`{IsSymmetricMonoidal A F unit}
: HexagonIdentityInverseAssoc F.
Proof.
intros a b c.
snrefine (_ $@ ((_ $@L _) $@R _)).
2: exact ((braide _ _)^-1$).
2: { nrapply cate_moveR_V1.
symmetry.
nrefine ((_ $@R _) $@ _).
1: nrapply cate_buildequiv_fun.
rapply braid_braid. }
nrefine (cat_assoc _ _ _ $@ _).
snrefine ((_ $@R _) $@ _).
{ refine (emap _ _)^-1$.
rapply braide. }
{ symmetry.
refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
nrapply cate_inv_adjointify. }
snrefine ((_ $@L (_ $@L _)) $@ _).
{ refine (emap (flip F c) _)^-1$.
rapply braide. }
{ symmetry.
refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
nrapply cate_inv_adjointify. }
nrefine (_ $@ cat_assoc_opp _ _ _).
refine ((_ $@L _)^$ $@ _^$ $@ cate_inv2 _ $@ _ $@ (_ $@L _)).
1,2,4,5: rapply cate_inv_compose'.
refine (_ $@ (_ $@@ _) $@ _ $@ (_ $@R _)^$ $@ _^$).
1-3,5-6: rapply cate_buildequiv_fun.
refine ((fmap02 _ _ _ $@@ ((_ $@ fmap20 _ _ _) $@R _)) $@ cat_symm_tensor_hexagon a b c $@ ((_ $@L _^$) $@R _)).
1-4: nrapply cate_buildequiv_fun.
Defined.

(** ** Opposite Monoidal Categories *)

Expand Down Expand Up @@ -479,31 +528,8 @@ Proof.
- rapply ismonoidal_op.
- rapply symmetricbraiding_op.
- intros a b c; unfold op in a, b, c; simpl.
snrefine (_ $@ (_ $@L (_ $@R _))).
2: exact ((braide _ _)^-1$).
2: { nrapply cate_moveR_V1.
symmetry.
nrefine ((_ $@R _) $@ _).
1: nrapply cate_buildequiv_fun.
rapply braid_braid. }
snrefine ((_ $@R _) $@ _).
{ refine (emap _ _)^-1$.
rapply braide. }
{ symmetry.
refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
nrapply cate_inv_adjointify. }
snrefine ((_ $@L (_ $@L _)) $@ _).
{ refine (emap (flip tensor c) _)^-1$.
rapply braide. }
{ symmetry.
refine (cate_inv_adjointify _ _ _ _ $@ fmap2 _ _).
nrapply cate_inv_adjointify. }
refine ((_ $@L _)^$ $@ _^$ $@ cate_inv2 _ $@ _ $@ (_ $@L _)).
1,2,4,5: rapply cate_inv_compose'.
refine (_ $@ (_ $@@ _) $@ _ $@ (_ $@R _)^$ $@ _^$).
1-3,5-6: rapply cate_buildequiv_fun.
refine ((fmap02 _ _ _ $@@ ((_ $@ fmap20 _ _ _) $@R _)) $@ cat_symm_tensor_hexagon a b c $@ ((_ $@L _^$) $@R _)).
1-4: nrapply cate_buildequiv_fun.
nrefine (cat_assoc_opp _ _ _ $@ _ $@ cat_assoc _ _ _).
nrapply cat_symm_tensor_hexagon_inv_assoc.
Defined.

Definition issymmetricmonoidal_op' {A : Type} (tensor : A -> A -> A) (unit : A)
Expand Down
Loading