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

Commit e36656e

Browse files
committed
chore(category_theory/monoidal): golf some proofs (#6894)
Golfs proofs of `tensor_left_iff`, `tensor_right_iff`, `left_unitor_tensor'`, `right_unitor_tensor` and `unitors_equal` - in particular removes the file `monoidal/unitors` as all it contained was a proof of `unitors_equal` which is a two line proof.
1 parent e21b4bc commit e36656e

File tree

3 files changed

+23
-279
lines changed

3 files changed

+23
-279
lines changed

src/category_theory/monoidal/Mon_.lean

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Scott Morrison
55
-/
66
import category_theory.monoidal.discrete
7-
import category_theory.monoidal.unitors
87
import category_theory.limits.shapes.terminal
98
import algebra.punit_instances
109

src/category_theory/monoidal/category.lean

Lines changed: 23 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/-
22
Copyright (c) 2018 Michael Jendrusch. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Michael Jendrusch, Scott Morrison
4+
Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta
55
-/
66
import category_theory.products.basic
77

@@ -119,6 +119,7 @@ restate_axiom monoidal_category.right_unitor_naturality'
119119
attribute [reassoc] monoidal_category.right_unitor_naturality
120120
restate_axiom monoidal_category.pentagon'
121121
restate_axiom monoidal_category.triangle'
122+
attribute [reassoc] monoidal_category.pentagon
122123
attribute [simp, reassoc] monoidal_category.triangle
123124

124125
open monoidal_category
@@ -175,11 +176,11 @@ variables {U V W X Y Z : C}
175176
-- left_unitor_inv_naturality
176177
-- right_unitor_inv_naturality
177178

178-
@[simp] lemma comp_tensor_id (f : W ⟶ X) (g : X ⟶ Y) :
179+
@[reassoc, simp] lemma comp_tensor_id (f : W ⟶ X) (g : X ⟶ Y) :
179180
(f ≫ g) ⊗ (𝟙 Z) = (f ⊗ (𝟙 Z)) ≫ (g ⊗ (𝟙 Z)) :=
180181
by { rw ←tensor_comp, simp }
181182

182-
@[simp] lemma id_tensor_comp (f : W ⟶ X) (g : X ⟶ Y) :
183+
@[reassoc, simp] lemma id_tensor_comp (f : W ⟶ X) (g : X ⟶ Y) :
183184
(𝟙 Z) ⊗ (f ≫ g) = (𝟙 Z ⊗ f) ≫ (𝟙 Z ⊗ g) :=
184185
by { rw ←tensor_comp, simp }
185186

@@ -220,123 +221,20 @@ by rw [left_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_co
220221
@[simp] lemma tensor_left_iff
221222
{X Y : C} (f g : X ⟶ Y) :
222223
((𝟙 (𝟙_ C)) ⊗ f = (𝟙 (𝟙_ C)) ⊗ g) ↔ (f = g) :=
223-
begin
224-
split,
225-
{ intro h,
226-
have h' := congr_arg (λ k, (λ_ _).inv ≫ k) h,
227-
dsimp at h',
228-
rw [←left_unitor_inv_naturality, ←left_unitor_inv_naturality] at h',
229-
exact (cancel_mono _).1 h', },
230-
{ intro h, subst h, }
231-
end
224+
by { rw [←cancel_mono (λ_ Y).hom, left_unitor_naturality, left_unitor_naturality], simp }
232225

233226
@[simp] lemma tensor_right_iff
234227
{X Y : C} (f g : X ⟶ Y) :
235228
(f ⊗ (𝟙 (𝟙_ C)) = g ⊗ (𝟙 (𝟙_ C))) ↔ (f = g) :=
236-
begin
237-
split,
238-
{ intro h,
239-
have h' := congr_arg (λ k, (ρ_ _).inv ≫ k) h,
240-
dsimp at h',
241-
rw [←right_unitor_inv_naturality, ←right_unitor_inv_naturality] at h',
242-
exact (cancel_mono _).1 h' },
243-
{ intro h, subst h, }
244-
end
245-
246-
-- We now prove:
247-
-- ((α_ (𝟙_ C) X Y).hom) ≫
248-
-- ((λ_ (X ⊗ Y)).hom)
249-
-- = ((λ_ X).hom ⊗ (𝟙 Y))
250-
-- (and the corresponding fact for right unitors)
251-
-- following the proof on nLab:
252-
-- Lemma 2.2 at <https://ncatlab.org/nlab/revision/monoidal+category/115>
253-
254-
lemma left_unitor_product_aux_perimeter (X Y : C) :
255-
((α_ (𝟙_ C) (𝟙_ C) X).hom ⊗ (𝟙 Y)) ≫
256-
(α_ (𝟙_ C) ((𝟙_ C) ⊗ X) Y).hom ≫
257-
((𝟙 (𝟙_ C)) ⊗ (α_ (𝟙_ C) X Y).hom) ≫
258-
((𝟙 (𝟙_ C)) ⊗ (λ_ (X ⊗ Y)).hom)
259-
= (((ρ_ (𝟙_ C)).hom ⊗ (𝟙 X)) ⊗ (𝟙 Y)) ≫
260-
(α_ (𝟙_ C) X Y).hom :=
261-
begin
262-
conv_lhs { congr, skip, rw [←category.assoc] },
263-
rw [←category.assoc, monoidal_category.pentagon, associator_naturality, tensor_id,
264-
←monoidal_category.triangle, ←category.assoc]
265-
end
266-
267-
lemma left_unitor_product_aux_triangle (X Y : C) :
268-
((α_ (𝟙_ C) (𝟙_ C) X).hom ⊗ (𝟙 Y)) ≫
269-
(((𝟙 (𝟙_ C)) ⊗ (λ_ X).hom) ⊗ (𝟙 Y))
270-
= ((ρ_ (𝟙_ C)).hom ⊗ (𝟙 X)) ⊗ (𝟙 Y) :=
271-
by rw [←comp_tensor_id, ←monoidal_category.triangle]
272-
273-
lemma left_unitor_product_aux_square (X Y : C) :
274-
(α_ (𝟙_ C) ((𝟙_ C) ⊗ X) Y).hom ≫
275-
((𝟙 (𝟙_ C)) ⊗ (λ_ X).hom ⊗ (𝟙 Y))
276-
= (((𝟙 (𝟙_ C)) ⊗ (λ_ X).hom) ⊗ (𝟙 Y)) ≫
277-
(α_ (𝟙_ C) X Y).hom :=
278-
by rw associator_naturality
279-
280-
lemma left_unitor_product_aux (X Y : C) :
281-
((𝟙 (𝟙_ C)) ⊗ (α_ (𝟙_ C) X Y).hom) ≫
282-
((𝟙 (𝟙_ C)) ⊗ (λ_ (X ⊗ Y)).hom)
283-
= (𝟙 (𝟙_ C)) ⊗ ((λ_ X).hom ⊗ (𝟙 Y)) :=
284-
begin
285-
rw ←(cancel_epi (α_ (𝟙_ C) ((𝟙_ C) ⊗ X) Y).hom),
286-
rw left_unitor_product_aux_square,
287-
rw ←(cancel_epi ((α_ (𝟙_ C) (𝟙_ C) X).hom ⊗ (𝟙 Y))),
288-
slice_rhs 1 2 { rw left_unitor_product_aux_triangle },
289-
conv_lhs { rw [left_unitor_product_aux_perimeter] }
290-
end
291-
292-
lemma right_unitor_product_aux_perimeter (X Y : C) :
293-
((α_ X Y (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫
294-
(α_ X (Y ⊗ (𝟙_ C)) (𝟙_ C)).hom ≫
295-
((𝟙 X) ⊗ (α_ Y (𝟙_ C) (𝟙_ C)).hom) ≫
296-
((𝟙 X) ⊗ (𝟙 Y) ⊗ (λ_ (𝟙_ C)).hom)
297-
= ((ρ_ (X ⊗ Y)).hom ⊗ (𝟙 (𝟙_ C))) ≫
298-
(α_ X Y (𝟙_ C)).hom :=
299-
begin
300-
transitivity (((α_ X Y _).hom ⊗ 𝟙 _) ≫ (α_ X _ _).hom ≫
301-
(𝟙 X ⊗ (α_ Y _ _).hom)) ≫
302-
(𝟙 X ⊗ 𝟙 Y ⊗ (λ_ _).hom),
303-
{ conv_lhs { congr, skip, rw [←category.assoc] },
304-
conv_rhs { rw [category.assoc] } },
305-
{ conv_lhs { congr, rw [monoidal_category.pentagon] },
306-
conv_rhs { congr, rw [←monoidal_category.triangle] },
307-
conv_rhs { rw [category.assoc] },
308-
conv_rhs { congr, skip, congr, congr, rw [←tensor_id] },
309-
conv_rhs { congr, skip, rw [associator_naturality] },
310-
conv_rhs { rw [←category.assoc] } }
311-
end
312-
313-
lemma right_unitor_product_aux_triangle (X Y : C) :
314-
((𝟙 X) ⊗ (α_ Y (𝟙_ C) (𝟙_ C)).hom) ≫
315-
((𝟙 X) ⊗ (𝟙 Y) ⊗ (λ_ (𝟙_ C)).hom)
316-
= (𝟙 X) ⊗ (ρ_ Y).hom ⊗ (𝟙 (𝟙_ C)) :=
317-
by rw [←id_tensor_comp, ←monoidal_category.triangle]
318-
319-
lemma right_unitor_product_aux_square (X Y : C) :
320-
(α_ X (Y ⊗ (𝟙_ C)) (𝟙_ C)).hom ≫
321-
((𝟙 X) ⊗ (ρ_ Y).hom ⊗ (𝟙 (𝟙_ C)))
322-
= (((𝟙 X) ⊗ (ρ_ Y).hom) ⊗ (𝟙 (𝟙_ C))) ≫
323-
(α_ X Y (𝟙_ C)).hom :=
324-
by rw [associator_naturality]
325-
326-
lemma right_unitor_product_aux (X Y : C) :
327-
((α_ X Y (𝟙_ C)).hom ⊗ (𝟙 (𝟙_ C))) ≫
328-
(((𝟙 X) ⊗ (ρ_ Y).hom) ⊗ (𝟙 (𝟙_ C)))
329-
= ((ρ_ (X ⊗ Y)).hom ⊗ (𝟙 (𝟙_ C))) :=
330-
begin
331-
rw ←(cancel_mono (α_ X Y (𝟙_ C)).hom),
332-
slice_lhs 2 3 { rw ←right_unitor_product_aux_square },
333-
rw [←right_unitor_product_aux_triangle, ←right_unitor_product_aux_perimeter],
334-
end
229+
by { rw [←cancel_mono (ρ_ Y).hom, right_unitor_naturality, right_unitor_naturality], simp }
335230

336231
-- See Proposition 2.2.4 of <http://www-math.mit.edu/~etingof/egnobookfinal.pdf>
337232
lemma left_unitor_tensor' (X Y : C) :
338233
((α_ (𝟙_ C) X Y).hom) ≫ ((λ_ (X ⊗ Y)).hom) = ((λ_ X).hom ⊗ (𝟙 Y)) :=
339-
by rw [←tensor_left_iff, id_tensor_comp, left_unitor_product_aux]
234+
by
235+
rw [←tensor_left_iff, id_tensor_comp, ←cancel_epi (α_ (𝟙_ C) (𝟙_ C ⊗ X) Y).hom,
236+
←cancel_epi ((α_ (𝟙_ C) (𝟙_ C) X).hom ⊗ 𝟙 Y), pentagon_assoc, triangle, ←associator_naturality,
237+
←comp_tensor_id_assoc, triangle, associator_naturality, tensor_id]
340238

341239
@[simp]
342240
lemma left_unitor_tensor (X Y : C) :
@@ -349,13 +247,16 @@ eq_of_inv_eq_inv (by simp)
349247

350248
@[simp]
351249
lemma left_unitor_tensor_inv (X Y : C) :
352-
((λ_ (X ⊗ Y)).inv) = ((λ_ X).inv ⊗ (𝟙 Y)) ≫ ((α_ (𝟙_ C) X Y).hom) :=
250+
(λ_ (X ⊗ Y)).inv = ((λ_ X).inv ⊗ (𝟙 Y)) ≫ (α_ (𝟙_ C) X Y).hom :=
353251
by { rw [←left_unitor_tensor_inv'], simp }
354252

355253
@[simp]
356254
lemma right_unitor_tensor (X Y : C) :
357-
((ρ_ (X ⊗ Y)).hom) = ((α_ X Y (𝟙_ C)).hom) ≫ ((𝟙 X) ⊗ (ρ_ Y).hom) :=
358-
by rw [←tensor_right_iff, comp_tensor_id, right_unitor_product_aux]
255+
(ρ_ (X ⊗ Y)).hom = (α_ X Y (𝟙_ C)).hom ≫ ((𝟙 X) ⊗ (ρ_ Y).hom) :=
256+
by
257+
rw [←tensor_right_iff, comp_tensor_id, ←cancel_mono (α_ X Y (𝟙_ C)).hom, assoc,
258+
associator_naturality, ←triangle_assoc, ←triangle, id_tensor_comp, pentagon_assoc,
259+
←associator_naturality, tensor_id]
359260

360261
@[simp]
361262
lemma right_unitor_tensor_inv (X Y : C) :
@@ -364,27 +265,20 @@ eq_of_inv_eq_inv (by simp)
364265

365266
lemma associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟶ X') (g : Y ⟶ Y') (h : Z ⟶ Z') :
366267
(f ⊗ (g ⊗ h)) ≫ (α_ X' Y' Z').inv = (α_ X Y Z).inv ≫ ((f ⊗ g) ⊗ h) :=
367-
begin
368-
apply (cancel_mono (α_ X' Y' Z').hom).1,
369-
simp only [assoc, comp_id, iso.inv_hom_id],
370-
rw [associator_naturality, ←category.assoc, iso.inv_hom_id, category.id_comp]
371-
end
268+
by { rw [comp_inv_eq, assoc, associator_naturality], simp }
372269

373270
lemma pentagon_inv (W X Y Z : C) :
374271
((𝟙 W) ⊗ (α_ X Y Z).inv) ≫ (α_ W (X ⊗ Y) Z).inv ≫ ((α_ W X Y).inv ⊗ (𝟙 Z))
375272
= (α_ W X (Y ⊗ Z)).inv ≫ (α_ (W ⊗ X) Y Z).inv :=
376-
begin
377-
apply category_theory.eq_of_inv_eq_inv,
378-
simp [monoidal_category.pentagon]
379-
end
273+
category_theory.eq_of_inv_eq_inv (by simp [pentagon])
380274

381275
lemma triangle_assoc_comp_left (X Y : C) :
382276
(α_ X (𝟙_ C) Y).hom ≫ ((𝟙 X) ⊗ (λ_ Y).hom) = (ρ_ X).hom ⊗ 𝟙 Y :=
383277
monoidal_category.triangle X Y
384278

385279
@[simp] lemma triangle_assoc_comp_right (X Y : C) :
386280
(α_ X (𝟙_ C) Y).inv ≫ ((ρ_ X).hom ⊗ 𝟙 Y) = ((𝟙 X) ⊗ (λ_ Y).hom) :=
387-
by rw [←triangle_assoc_comp_left, ←category.assoc, iso.inv_hom_id, category.id_comp]
281+
by rw [←triangle_assoc_comp_left, iso.inv_hom_id_assoc]
388282

389283
@[simp] lemma triangle_assoc_comp_right_inv (X Y : C) :
390284
((ρ_ X).inv ⊗ 𝟙 Y) ≫ (α_ X (𝟙_ C) Y).hom = ((𝟙 X) ⊗ (λ_ Y).inv) :=
@@ -402,6 +296,10 @@ begin
402296
rw [←id_tensor_comp, iso.inv_hom_id, ←comp_tensor_id, iso.inv_hom_id]
403297
end
404298

299+
lemma unitors_equal : (λ_ (𝟙_ C)).hom = (ρ_ (𝟙_ C)).hom :=
300+
by rw [←tensor_left_iff, ←cancel_epi (α_ (𝟙_ C) (𝟙_ _) (𝟙_ _)).hom, ←cancel_mono (ρ_ (𝟙_ C)).hom,
301+
triangle, ←right_unitor_tensor, right_unitor_naturality]
302+
405303
end
406304

407305
section

src/category_theory/monoidal/unitors.lean

Lines changed: 0 additions & 153 deletions
This file was deleted.

0 commit comments

Comments
 (0)