Skip to content

Commit 007ad74

Browse files
committed
refactor(CategoryTheory/Monoidal/Braided): use monoidalComp in the proofs (#10078)
- [x] depends on: #10061
1 parent 490d2d4 commit 007ad74

File tree

11 files changed

+411
-475
lines changed

11 files changed

+411
-475
lines changed

Mathlib/CategoryTheory/Monad/EquivMon.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,14 @@ def ofMon (M : Mon_ (C ⥤ C)) : Monad C where
6666
μ' := M.mul
6767
left_unit' := fun X => by
6868
-- Porting note: now using `erw`
69-
erw [← NatTrans.id_hcomp_app M.one, ← NatTrans.comp_app, M.mul_one]
69+
erw [← whiskerLeft_app, ← NatTrans.comp_app, M.mul_one]
7070
rfl
7171
right_unit' := fun X => by
7272
-- Porting note: now using `erw`
73-
erw [← NatTrans.hcomp_id_app M.one, ← NatTrans.comp_app, M.one_mul]
73+
erw [← whiskerRight_app, ← NatTrans.comp_app, M.one_mul]
7474
rfl
7575
assoc' := fun X => by
76-
rw [← NatTrans.hcomp_id_app, ← NatTrans.comp_app]
76+
rw [← whiskerLeft_app, ← whiskerRight_app, ← NatTrans.comp_app]
7777
-- Porting note: had to add this step:
7878
erw [M.mul_assoc]
7979
simp

Mathlib/CategoryTheory/Monoidal/Bimod.lean

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ set_option linter.uppercaseLean3 false in
180180

181181
variable (A)
182182

183+
attribute [local simp] id_tensorHom tensorHom_id
184+
183185
/-- A monoid object as a bimodule over itself. -/
184186
@[simps]
185187
def regular : Bimod A A where
@@ -663,7 +665,7 @@ theorem hom_inv_id : hom P ≫ inv P = 𝟙 _ := by
663665
slice_lhs 3 3 => rw [← Iso.inv_hom_id_assoc (α_ R.X R.X P.X) (𝟙 R.X ⊗ P.actLeft)]
664666
slice_lhs 4 6 => rw [← Category.assoc, ← coequalizer.condition]
665667
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
666-
slice_lhs 3 4 => rw [← comp_tensor_id, Mon_.one_mul]
668+
slice_lhs 3 4 => rw [← comp_tensor_id, tensorHom_id, tensorHom_id, Mon_.one_mul]
667669
slice_rhs 1 2 => rw [Category.comp_id]
668670
coherence
669671
set_option linter.uppercaseLean3 false in
@@ -730,7 +732,7 @@ theorem hom_inv_id : hom P ≫ inv P = 𝟙 _ := by
730732
slice_lhs 2 3 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
731733
slice_lhs 3 4 => rw [coequalizer.condition]
732734
slice_lhs 2 3 => rw [← MonoidalCategory.tensor_id, associator_naturality]
733-
slice_lhs 3 4 => rw [← id_tensor_comp, Mon_.mul_one]
735+
slice_lhs 3 4 => rw [← id_tensor_comp, id_tensorHom, id_tensorHom, Mon_.mul_one]
734736
slice_rhs 1 2 => rw [Category.comp_id]
735737
coherence
736738
set_option linter.uppercaseLean3 false in
@@ -833,10 +835,10 @@ theorem id_whisker_left_bimod {X Y : Mon_ C} {M N : Bimod X Y} (f : M ⟶ N) :
833835
slice_rhs 4 4 => rw [← Iso.inv_hom_id_assoc (α_ X.X X.X N.X) (𝟙 X.X ⊗ N.actLeft)]
834836
slice_rhs 5 7 => rw [← Category.assoc, ← coequalizer.condition]
835837
slice_rhs 3 4 => rw [← MonoidalCategory.tensor_id, associator_inv_naturality]
836-
slice_rhs 4 5 => rw [← comp_tensor_id, Mon_.one_mul]
838+
slice_rhs 4 5 => rw [← comp_tensor_id, tensorHom_id, tensorHom_id, Mon_.one_mul]
837839
have : (λ_ (X.X ⊗ N.X)).inv ≫ (α_ (𝟙_ C) X.X N.X).inv ≫ ((λ_ X.X).hom ⊗ 𝟙 N.X) = 𝟙 _ := by
838840
pure_coherence
839-
slice_rhs 2 4 => rw [this]
841+
slice_rhs 2 4 => rw [← tensorHom_id, this]
840842
slice_rhs 1 2 => rw [Category.comp_id]
841843
set_option linter.uppercaseLean3 false in
842844
#align Bimod.id_whisker_left_Bimod Bimod.id_whisker_left_bimod
@@ -890,10 +892,10 @@ theorem whisker_right_id_bimod {X Y : Mon_ C} {M N : Bimod X Y} (f : M ⟶ N) :
890892
slice_rhs 3 4 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
891893
slice_rhs 4 5 => rw [coequalizer.condition]
892894
slice_rhs 3 4 => rw [← MonoidalCategory.tensor_id, associator_naturality]
893-
slice_rhs 4 5 => rw [← id_tensor_comp, Mon_.mul_one]
895+
slice_rhs 4 5 => rw [← id_tensor_comp, id_tensorHom, id_tensorHom, Mon_.mul_one]
894896
have : (ρ_ (N.X ⊗ Y.X)).inv ≫ (α_ N.X Y.X (𝟙_ C)).hom ≫ (𝟙 N.X ⊗ (ρ_ Y.X).hom) = 𝟙 _ := by
895897
pure_coherence
896-
slice_rhs 2 4 => rw [this]
898+
slice_rhs 2 4 => rw [← id_tensorHom, this]
897899
slice_rhs 1 2 => rw [Category.comp_id]
898900
set_option linter.uppercaseLean3 false in
899901
#align Bimod.whisker_right_id_Bimod Bimod.whisker_right_id_bimod

Mathlib/CategoryTheory/Monoidal/Braided.lean

Lines changed: 161 additions & 324 deletions
Large diffs are not rendered by default.

Mathlib/CategoryTheory/Monoidal/Category.lean

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -463,18 +463,30 @@ theorem associator_inv_naturality_right (X Y : C) {Z Z' : C} (f : Z ⟶ Z') :
463463
theorem tensor_whiskerLeft_symm (X Y : C) {Z Z' : C} (f : Z ⟶ Z') :
464464
X ◁ Y ◁ f = (α_ X Y Z).inv ≫ (X ⊗ Y) ◁ f ≫ (α_ X Y Z').hom := by simp
465465

466+
@[reassoc]
467+
theorem leftUnitor_naturality' {X Y : C} (f : X ⟶ Y) :
468+
(𝟙_ C) ◁ f ≫ (λ_ Y).hom = (λ_ X).hom ≫ f := by
469+
simp
470+
466471
@[reassoc]
467472
theorem leftUnitor_inv_naturality' {X Y : C} (f : X ⟶ Y) :
468-
f ≫ (λ_ Y).inv = (λ_ X).inv ≫ (_ ◁ f) := by simp
473+
f ≫ (λ_ Y).inv = (λ_ X).inv ≫ _ ◁ f := by simp
469474

475+
@[reassoc]
470476
theorem id_whiskerLeft_symm {X X' : C} (f : X ⟶ X') :
471477
f = (λ_ X).inv ≫ 𝟙_ C ◁ f ≫ (λ_ X').hom := by
472478
simp only [id_whiskerLeft, assoc, inv_hom_id, comp_id, inv_hom_id_assoc]
473479

480+
@[reassoc]
481+
theorem rightUnitor_naturality' {X Y : C} (f : X ⟶ Y) :
482+
f ▷ (𝟙_ C) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
483+
simp
484+
474485
@[reassoc]
475486
theorem rightUnitor_inv_naturality' {X X' : C} (f : X ⟶ X') :
476-
f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f ▷ _) := by simp
487+
f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ f ▷ _ := by simp
477488

489+
@[reassoc]
478490
theorem whiskerRight_id_symm {X Y : C} (f : X ⟶ Y) :
479491
f = (ρ_ X).inv ≫ f ▷ 𝟙_ C ≫ (ρ_ Y).hom := by
480492
simp
@@ -823,16 +835,6 @@ theorem leftUnitor_conjugation {X Y : C} (f : X ⟶ Y) :
823835
simp
824836
#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
825837

826-
@[reassoc]
827-
theorem leftUnitor_naturality' {X Y : C} (f : X ⟶ Y) :
828-
(𝟙 (𝟙_ C) ⊗ f) ≫ (λ_ Y).hom = (λ_ X).hom ≫ f :=
829-
by simp
830-
831-
@[reassoc]
832-
theorem rightUnitor_naturality' {X Y : C} (f : X ⟶ Y) :
833-
(f ⊗ 𝟙 (𝟙_ C)) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
834-
simp
835-
836838
@[reassoc]
837839
theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟶ X') :
838840
f ≫ (λ_ X').inv = (λ_ X).inv ≫ (𝟙 _ ⊗ f) := by

Mathlib/CategoryTheory/Monoidal/Center.lean

Lines changed: 92 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,19 @@ We define `Center C` to be pairs `⟨X, b⟩`, where `X : C` and `b` is a half-b
1717
We show that `Center C` is braided monoidal,
1818
and provide the monoidal functor `Center.forget` from `Center C` back to `C`.
1919
20-
## Future work
20+
## Implementation notes
2121
22-
Verifying the various axioms here is done by tedious rewriting.
22+
Verifying the various axioms directly requires tedious rewriting.
2323
Using the `slice` tactic may make the proofs marginally more readable.
2424
2525
More exciting, however, would be to make possible one of the following options:
2626
1. Integration with homotopy.io / globular to give "picture proofs".
2727
2. The monoidal coherence theorem, so we can ignore associators
28-
(after which most of these proofs are trivial;
29-
I'm unsure if the monoidal coherence theorem is even usable in dependent type theory).
28+
(after which most of these proofs are trivial).
3029
3. Automating these proofs using `rewrite_search` or some relative.
3130
31+
In this file, we take the second approach using the monoidal composition `⊗≫` and the
32+
`coherence` tactic.
3233
-/
3334

3435

@@ -56,9 +57,9 @@ structure HalfBraiding (X : C) where
5657
β : ∀ U, X ⊗ U ≅ U ⊗ X
5758
monoidal : ∀ U U', (β (U ⊗ U')).hom =
5859
(α_ _ _ _).inv ≫
59-
((β U).hom ⊗ 𝟙 U') ≫ (α_ _ _ _).hom ≫ (𝟙 U ⊗ (β U').hom) ≫ (α_ _ _ _).inv := by
60+
((β U).hom U') ≫ (α_ _ _ _).hom ≫ (U ◁ (β U').hom) ≫ (α_ _ _ _).inv := by
6061
aesop_cat
61-
naturality : ∀ {U U'} (f : U ⟶ U'), (𝟙 X ⊗ f) ≫ (β U').hom = (β U).hom ≫ (f ⊗ 𝟙 X) := by
62+
naturality : ∀ {U U'} (f : U ⟶ U'), (X ◁ f) ≫ (β U').hom = (β U).hom ≫ (f X) := by
6263
aesop_cat
6364
#align category_theory.half_braiding CategoryTheory.HalfBraiding
6465

@@ -84,7 +85,7 @@ variable {C}
8485
@[ext] -- @[nolint has_nonempty_instance] -- Porting note: This linter does not exist yet.
8586
structure Hom (X Y : Center C) where
8687
f : X.1 ⟶ Y.1
87-
comm : ∀ U, (f ⊗ 𝟙 U) ≫ (Y.2.β U).hom = (X.2.β U).hom ≫ (𝟙 U ⊗ f) := by aesop_cat
88+
comm : ∀ U, (f U) ≫ (Y.2.β U).hom = (X.2.β U).hom ≫ (U ◁ f) := by aesop_cat
8889
#align category_theory.center.hom CategoryTheory.Center.Hom
8990

9091
attribute [reassoc (attr := simp)] Hom.comm
@@ -118,7 +119,8 @@ a morphism whose underlying morphism is an isomorphism.
118119
def isoMk {X Y : Center C} (f : X ⟶ Y) [IsIso f.f] : X ≅ Y where
119120
hom := f
120121
inv := ⟨inv f.f,
121-
fun U => by simp [← cancel_epi (f.f ⊗ 𝟙 U), ← comp_tensor_id_assoc, ← id_tensor_comp]⟩
122+
fun U => by simp [← cancel_epi (f.f ▷ U), ← comp_whiskerRight_assoc,
123+
← MonoidalCategory.whiskerLeft_comp] ⟩
122124
#align category_theory.center.iso_mk CategoryTheory.Center.isoMk
123125

124126
instance isIso_of_f_isIso {X Y : Center C} (f : X ⟶ Y) [IsIso f.f] : IsIso f := by
@@ -132,48 +134,86 @@ def tensorObj (X Y : Center C) : Center C :=
132134
⟨X.1 ⊗ Y.1,
133135
{ β := fun U =>
134136
α_ _ _ _ ≪≫
135-
(Iso.refl X.1 ⊗ Y.2.β U) ≪≫ (α_ _ _ _).symm ≪≫ (X.2.β U ⊗ Iso.refl Y.1) ≪≫ α_ _ _ _
137+
(whiskerLeftIso X.1 (Y.2.β U)) ≪≫ (α_ _ _ _).symm ≪≫
138+
(whiskerRightIso (X.2.β U) Y.1) ≪≫ α_ _ _ _
136139
monoidal := fun U U' => by
137-
dsimp
138-
simp only [comp_tensor_id, id_tensor_comp, Category.assoc, HalfBraiding.monoidal]
139-
-- On the RHS, we'd like to commute `((X.snd.β U).hom ⊗ 𝟙 Y.fst) ⊗ 𝟙 U'`
140-
-- and `𝟙 U ⊗ 𝟙 X.fst ⊗ (Y.snd.β U').hom` past each other,
141-
-- but there are some associators we need to get out of the way first.
142-
slice_rhs 6 8 => rw [pentagon]
143-
slice_rhs 5 6 => rw [associator_naturality]
144-
slice_rhs 7 8 => rw [← associator_naturality]
145-
slice_rhs 6 7 =>
146-
rw [tensor_id, tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id,
147-
← tensor_id, ← tensor_id]
148-
-- Now insert associators as needed to make the four half-braidings look identical
149-
slice_rhs 10 10 => rw [associator_inv_conjugation]
150-
slice_rhs 7 7 => rw [associator_inv_conjugation]
151-
slice_rhs 6 6 => rw [associator_conjugation]
152-
slice_rhs 3 3 => rw [associator_conjugation]
153-
-- Finish with an application of the coherence theorem.
154-
coherence
155-
naturality := fun f => by
156-
dsimp
157-
rw [Category.assoc, Category.assoc, Category.assoc, Category.assoc,
158-
id_tensor_associator_naturality_assoc, ← id_tensor_comp_assoc, HalfBraiding.naturality,
159-
id_tensor_comp_assoc, associator_inv_naturality_assoc, ← comp_tensor_id_assoc,
160-
HalfBraiding.naturality, comp_tensor_id_assoc, associator_naturality, ← tensor_id] }⟩
140+
dsimp only [Iso.trans_hom, whiskerLeftIso_hom, Iso.symm_hom, whiskerRightIso_hom]
141+
simp only [HalfBraiding.monoidal]
142+
-- We'd like to commute `X.1 ◁ U ◁ (HalfBraiding.β Y.2 U').hom`
143+
-- and `((HalfBraiding.β X.2 U).hom ▷ U' ▷ Y.1)` past each other.
144+
-- We do this with the help of the monoidal composition `⊗≫` and the `coherence` tactic.
145+
calc
146+
_ = 𝟙 _ ⊗≫
147+
X.1 ◁ (HalfBraiding.β Y.2 U).hom ▷ U' ⊗≫
148+
(_ ◁ (HalfBraiding.β Y.2 U').hom ≫
149+
(HalfBraiding.β X.2 U).hom ▷ _) ⊗≫
150+
U ◁ (HalfBraiding.β X.2 U').hom ▷ Y.1 ⊗≫ 𝟙 _ := by coherence
151+
_ = _ := by rw [whisker_exchange]; coherence
152+
naturality := fun {U U'} f => by
153+
dsimp only [Iso.trans_hom, whiskerLeftIso_hom, Iso.symm_hom, whiskerRightIso_hom]
154+
calc
155+
_ = 𝟙 _ ⊗≫
156+
(X.1 ◁ (Y.1 ◁ f ≫ (HalfBraiding.β Y.2 U').hom)) ⊗≫
157+
(HalfBraiding.β X.2 U').hom ▷ Y.1 ⊗≫ 𝟙 _ := by coherence
158+
_ = 𝟙 _ ⊗≫
159+
X.1 ◁ (HalfBraiding.β Y.2 U).hom ⊗≫
160+
(X.1 ◁ f ≫ (HalfBraiding.β X.2 U').hom) ▷ Y.1 ⊗≫ 𝟙 _ := by
161+
rw [HalfBraiding.naturality]; coherence
162+
_ = _ := by rw [HalfBraiding.naturality]; coherence }⟩
161163
#align category_theory.center.tensor_obj CategoryTheory.Center.tensorObj
162164

165+
@[reassoc]
166+
theorem whiskerLeft_comm (X : Center C) {Y₁ Y₂ : Center C} (f : Y₁ ⟶ Y₂) (U : C) :
167+
(X.1 ◁ f.f) ▷ U ≫ ((tensorObj X Y₂).2.β U).hom =
168+
((tensorObj X Y₁).2.β U).hom ≫ U ◁ X.1 ◁ f.f := by
169+
dsimp only [tensorObj_fst, tensorObj_snd_β, Iso.trans_hom, whiskerLeftIso_hom,
170+
Iso.symm_hom, whiskerRightIso_hom]
171+
calc
172+
_ = 𝟙 _ ⊗≫
173+
X.fst ◁ (f.f ▷ U ≫ (HalfBraiding.β Y₂.snd U).hom) ⊗≫
174+
(HalfBraiding.β X.snd U).hom ▷ Y₂.fst ⊗≫ 𝟙 _ := by coherence
175+
_ = 𝟙 _ ⊗≫
176+
X.fst ◁ (HalfBraiding.β Y₁.snd U).hom ⊗≫
177+
((X.fst ⊗ U) ◁ f.f ≫ (HalfBraiding.β X.snd U).hom ▷ Y₂.fst) ⊗≫ 𝟙 _ := by
178+
rw [f.comm]; coherence
179+
_ = _ := by rw [whisker_exchange]; coherence
180+
181+
/-- Auxiliary definition for the `MonoidalCategory` instance on `Center C`. -/
182+
def whiskerLeft (X : Center C) {Y₁ Y₂ : Center C} (f : Y₁ ⟶ Y₂) :
183+
tensorObj X Y₁ ⟶ tensorObj X Y₂ where
184+
f := X.1 ◁ f.f
185+
comm U := whiskerLeft_comm X f U
186+
187+
@[reassoc]
188+
theorem whiskerRight_comm {X₁ X₂: Center C} (f : X₁ ⟶ X₂) (Y : Center C) (U : C) :
189+
f.f ▷ Y.1 ▷ U ≫ ((tensorObj X₂ Y).2.β U).hom =
190+
((tensorObj X₁ Y).2.β U).hom ≫ U ◁ f.f ▷ Y.1 := by
191+
dsimp only [tensorObj_fst, tensorObj_snd_β, Iso.trans_hom, whiskerLeftIso_hom,
192+
Iso.symm_hom, whiskerRightIso_hom]
193+
calc
194+
_ = 𝟙 _ ⊗≫
195+
(f.f ▷ (Y.fst ⊗ U) ≫ X₂.fst ◁ (HalfBraiding.β Y.snd U).hom) ⊗≫
196+
(HalfBraiding.β X₂.snd U).hom ▷ Y.fst ⊗≫ 𝟙 _ := by coherence
197+
_ = 𝟙 _ ⊗≫
198+
X₁.fst ◁ (HalfBraiding.β Y.snd U).hom ⊗≫
199+
(f.f ▷ U ≫ (HalfBraiding.β X₂.snd U).hom) ▷ Y.fst ⊗≫ 𝟙 _ := by
200+
rw [← whisker_exchange]; coherence
201+
_ = _ := by rw [f.comm]; coherence
202+
203+
/-- Auxiliary definition for the `MonoidalCategory` instance on `Center C`. -/
204+
def whiskerRight {X₁ X₂ : Center C} (f : X₁ ⟶ X₂) (Y : Center C) :
205+
tensorObj X₁ Y ⟶ tensorObj X₂ Y where
206+
f := f.f ▷ Y.1
207+
comm U := whiskerRight_comm f Y U
208+
163209
/-- Auxiliary definition for the `MonoidalCategory` instance on `Center C`. -/
164210
@[simps]
165211
def tensorHom {X₁ Y₁ X₂ Y₂ : Center C} (f : X₁ ⟶ Y₁) (g : X₂ ⟶ Y₂) :
166212
tensorObj X₁ X₂ ⟶ tensorObj Y₁ Y₂ where
167213
f := f.f ⊗ g.f
168214
comm U := by
169-
dsimp
170-
rw [Category.assoc, Category.assoc, Category.assoc, Category.assoc, associator_naturality_assoc,
171-
← tensor_id_comp_id_tensor, Category.assoc, ← id_tensor_comp_assoc, g.comm,
172-
id_tensor_comp_assoc, tensor_id_comp_id_tensor_assoc, ← id_tensor_comp_tensor_id,
173-
Category.assoc, associator_inv_naturality_assoc, id_tensor_associator_inv_naturality_assoc,
174-
tensor_id, id_tensor_comp_tensor_id_assoc, ← tensor_id_comp_id_tensor g.f, Category.assoc,
175-
← comp_tensor_id_assoc, f.comm, comp_tensor_id_assoc, id_tensor_associator_naturality,
176-
associator_naturality_assoc, ← id_tensor_comp, tensor_id_comp_id_tensor]
215+
rw [tensorHom_def, comp_whiskerRight_assoc, whiskerLeft_comm, whiskerRight_comm_assoc,
216+
MonoidalCategory.whiskerLeft_comp]
177217
#align category_theory.center.tensor_hom CategoryTheory.Center.tensorHom
178218

179219
section
@@ -209,14 +249,14 @@ attribute [local simp] associator_naturality leftUnitor_naturality rightUnitor_n
209249

210250
attribute [local simp] Center.associator Center.leftUnitor Center.rightUnitor
211251

252+
attribute [local simp] Center.whiskerLeft Center.whiskerRight Center.tensorHom
253+
212254
instance : MonoidalCategory (Center C) where
213255
tensorObj X Y := tensorObj X Y
214256
tensorHom f g := tensorHom f g
215257
tensorHom_def := by intros; ext; simp [tensorHom_def]
216-
-- Todo: replace it by `X.1 ◁ f.f`
217-
whiskerLeft X _ _ f := tensorHom (𝟙 X) f
218-
-- Todo: replace it by `f.f ▷ Y.1`
219-
whiskerRight f Y := tensorHom f (𝟙 Y)
258+
whiskerLeft X _ _ f := whiskerLeft X f
259+
whiskerRight f Y := whiskerRight f Y
220260
tensorUnit := tensorUnit
221261
associator := associator
222262
leftUnitor := leftUnitor
@@ -231,17 +271,18 @@ theorem tensor_fst (X Y : Center C) : (X ⊗ Y).1 = X.1 ⊗ Y.1 :=
231271
theorem tensor_β (X Y : Center C) (U : C) :
232272
(X ⊗ Y).2.β U =
233273
α_ _ _ _ ≪≫
234-
(Iso.refl X.1 ⊗ Y.2.β U) ≪≫ (α_ _ _ _).symm ≪≫ (X.2.β U ⊗ Iso.refl Y.1) ≪≫ α_ _ _ _ :=
274+
(whiskerLeftIso X.1 (Y.2.β U)) ≪≫ (α_ _ _ _).symm ≪≫
275+
(whiskerRightIso (X.2.β U) Y.1) ≪≫ α_ _ _ _ :=
235276
rfl
236277
#align category_theory.center.tensor_β CategoryTheory.Center.tensor_β
237278

238279
@[simp]
239280
theorem whiskerLeft_f (X : Center C) {Y₁ Y₂ : Center C} (f : Y₁ ⟶ Y₂) : (X ◁ f).f = X.1 ◁ f.f :=
240-
id_tensorHom X.1 f.f
281+
rfl
241282

242283
@[simp]
243284
theorem whiskerRight_f {X₁ X₂ : Center C} (f : X₁ ⟶ X₂) (Y : Center C) : (f ▷ Y).f = f.f ▷ Y.1 :=
244-
tensorHom_id f.f Y.1
285+
rfl
245286

246287
@[simp]
247288
theorem tensor_f {X₁ Y₁ X₂ Y₂ : Center C} (f : X₁ ⟶ Y₁) (g : X₂ ⟶ Y₂) : (f ⊗ g).f = f.f ⊗ g.f :=
@@ -344,20 +385,9 @@ def ofBraided : MonoidalFunctor C (Center C) where
344385
obj := ofBraidedObj
345386
map f :=
346387
{ f
347-
comm := fun U => braiding_naturality _ _ }
348-
ε :=
349-
{ f := 𝟙 _
350-
comm := fun U => by
351-
dsimp
352-
rw [tensor_id, Category.id_comp, tensor_id, Category.comp_id, ← braiding_rightUnitor,
353-
Category.assoc, Iso.hom_inv_id, Category.comp_id] }
354-
μ X Y :=
355-
{ f := 𝟙 _
356-
comm := fun U => by
357-
dsimp
358-
rw [tensor_id, tensor_id, Category.id_comp, Category.comp_id, ← Iso.inv_comp_eq,
359-
← Category.assoc, ← Category.assoc, ← Iso.comp_inv_eq, Category.assoc, hexagon_reverse,
360-
Category.assoc] }
388+
comm := fun U => braiding_naturality_left f U }
389+
ε := { f := 𝟙 _ }
390+
μ X Y := { f := 𝟙 _ }
361391
#align category_theory.center.of_braided CategoryTheory.Center.ofBraided
362392

363393
end

Mathlib/CategoryTheory/Monoidal/CommMon_.lean

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,9 @@ def laxBraidedToCommMon : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C ⥤ CommM
171171
set_option linter.uppercaseLean3 false in
172172
#align CommMon_.equiv_lax_braided_functor_punit.lax_braided_to_CommMon CommMon_.EquivLaxBraidedFunctorPUnit.laxBraidedToCommMon
173173

174-
/-- Implementation of `CommMon_.equivLaxBraidedFunctorPUnit`. -/
174+
attribute [local simp] id_tensorHom tensorHom_id
175+
176+
/-- Implementation of `CommMon_.equivLaxBraidedFunctorPunit`. -/
175177
@[simps]
176178
def commMonToLaxBraided : CommMon_ C ⥤ LaxBraidedFunctor (Discrete PUnit.{u + 1}) C where
177179
obj A :=

0 commit comments

Comments
 (0)