Skip to content

Commit 3ab8e58

Browse files
committed
feat(Category/Theory/Monoidal): monoids in a symmetric category form a symmetric category (#13058)
1 parent 5136ec9 commit 3ab8e58

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,12 @@ theorem braiding_rightUnitor (X : C) : (β_ (𝟙_ C) X).hom ≫ (ρ_ X).hom = (
332332
theorem braiding_tensorUnit_left (X : C) : (β_ (𝟙_ C) X).hom = (λ_ X).hom ≫ (ρ_ X).inv := by
333333
simp [← braiding_rightUnitor]
334334

335+
@[reassoc, simp]
336+
theorem braiding_inv_tensorUnit_left (X : C) : (β_ (𝟙_ C) X).inv = (ρ_ X).hom ≫ (λ_ X).inv := by
337+
rw [Iso.inv_ext]
338+
rw [braiding_tensorUnit_left]
339+
coherence
340+
335341
@[reassoc]
336342
theorem leftUnitor_inv_braiding (X : C) : (λ_ X).inv ≫ (β_ (𝟙_ C) X).hom = (ρ_ X).inv := by
337343
simp
@@ -347,6 +353,12 @@ theorem rightUnitor_inv_braiding (X : C) : (ρ_ X).inv ≫ (β_ X (𝟙_ C)).hom
347353
theorem braiding_tensorUnit_right (X : C) : (β_ X (𝟙_ C)).hom = (ρ_ X).hom ≫ (λ_ X).inv := by
348354
simp [← rightUnitor_inv_braiding]
349355

356+
@[reassoc, simp]
357+
theorem braiding_inv_tensorUnit_right (X : C) : (β_ X (𝟙_ C)).inv = (λ_ X).hom ≫ (ρ_ X).inv := by
358+
rw [Iso.inv_ext]
359+
rw [braiding_tensorUnit_right]
360+
coherence
361+
350362
end
351363

352364
/--

Mathlib/CategoryTheory/Monoidal/Mon_.lean

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,8 @@ theorem one_rightUnitor {M : Mon_ C} :
392392
simp [← unitors_equal]
393393
#align Mon_.one_right_unitor Mon_.one_rightUnitor
394394

395+
section BraidedCategory
396+
395397
variable [BraidedCategory C]
396398

397399
theorem Mon_tensor_one_mul (M N : Mon_ C) :
@@ -526,10 +528,69 @@ theorem associator_hom_hom (X Y Z : Mon_ C) : (α_ X Y Z).hom.hom = (α_ X.X Y.X
526528
@[simp]
527529
theorem associator_inv_hom (X Y Z : Mon_ C) : (α_ X Y Z).inv.hom = (α_ X.X Y.X Z.X).inv := rfl
528530

531+
@[simp]
532+
theorem tensor_one (M N : Mon_ C) : (M ⊗ N).one = (λ_ (𝟙_ C)).inv ≫ (M.one ⊗ N.one) := rfl
533+
534+
@[simp]
535+
theorem tensor_mul (M N : Mon_ C) : (M ⊗ N).mul =
536+
tensor_μ C (M.X, N.X) (M.X, N.X) ≫ (M.mul ⊗ N.mul) := rfl
537+
529538
instance monMonoidal : MonoidalCategory (Mon_ C) where
530539
tensorHom_def := by intros; ext; simp [tensorHom_def]
531540
#align Mon_.Mon_monoidal Mon_.monMonoidal
532541

542+
theorem one_braiding {X Y : Mon_ C} : (X ⊗ Y).one ≫ (β_ X.X Y.X).hom = (Y ⊗ X).one := by
543+
simp only [monMonoidalStruct_tensorObj_X, tensor_one, Category.assoc,
544+
BraidedCategory.braiding_naturality, braiding_tensorUnit_right, Iso.cancel_iso_inv_left]
545+
coherence
546+
547+
end BraidedCategory
548+
549+
/-!
550+
We next show that if `C` is symmetric, then `Mon_ C` is braided, and indeed symmetric.
551+
552+
Note that `Mon_ C` is *not* braided in general when `C` is only braided.
553+
554+
The more interesting construction is the 2-category of monoids in `C`,
555+
bimodules between the monoids, and intertwiners between the bimodules.
556+
557+
When `C` is braided, that is a monoidal 2-category.
558+
-/
559+
section SymmetricCategory
560+
561+
variable [SymmetricCategory C]
562+
563+
theorem mul_braiding {X Y : Mon_ C} :
564+
(X ⊗ Y).mul ≫ (β_ X.X Y.X).hom = ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫ (Y ⊗ X).mul := by
565+
simp only [monMonoidalStruct_tensorObj_X, tensor_mul, tensor_μ, Category.assoc,
566+
BraidedCategory.braiding_naturality, BraidedCategory.braiding_tensor_right,
567+
BraidedCategory.braiding_tensor_left, comp_whiskerRight, whisker_assoc,
568+
MonoidalCategory.whiskerLeft_comp, pentagon_assoc, pentagon_inv_hom_hom_hom_inv_assoc,
569+
Iso.inv_hom_id_assoc, whiskerLeft_hom_inv_assoc]
570+
slice_lhs 3 4 =>
571+
-- We use symmetry here:
572+
rw [← MonoidalCategory.whiskerLeft_comp, ← comp_whiskerRight, SymmetricCategory.symmetry]
573+
simp only [id_whiskerRight, MonoidalCategory.whiskerLeft_id, Category.id_comp, Category.assoc,
574+
pentagon_inv_assoc, Iso.hom_inv_id_assoc]
575+
slice_lhs 1 2 =>
576+
rw [← associator_inv_naturality_left]
577+
slice_lhs 2 3 =>
578+
rw [Iso.inv_hom_id]
579+
rw [Category.id_comp]
580+
slice_lhs 2 3 =>
581+
rw [← associator_naturality_right]
582+
slice_lhs 1 2 =>
583+
rw [← tensorHom_def]
584+
simp only [Category.assoc]
585+
586+
instance : SymmetricCategory (Mon_ C) where
587+
braiding := fun X Y => isoOfIso (β_ X.X Y.X) one_braiding mul_braiding
588+
symmetry := fun X Y => by
589+
ext
590+
simp [← SymmetricCategory.braiding_swap_eq_inv_braiding]
591+
592+
end SymmetricCategory
593+
533594
end Mon_
534595

535596
/-!

0 commit comments

Comments
 (0)