Skip to content

Commit 2763488

Browse files
authored
Merge pull request #2013 from Alizter/ps/rr/opposite_monoidal_categories
opposite monoidal categories
2 parents d1ffba6 + 4c82e00 commit 2763488

File tree

2 files changed

+70
-11
lines changed

2 files changed

+70
-11
lines changed

test/WildCat/Opposite.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,5 @@ Fail Definition test A `{HasEquivs A}
6868
(** Opposite braidings are definitionally involutive. *)
6969
Succeed Definition test A `{HasEquivs A}
7070
(F : A -> A -> A) `{!Is0Bifunctor F, !Is1Bifunctor F} (a : Braiding F)
71-
: @braiding_op _ _ _ _ _ _ _ _ (@braiding_op _ _ _ _ _ _ _ _ a) = a
71+
: @braiding_op _ _ _ _ _ _ _ _ _ (@braiding_op _ _ _ _ _ _ _ _ _ a) = a
7272
:= 1.

theories/WildCat/Monoidal.v

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ Class IsMonoidal (A : Type) `{HasEquivs A}
124124
(** These all satisfy the following properties: *)
125125
:= {
126126
(** A [cat_tensor] is a 1-bifunctor. *)
127-
is0bifunctor_cat_tensor :: Is0Bifunctor cat_tensor;
128-
is1bifunctor_cat_tensor :: Is1Bifunctor cat_tensor;
127+
is0bifunctor_cat_tensor : Is0Bifunctor cat_tensor;
128+
is1bifunctor_cat_tensor : Is1Bifunctor cat_tensor;
129129
(** A natural isomorphism [associator] witnessing the associativity of the tensor product. *)
130130
cat_tensor_associator :: Associator cat_tensor;
131131
(** A natural isomorphism [left_unitor] witnessing the left unit law. *)
@@ -138,6 +138,9 @@ Class IsMonoidal (A : Type) `{HasEquivs A}
138138
cat_tensor_pentagon_identity :: PentagonIdentity cat_tensor;
139139
}.
140140

141+
Existing Instance is0bifunctor_cat_tensor | 10.
142+
Existing Instance is1bifunctor_cat_tensor | 10.
143+
141144
(** TODO: Braided monoidal categories *)
142145

143146
(** ** Symmetric Monoidal Categories *)
@@ -207,6 +210,11 @@ Section Associator.
207210

208211
End Associator.
209212

213+
Definition associator_op' {A : Type} `{HasEquivs A} {F : A -> A -> A}
214+
`{!Is0Bifunctor F, !Is1Bifunctor F, assoc : !Associator (A:=A^op) F}
215+
: Associator F
216+
:= associator_op (A:=A^op) (assoc := assoc).
217+
210218
(** ** Theory about [LeftUnitor] and [RightUnitor] *)
211219

212220
Section LeftUnitor.
@@ -223,14 +231,15 @@ End LeftUnitor.
223231

224232
(** ** Theory about [Braiding] *)
225233

226-
Section Braiding.
227-
Context {A : Type} `{HasEquivs A} {F : A -> A -> A}
228-
`{!Is0Bifunctor F, !Is1Bifunctor F, braid : !Braiding F}.
229-
230-
Global Instance braiding_op : Braiding (A:=A^op) F
231-
:= (nattrans_op (nattrans_flip braid)).
234+
Global Instance braiding_op {A : Type} `{HasEquivs A} {F : A -> A -> A}
235+
`{!Is0Bifunctor F, !Is1Bifunctor F, braid : !Braiding F}
236+
: Braiding (A:=A^op) F
237+
:= nattrans_op (nattrans_flip braid).
232238

233-
End Braiding.
239+
Definition braiding_op' {A : Type} `{HasEquivs A} {F : A -> A -> A}
240+
`{!Is0Bifunctor F, !Is1Bifunctor F, braid : !Braiding (A:=A^op) F}
241+
: Braiding F
242+
:= braiding_op (A:=A^op) (braid := braid).
234243

235244
(** ** Theory about [SymmetricBraid] *)
236245

@@ -425,6 +434,12 @@ Section SymmetricBraid.
425434

426435
End SymmetricBraid.
427436

437+
Definition symmetricbraiding_op' {A : Type} {F : A -> A -> A}
438+
`{HasEquivs A, !Is0Bifunctor F, !Is1Bifunctor F,
439+
H' : !SymmetricBraiding (A:=A^op) F}
440+
: SymmetricBraiding F
441+
:= symmetricbraiding_op (A:=A^op) (F := F).
442+
428443
(** ** Opposite Monoidal Categories *)
429444

430445
Global Instance ismonoidal_op {A : Type} (tensor : A -> A -> A) (unit : A)
@@ -451,8 +466,52 @@ Proof.
451466
rapply cat_tensor_pentagon_identity.
452467
Defined.
453468

454-
(** ** Further Coherence Conditions *)
469+
Definition ismonoidal_op' {A : Type} (tensor : A -> A -> A) (unit : A)
470+
`{HasEquivs A} `{!IsMonoidal A^op tensor unit}
471+
: IsMonoidal A tensor unit
472+
:= ismonoidal_op (A:=A^op) tensor unit.
455473

474+
Global Instance issymmetricmonoidal_op {A : Type} (tensor : A -> A -> A) (unit : A)
475+
`{IsSymmetricMonoidal A tensor unit}
476+
: IsSymmetricMonoidal A^op tensor unit.
477+
Proof.
478+
snrapply Build_IsSymmetricMonoidal.
479+
- rapply ismonoidal_op.
480+
- rapply symmetricbraiding_op.
481+
- intros a b c; unfold op in a, b, c; simpl.
482+
snrefine (_ $@ (_ $@L (_ $@R _))).
483+
2: exact ((braide _ _)^-1$).
484+
2: { nrapply cate_moveR_V1.
485+
symmetry.
486+
nrefine ((_ $@R _) $@ _).
487+
1: nrapply 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+
nrapply 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+
nrapply 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: nrapply cate_buildequiv_fun.
507+
Defined.
508+
509+
Definition issymmetricmonoidal_op' {A : Type} (tensor : A -> A -> A) (unit : A)
510+
`{HasEquivs A} `{H' : !IsSymmetricMonoidal A^op tensor unit}
511+
: IsSymmetricMonoidal A tensor unit
512+
:= issymmetricmonoidal_op (A:=A^op) tensor unit.
513+
514+
(** ** Further Coherence Conditions *)
456515
(** In MacLane'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. *)
457516

458517
(** The left unitor of a tensor can be decomposed as an associator and a functorial action of the tensor on a left unitor. *)

0 commit comments

Comments
 (0)