@@ -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
208211End 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
212220Section 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
426435End 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
430445Global Instance ismonoidal_op {A : Type } (tensor : A -> A -> A) (unit : A)
@@ -451,8 +466,52 @@ Proof.
451466 rapply cat_tensor_pentagon_identity.
452467Defined .
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