Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 85075bc

Browse files
committed
refactor(category_theory/monoidal): rearrange simp lemmas to work better with coherence (#13409)
Change the direction of some simp lemma for monoidal categories, and remove some unused lemmas. This PR is effectively a "no-op": no substantial changes to proofs. However, it should enable making `coherence` more powerful soon (following suggestions of @yuma-mizuno)! Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent 9f75d75 commit 85075bc

File tree

8 files changed

+70
-144
lines changed

8 files changed

+70
-144
lines changed

src/category_theory/monoidal/End.lean

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ def tensoring_right_monoidal [monoidal_category.{v} C] : monoidal_functor C (C
5050
μ := λ X Y,
5151
{ app := λ Z, (α_ Z X Y).hom,
5252
naturality' := λ Z Z' f, by { dsimp, rw associator_naturality, simp, } },
53-
μ_natural' := λ X Y X' Y' f g, by { ext Z, dsimp, simp [associator_naturality], },
53+
μ_natural' := λ X Y X' Y' f g, by { ext Z, dsimp,
54+
simp only [←id_tensor_comp_tensor_id g f, id_tensor_comp, ←tensor_id, category.assoc,
55+
associator_naturality, associator_naturality_assoc], },
5456
associativity' := λ X Y Z, by { ext W, dsimp, simp [pentagon], },
5557
left_unitality' := λ X, by { ext Y, dsimp, rw [category.id_comp, triangle, ←tensor_comp], simp, },
5658
right_unitality' := λ X,

src/category_theory/monoidal/Mon_.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,8 @@ def trivial : Mon_ C :=
5858
{ X := 𝟙_ C,
5959
one := 𝟙 _,
6060
mul := (λ_ _).hom,
61-
mul_assoc' :=
62-
by simp_rw [triangle_assoc, iso.cancel_iso_hom_right, tensor_right_iff, unitors_equal],
63-
mul_one' := by simp [unitors_equal] }
61+
mul_assoc' := by coherence,
62+
mul_one' := by coherence }
6463

6564
instance : inhabited (Mon_ C) := ⟨trivial C⟩
6665

src/category_theory/monoidal/braided.lean

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,16 @@ I couldn't find a detailed proof in print, but this is discussed in:
8181
variables (C : Type u₁) [category.{v₁} C] [monoidal_category C] [braided_category C]
8282

8383
lemma braiding_left_unitor_aux₁ (X : C) :
84-
(α_ (𝟙_ C) (𝟙_ C) X).hom ≫ (𝟙 _ ⊗ (β_ X (𝟙_ C)).inv) ≫ (α_ _ X _).inv ≫ ((λ_ X).hom ⊗ 𝟙 _) =
85-
((λ_ _).hom ⊗ 𝟙 X) ≫ (β_ X _).inv :=
84+
(α_ (𝟙_ C) (𝟙_ C) X).hom ≫ (𝟙 (𝟙_ C) ⊗ (β_ X (𝟙_ C)).inv) ≫ (α_ _ X _).inv ≫ ((λ_ X).hom ⊗ 𝟙 _) =
85+
((λ_ _).hom ⊗ 𝟙 X) ≫ (β_ X (𝟙_ C)).inv :=
8686
by { rw [←left_unitor_tensor, left_unitor_naturality], simp, }
8787

8888
lemma braiding_left_unitor_aux₂ (X : C) :
8989
((β_ X (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫ ((λ_ X).hom ⊗ (𝟙 (𝟙_ C))) = (ρ_ X).hom ⊗ (𝟙 (𝟙_ C)) :=
9090
calc ((β_ X (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫ ((λ_ X).hom ⊗ (𝟙 (𝟙_ C)))
9191
= ((β_ X (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫ (α_ _ _ _).hom ≫ (α_ _ _ _).inv ≫
9292
((λ_ X).hom ⊗ (𝟙 (𝟙_ C)))
93-
: by simp
93+
: by coherence
9494
... = ((β_ X (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫ (α_ _ _ _).hom ≫ (𝟙 _ ⊗ (β_ X _).hom) ≫
9595
(𝟙 _ ⊗ (β_ X _).inv) ≫ (α_ _ _ _).inv ≫ ((λ_ X).hom ⊗ (𝟙 (𝟙_ C)))
9696
: by { slice_rhs 3 4 { rw [←id_tensor_comp, iso.hom_inv_id, tensor_id], }, rw [id_comp], }
@@ -111,16 +111,16 @@ lemma braiding_left_unitor (X : C) : (β_ X (𝟙_ C)).hom ≫ (λ_ X).hom = (ρ
111111
by rw [←tensor_right_iff, comp_tensor_id, braiding_left_unitor_aux₂]
112112

113113
lemma braiding_right_unitor_aux₁ (X : C) :
114-
(α_ X (𝟙_ C) (𝟙_ C)).inv ≫ ((β_ (𝟙_ C) X).inv ⊗ 𝟙 _) ≫ (α_ _ X _).hom ≫ (𝟙 _ ⊗ (ρ_ X).hom) =
115-
(𝟙 X ⊗ (ρ_ _).hom) ≫ (β_ _ X).inv :=
114+
(α_ X (𝟙_ C) (𝟙_ C)).inv ≫ ((β_ (𝟙_ C) X).inv ⊗ 𝟙 (𝟙_ C)) ≫ (α_ _ X _).hom ≫ (𝟙 _ ⊗ (ρ_ X).hom) =
115+
(𝟙 X ⊗ (ρ_ _).hom) ≫ (β_ (𝟙_ C) X).inv :=
116116
by { rw [←right_unitor_tensor, right_unitor_naturality], simp, }
117117

118118
lemma braiding_right_unitor_aux₂ (X : C) :
119119
((𝟙 (𝟙_ C)) ⊗ (β_ (𝟙_ C) X).hom) ≫ ((𝟙 (𝟙_ C)) ⊗ (ρ_ X).hom) = (𝟙 (𝟙_ C)) ⊗ (λ_ X).hom :=
120120
calc ((𝟙 (𝟙_ C)) ⊗ (β_ (𝟙_ C) X).hom) ≫ ((𝟙 (𝟙_ C)) ⊗ (ρ_ X).hom)
121121
= ((𝟙 (𝟙_ C)) ⊗ (β_ (𝟙_ C) X).hom) ≫ (α_ _ _ _).inv ≫ (α_ _ _ _).hom ≫
122122
((𝟙 (𝟙_ C)) ⊗ (ρ_ X).hom)
123-
: by simp
123+
: by coherence
124124
... = ((𝟙 (𝟙_ C)) ⊗ (β_ (𝟙_ C) X).hom) ≫ (α_ _ _ _).inv ≫ ((β_ _ X).hom ⊗ 𝟙 _) ≫
125125
((β_ _ X).inv ⊗ 𝟙 _) ≫ (α_ _ _ _).hom ≫ ((𝟙 (𝟙_ C)) ⊗ (ρ_ X).hom)
126126
: by { slice_rhs 3 4 { rw [←comp_tensor_id, iso.hom_inv_id, tensor_id], }, rw [id_comp], }

src/category_theory/monoidal/category.lean

Lines changed: 36 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -186,43 +186,35 @@ by { rw [←tensor_comp], simp }
186186
(g ⊗ (𝟙 W)) ≫ ((𝟙 Z) ⊗ f) = g ⊗ f :=
187187
by { rw [←tensor_comp], simp }
188188

189+
@[simp]
190+
lemma right_unitor_conjugation {X Y : C} (f : X ⟶ Y) :
191+
(f ⊗ (𝟙 (𝟙_ C))) = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv :=
192+
by rw [←right_unitor_naturality_assoc, iso.hom_inv_id, category.comp_id]
193+
194+
@[simp]
195+
lemma left_unitor_conjugation {X Y : C} (f : X ⟶ Y) :
196+
((𝟙 (𝟙_ C)) ⊗ f) = (λ_ X).hom ≫ f ≫ (λ_ Y).inv :=
197+
by rw [←left_unitor_naturality_assoc, iso.hom_inv_id, category.comp_id]
198+
189199
@[reassoc]
190200
lemma left_unitor_inv_naturality {X X' : C} (f : X ⟶ X') :
191201
f ≫ (λ_ X').inv = (λ_ X).inv ≫ (𝟙 _ ⊗ f) :=
192-
begin
193-
apply (cancel_mono (λ_ X').hom).1,
194-
simp only [assoc, comp_id, iso.inv_hom_id],
195-
rw [left_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_comp]
196-
end
202+
by simp
197203

198204
@[reassoc]
199205
lemma right_unitor_inv_naturality {X X' : C} (f : X ⟶ X') :
200206
f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f ⊗ 𝟙 _) :=
201-
begin
202-
apply (cancel_mono (ρ_ X').hom).1,
203-
simp only [assoc, comp_id, iso.inv_hom_id],
204-
rw [right_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_comp]
205-
end
207+
by simp
206208

207-
@[simp]
208-
lemma right_unitor_conjugation {X Y : C} (f : X ⟶ Y) :
209-
(ρ_ X).inv ≫ (f ⊗ (𝟙 (𝟙_ C))) ≫ (ρ_ Y).hom = f :=
210-
by rw [right_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_comp]
211-
212-
@[simp]
213-
lemma left_unitor_conjugation {X Y : C} (f : X ⟶ Y) :
214-
(λ_ X).inv ≫ ((𝟙 (𝟙_ C)) ⊗ f) ≫ (λ_ Y).hom = f :=
215-
by rw [left_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_comp]
216-
217-
@[simp] lemma tensor_left_iff
209+
lemma tensor_left_iff
218210
{X Y : C} (f g : X ⟶ Y) :
219211
((𝟙 (𝟙_ C)) ⊗ f = (𝟙 (𝟙_ C)) ⊗ g) ↔ (f = g) :=
220-
by { rw [←cancel_mono (λ_ Y).hom, left_unitor_naturality, left_unitor_naturality], simp }
212+
by simp
221213

222-
@[simp] lemma tensor_right_iff
214+
lemma tensor_right_iff
223215
{X Y : C} (f g : X ⟶ Y) :
224216
(f ⊗ (𝟙 (𝟙_ C)) = g ⊗ (𝟙 (𝟙_ C))) ↔ (f = g) :=
225-
by { rw [←cancel_mono (ρ_ Y).hom, right_unitor_naturality, right_unitor_naturality], simp }
217+
by simp
226218

227219
/-! The lemmas in the next section are true by coherence,
228220
but we prove them directly as they are used in proving the coherence theorem. -/
@@ -247,13 +239,9 @@ lemma right_unitor_tensor_inv (X Y : C) :
247239
((ρ_ (X ⊗ Y)).inv) = ((𝟙 X) ⊗ (ρ_ Y).inv) ≫ (α_ X Y (𝟙_ C)).inv :=
248240
eq_of_inv_eq_inv (by simp)
249241

250-
lemma triangle_assoc_comp_left (X Y : C) :
251-
(α_ X (𝟙_ C) Y).hom ≫ ((𝟙 X) ⊗ (λ_ Y).hom) = (ρ_ X).hom ⊗ 𝟙 Y :=
252-
monoidal_category.triangle X Y
253-
254242
@[simp, reassoc] lemma triangle_assoc_comp_right (X Y : C) :
255243
(α_ X (𝟙_ C) Y).inv ≫ ((ρ_ X).hom ⊗ 𝟙 Y) = ((𝟙 X) ⊗ (λ_ Y).hom) :=
256-
by rw [←triangle_assoc_comp_left, iso.inv_hom_id_assoc]
244+
by rw [←triangle, iso.inv_hom_id_assoc]
257245

258246
@[simp, reassoc] lemma triangle_assoc_comp_left_inv (X Y : C) :
259247
((𝟙 X) ⊗ (λ_ Y).inv) ≫ (α_ X (𝟙_ C) Y).inv = ((ρ_ X).inv ⊗ 𝟙 Y) :=
@@ -270,55 +258,47 @@ lemma associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟶ X') (g : Y ⟶ Y
270258
(f ⊗ (g ⊗ h)) ≫ (α_ X' Y' Z').inv = (α_ X Y Z).inv ≫ ((f ⊗ g) ⊗ h) :=
271259
by { rw [comp_inv_eq, assoc, associator_naturality], simp }
272260

273-
@[reassoc]
274-
lemma id_tensor_associator_naturality {X Y Z Z' : C} (h : Z ⟶ Z') :
275-
(𝟙 (X ⊗ Y) ⊗ h) ≫ (α_ X Y Z').hom = (α_ X Y Z).hom ≫ (𝟙 X ⊗ (𝟙 Y ⊗ h)) :=
276-
by { rw [←tensor_id, associator_naturality], }
277-
278-
@[reassoc]
279-
lemma id_tensor_associator_inv_naturality {X Y Z X' : C} (f : X ⟶ X') :
280-
(f ⊗ 𝟙 (Y ⊗ Z)) ≫ (α_ X' Y Z).inv = (α_ X Y Z).inv ≫ ((f ⊗ 𝟙 Y) ⊗ 𝟙 Z) :=
281-
by { rw [←tensor_id, associator_inv_naturality] }
282-
283-
@[reassoc]
261+
@[reassoc, simp]
284262
lemma associator_conjugation {X X' Y Y' Z Z' : C} (f : X ⟶ X') (g : Y ⟶ Y') (h : Z ⟶ Z') :
285-
(α_ X Y Z).hom ≫ (f ⊗ (g ⊗ h)) ≫ (α_ X' Y' Z').inv = (f ⊗ g) ⊗ h :=
263+
(f ⊗ g) ⊗ h = (α_ X Y Z).hom ≫ (f ⊗ (g ⊗ h)) ≫ (α_ X' Y' Z').inv :=
286264
by rw [associator_inv_naturality, hom_inv_id_assoc]
287265

288266
@[reassoc]
289267
lemma associator_inv_conjugation {X X' Y Y' Z Z' : C} (f : X ⟶ X') (g : Y ⟶ Y') (h : Z ⟶ Z') :
290-
(α_ X Y Z).inv ≫ ((f ⊗ g) ⊗ h) ≫ (α_ X' Y' Z').hom = f ⊗ g ⊗ h :=
268+
f ⊗ g ⊗ h = (α_ X Y Z).inv ≫ ((f ⊗ g) ⊗ h) ≫ (α_ X' Y' Z').hom :=
291269
by rw [associator_naturality, inv_hom_id_assoc]
292270

271+
-- TODO these next two lemmas aren't so fundamental, and perhaps could be removed
272+
-- (replacing their usages by their proofs).
293273
@[reassoc]
294-
lemma right_unitor_inv_comp_tensor (f : W ⟶ X) (g : 𝟙_ C ⟶ Z) :
295-
(ρ_ _).inv ≫ (f ⊗ g) = f ≫ (ρ_ _).inv ≫ (𝟙 _g) :=
296-
by { slice_rhs 1 2 { rw right_unitor_inv_naturality }, simp }
274+
lemma id_tensor_associator_naturality {X Y Z Z' : C} (h : Z ⟶ Z') :
275+
(𝟙 (X ⊗ Y) ⊗ h) ≫ (α_ X Y Z').hom = (α_ X Y Z).hom ≫ (𝟙 X(𝟙 Y ⊗ h)) :=
276+
by { rw [←tensor_id, associator_naturality], }
297277

298278
@[reassoc]
299-
lemma left_unitor_inv_comp_tensor (f : W ⟶ X) (g : 𝟙_ C ⟶ Z) :
300-
(λ_ _).inv ≫ (g ⊗ f) = f ≫ (λ_ _).inv ≫ (g ⊗ 𝟙 _) :=
301-
by { slice_rhs 1 2 { rw left_unitor_inv_naturality }, simp }
279+
lemma id_tensor_associator_inv_naturality {X Y Z X' : C} (f : X ⟶ X') :
280+
(f ⊗ 𝟙 (Y ⊗ Z)) ≫ (α_ X' Y Z).inv = (α_ X Y Z).inv ≫ ((f ⊗ 𝟙 Y) ⊗ 𝟙 Z) :=
281+
by { rw [←tensor_id, associator_inv_naturality] }
302282

303283
@[simp, reassoc]
304284
lemma hom_inv_id_tensor {V W X Y Z : C} (f : V ≅ W) (g : X ⟶ Y) (h : Y ⟶ Z) :
305-
(f.hom ⊗ g) ≫ (f.inv ⊗ h) = 𝟙 V ⊗ (g ≫ h) :=
306-
by rw [←tensor_comp, f.hom_inv_id]
285+
(f.hom ⊗ g) ≫ (f.inv ⊗ h) = (𝟙 V ⊗ g) ≫ (𝟙 V ⊗ h) :=
286+
by rw [←tensor_comp, f.hom_inv_id, id_tensor_comp]
307287

308288
@[simp, reassoc]
309289
lemma inv_hom_id_tensor {V W X Y Z : C} (f : V ≅ W) (g : X ⟶ Y) (h : Y ⟶ Z) :
310-
(f.inv ⊗ g) ≫ (f.hom ⊗ h) = 𝟙 W ⊗ (g ≫ h) :=
311-
by rw [←tensor_comp, f.inv_hom_id]
290+
(f.inv ⊗ g) ≫ (f.hom ⊗ h) = (𝟙 W ⊗ g) ≫ (𝟙 W ⊗ h) :=
291+
by rw [←tensor_comp, f.inv_hom_id, id_tensor_comp]
312292

313293
@[simp, reassoc]
314294
lemma tensor_hom_inv_id {V W X Y Z : C} (f : V ≅ W) (g : X ⟶ Y) (h : Y ⟶ Z) :
315-
(g ⊗ f.hom) ≫ (h ⊗ f.inv) = (g ≫ h) ⊗ 𝟙 V :=
316-
by rw [←tensor_comp, f.hom_inv_id]
295+
(g ⊗ f.hom) ≫ (h ⊗ f.inv) = (g ⊗ 𝟙 V) ≫ (h ⊗ 𝟙 V) :=
296+
by rw [←tensor_comp, f.hom_inv_id, comp_tensor_id]
317297

318298
@[simp, reassoc]
319299
lemma tensor_inv_hom_id {V W X Y Z : C} (f : V ≅ W) (g : X ⟶ Y) (h : Y ⟶ Z) :
320-
(g ⊗ f.inv) ≫ (h ⊗ f.hom) = (g ≫ h) ⊗ 𝟙 W :=
321-
by rw [←tensor_comp, f.inv_hom_id]
300+
(g ⊗ f.inv) ≫ (h ⊗ f.hom) = (g ⊗ 𝟙 W) ≫ (h ⊗ 𝟙 W) :=
301+
by rw [←tensor_comp, f.inv_hom_id, comp_tensor_id]
322302

323303
end
324304

src/category_theory/monoidal/center.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ def tensor_obj (X Y : center C) : center C :=
127127
slice_rhs 6 7 { rw [tensor_id, tensor_id, tensor_id_comp_id_tensor, ←id_tensor_comp_tensor_id,
128128
←tensor_id, ←tensor_id], },
129129
-- Now insert associators as needed to make the four half-braidings look identical
130-
slice_rhs 10 10 { rw associator_inv_conjugation, },
131-
slice_rhs 7 7 { rw associator_inv_conjugation, },
132-
slice_rhs 6 6 { rw associator_conjugation, },
133-
slice_rhs 3 3 { rw associator_conjugation, },
130+
slice_rhs 10 10 { rw associator_inv_conjugation, },
131+
slice_rhs 7 7 { rw associator_inv_conjugation, },
132+
slice_rhs 6 6 { rw associator_conjugation, },
133+
slice_rhs 3 3 { rw associator_conjugation, },
134134
-- Finish with an application of the coherence theorem.
135135
coherence,
136136
end,
@@ -175,7 +175,7 @@ def tensor_unit : center C :=
175175
def associator (X Y Z : center C) : tensor_obj (tensor_obj X Y) Z ≅ tensor_obj X (tensor_obj Y Z) :=
176176
iso_mk ⟨(α_ X.1 Y.1 Z.1).hom, λ U, begin
177177
dsimp,
178-
simp only [comp_tensor_id, id_tensor_comp, ←tensor_id, associator_conjugation],
178+
simp only [comp_tensor_id, id_tensor_comp, ←tensor_id, associator_conjugation],
179179
coherence,
180180
end
181181

src/category_theory/monoidal/free/coherence.lean

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,9 @@ begin
195195
simp only [discrete.functor_map_id, iso.cancel_iso_inv_left, category.assoc],
196196
dsimp, simp only [category.comp_id] },
197197
{ dsimp,
198-
simp only [←(iso.eq_comp_inv _).1 (right_unitor_tensor_inv _ _), iso.hom_inv_id_assoc,
199-
right_unitor_conjugation, discrete.functor_map_id, category.assoc],
198+
simp only [←(iso.eq_comp_inv _).1 (right_unitor_tensor_inv _ _), right_unitor_conjugation,
199+
discrete.functor_map_id, category.assoc,
200+
iso.hom_inv_id, iso.hom_inv_id_assoc, iso.inv_hom_id, iso.inv_hom_id_assoc],
200201
dsimp, simp only [category.comp_id], },
201202
{ dsimp at *,
202203
rw [id_tensor_comp, category.assoc, f_ih_g ⟦f_g⟧, ←category.assoc, f_ih_f ⟦f_f⟧, category.assoc,

src/category_theory/monoidal/opposite.lean

Lines changed: 11 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Scott Morrison
55
-/
6-
import category_theory.monoidal.category
6+
import category_theory.monoidal.coherence
77

88
/-!
99
# Monoidal opposites
@@ -115,38 +115,11 @@ instance monoidal_category_op : monoidal_category Cᵒᵖ :=
115115
associator := λ X Y Z, (α_ (unop X) (unop Y) (unop Z)).symm.op,
116116
left_unitor := λ X, (λ_ (unop X)).symm.op,
117117
right_unitor := λ X, (ρ_ (unop X)).symm.op,
118-
associator_naturality' :=
119-
begin
120-
intros,
121-
apply quiver.hom.unop_inj,
122-
simp [associator_inv_naturality],
123-
end,
124-
left_unitor_naturality' :=
125-
begin
126-
intros,
127-
apply quiver.hom.unop_inj,
128-
simp [left_unitor_inv_naturality],
129-
end,
130-
right_unitor_naturality' :=
131-
begin
132-
intros,
133-
apply quiver.hom.unop_inj,
134-
simp [right_unitor_inv_naturality],
135-
end,
136-
triangle' :=
137-
begin
138-
intros,
139-
apply quiver.hom.unop_inj,
140-
dsimp,
141-
simp,
142-
end,
143-
pentagon' :=
144-
begin
145-
intros,
146-
apply quiver.hom.unop_inj,
147-
dsimp,
148-
simp [pentagon_inv],
149-
end }
118+
associator_naturality' := by { intros, apply quiver.hom.unop_inj, simp, },
119+
left_unitor_naturality' := by { intros, apply quiver.hom.unop_inj, simp, },
120+
right_unitor_naturality' := by { intros, apply quiver.hom.unop_inj, simp, },
121+
triangle' := by { intros, apply quiver.hom.unop_inj, coherence, },
122+
pentagon' := by { intros, apply quiver.hom.unop_inj, coherence, }, }
150123

151124
lemma op_tensor_obj (X Y : Cᵒᵖ) : X ⊗ Y = op (unop X ⊗ unop Y) := rfl
152125
lemma op_tensor_unit : (𝟙_ Cᵒᵖ) = op (𝟙_ C) := rfl
@@ -158,38 +131,11 @@ instance monoidal_category_mop : monoidal_category Cᴹᵒᵖ :=
158131
associator := λ X Y Z, (α_ (unmop Z) (unmop Y) (unmop X)).symm.mop,
159132
left_unitor := λ X, (ρ_ (unmop X)).mop,
160133
right_unitor := λ X, (λ_ (unmop X)).mop,
161-
associator_naturality' :=
162-
begin
163-
intros,
164-
apply unmop_inj,
165-
simp [associator_inv_naturality],
166-
end,
167-
left_unitor_naturality' :=
168-
begin
169-
intros,
170-
apply unmop_inj,
171-
simp [right_unitor_naturality],
172-
end,
173-
right_unitor_naturality' :=
174-
begin
175-
intros,
176-
apply unmop_inj,
177-
simp [left_unitor_naturality],
178-
end,
179-
triangle' :=
180-
begin
181-
intros,
182-
apply unmop_inj,
183-
dsimp,
184-
simp,
185-
end,
186-
pentagon' :=
187-
begin
188-
intros,
189-
apply unmop_inj,
190-
dsimp,
191-
simp [pentagon_inv],
192-
end }
134+
associator_naturality' := by { intros, apply unmop_inj, simp, },
135+
left_unitor_naturality' := by { intros, apply unmop_inj, simp, },
136+
right_unitor_naturality' := by { intros, apply unmop_inj, simp, },
137+
triangle' := by { intros, apply unmop_inj, coherence, },
138+
pentagon' := by { intros, apply unmop_inj, coherence, }, }
193139

194140
lemma mop_tensor_obj (X Y : Cᴹᵒᵖ) : X ⊗ Y = mop (unmop Y ⊗ unmop X) := rfl
195141
lemma mop_tensor_unit : (𝟙_ Cᴹᵒᵖ) = mop (𝟙_ C) := rfl

src/category_theory/monoidal/transport.lean

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,8 @@ def lax_to_transported (e : C ≌ D) : lax_monoidal_functor C (transported e) :=
170170
conv_rhs { rw [←id_tensor_comp_tensor_id _ (e.unit_inv.app X)], },
171171
dsimp only [functor.comp_obj],
172172
slice_rhs 3 4 { rw [←id_tensor_comp, iso.hom_inv_id_app], dsimp, rw [tensor_id] },
173-
simp only [id_comp],
174-
simp [associator_naturality],
173+
simp only [associator_conjugation, ←tensor_id, ←tensor_comp, iso.inv_hom_id,
174+
iso.inv_hom_id_assoc, category.assoc, category.id_comp, category.comp_id],
175175
end,
176176
left_unitality' := λ X,
177177
begin
@@ -180,8 +180,7 @@ def lax_to_transported (e : C ≌ D) : lax_monoidal_functor C (transported e) :=
180180
rw equivalence.counit_app_functor,
181181
simp only [←e.functor.map_comp],
182182
congr' 1,
183-
rw [←left_unitor_naturality],
184-
simp,
183+
simp only [←left_unitor_naturality, id_comp, ←tensor_comp_assoc, comp_id],
185184
end,
186185
right_unitality' := λ X,
187186
begin
@@ -190,8 +189,7 @@ def lax_to_transported (e : C ≌ D) : lax_monoidal_functor C (transported e) :=
190189
rw equivalence.counit_app_functor,
191190
simp only [←e.functor.map_comp],
192191
congr' 1,
193-
rw [←right_unitor_naturality],
194-
simp,
192+
simp only [←right_unitor_naturality, id_comp, ←tensor_comp_assoc, comp_id],
195193
end, }.
196194

197195
/--

0 commit comments

Comments
 (0)