1
1
/-
2
2
Copyright (c) 2018 Michael Jendrusch. All rights reserved.
3
3
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
5
5
-/
6
6
import category_theory.products.basic
7
7
@@ -119,6 +119,7 @@ restate_axiom monoidal_category.right_unitor_naturality'
119
119
attribute [reassoc] monoidal_category.right_unitor_naturality
120
120
restate_axiom monoidal_category.pentagon'
121
121
restate_axiom monoidal_category.triangle'
122
+ attribute [reassoc] monoidal_category.pentagon
122
123
attribute [simp, reassoc] monoidal_category.triangle
123
124
124
125
open monoidal_category
@@ -175,11 +176,11 @@ variables {U V W X Y Z : C}
175
176
-- left_unitor_inv_naturality
176
177
-- right_unitor_inv_naturality
177
178
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) :
179
180
(f ≫ g) ⊗ (𝟙 Z) = (f ⊗ (𝟙 Z)) ≫ (g ⊗ (𝟙 Z)) :=
180
181
by { rw ←tensor_comp, simp }
181
182
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) :
183
184
(𝟙 Z) ⊗ (f ≫ g) = (𝟙 Z ⊗ f) ≫ (𝟙 Z ⊗ g) :=
184
185
by { rw ←tensor_comp, simp }
185
186
@@ -220,123 +221,20 @@ by rw [left_unitor_naturality, ←category.assoc, iso.inv_hom_id, category.id_co
220
221
@[simp] lemma tensor_left_iff
221
222
{X Y : C} (f g : X ⟶ Y) :
222
223
((𝟙 (𝟙_ 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 }
232
225
233
226
@[simp] lemma tensor_right_iff
234
227
{X Y : C} (f g : X ⟶ Y) :
235
228
(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 }
335
230
336
231
-- See Proposition 2.2.4 of <http://www-math.mit.edu/~etingof/egnobookfinal.pdf>
337
232
lemma left_unitor_tensor' (X Y : C) :
338
233
((α_ (𝟙_ 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]
340
238
341
239
@[simp]
342
240
lemma left_unitor_tensor (X Y : C) :
@@ -349,13 +247,16 @@ eq_of_inv_eq_inv (by simp)
349
247
350
248
@[simp]
351
249
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 :=
353
251
by { rw [←left_unitor_tensor_inv'], simp }
354
252
355
253
@[simp]
356
254
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]
359
260
360
261
@[simp]
361
262
lemma right_unitor_tensor_inv (X Y : C) :
@@ -364,27 +265,20 @@ eq_of_inv_eq_inv (by simp)
364
265
365
266
lemma associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟶ X') (g : Y ⟶ Y') (h : Z ⟶ Z') :
366
267
(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 }
372
269
373
270
lemma pentagon_inv (W X Y Z : C) :
374
271
((𝟙 W) ⊗ (α_ X Y Z).inv) ≫ (α_ W (X ⊗ Y) Z).inv ≫ ((α_ W X Y).inv ⊗ (𝟙 Z))
375
272
= (α_ 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])
380
274
381
275
lemma triangle_assoc_comp_left (X Y : C) :
382
276
(α_ X (𝟙_ C) Y).hom ≫ ((𝟙 X) ⊗ (λ_ Y).hom) = (ρ_ X).hom ⊗ 𝟙 Y :=
383
277
monoidal_category.triangle X Y
384
278
385
279
@[simp] lemma triangle_assoc_comp_right (X Y : C) :
386
280
(α_ 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 ]
388
282
389
283
@[simp] lemma triangle_assoc_comp_right_inv (X Y : C) :
390
284
((ρ_ X).inv ⊗ 𝟙 Y) ≫ (α_ X (𝟙_ C) Y).hom = ((𝟙 X) ⊗ (λ_ Y).inv) :=
@@ -402,6 +296,10 @@ begin
402
296
rw [←id_tensor_comp, iso.inv_hom_id, ←comp_tensor_id, iso.inv_hom_id]
403
297
end
404
298
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
+
405
303
end
406
304
407
305
section
0 commit comments