|
| 1 | +/- |
| 2 | +Copyright (c) 2018 Michael Jendrusch. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta, Jakob von Raumer |
| 5 | +
|
| 6 | +! This file was ported from Lean 3 source module category_theory.monoidal.coherence_lemmas |
| 7 | +! leanprover-community/mathlib commit b8b8bf3ea0c625fa1f950034a184e07c67f7bcfe |
| 8 | +! Please do not edit these lines, except to modify the commit id |
| 9 | +! if you have ported upstream changes. |
| 10 | +-/ |
| 11 | +import Mathlib.Tactic.CategoryTheory.Coherence |
| 12 | + |
| 13 | +/-! |
| 14 | +# Lemmas which are consequences of monoidal coherence |
| 15 | +
|
| 16 | +These lemmas are all proved `by coherence`. |
| 17 | +
|
| 18 | +## Future work |
| 19 | +Investigate whether these lemmas are really needed, |
| 20 | +or if they can be replaced by use of the `coherence` tactic. |
| 21 | +-/ |
| 22 | + |
| 23 | + |
| 24 | +open CategoryTheory Category Iso |
| 25 | + |
| 26 | +namespace CategoryTheory.MonoidalCategory |
| 27 | + |
| 28 | +variable {C : Type _} [Category C] [MonoidalCategory C] |
| 29 | + |
| 30 | +-- See Proposition 2.2.4 of <http://www-math.mit.edu/~etingof/egnobookfinal.pdf> |
| 31 | +@[reassoc] |
| 32 | +theorem leftUnitor_tensor' (X Y : C) : |
| 33 | + (α_ (𝟙_ C) X Y).hom ≫ (λ_ (X ⊗ Y)).hom = (λ_ X).hom ⊗ 𝟙 Y := by |
| 34 | + coherence |
| 35 | +#align category_theory.monoidal_category.left_unitor_tensor' CategoryTheory.MonoidalCategory.leftUnitor_tensor' |
| 36 | + |
| 37 | +@[reassoc, simp] |
| 38 | +theorem leftUnitor_tensor (X Y : C) : |
| 39 | + (λ_ (X ⊗ Y)).hom = (α_ (𝟙_ C) X Y).inv ≫ ((λ_ X).hom ⊗ 𝟙 Y) := by |
| 40 | + coherence |
| 41 | +#align category_theory.monoidal_category.left_unitor_tensor CategoryTheory.MonoidalCategory.leftUnitor_tensor |
| 42 | + |
| 43 | +@[reassoc] |
| 44 | +theorem leftUnitor_tensor_inv (X Y : C) : |
| 45 | + (λ_ (X ⊗ Y)).inv = ((λ_ X).inv ⊗ 𝟙 Y) ≫ (α_ (𝟙_ C) X Y).hom := by coherence |
| 46 | +#align category_theory.monoidal_category.left_unitor_tensor_inv CategoryTheory.MonoidalCategory.leftUnitor_tensor_inv |
| 47 | + |
| 48 | +@[reassoc] |
| 49 | +theorem id_tensor_rightUnitor_inv (X Y : C) : 𝟙 X ⊗ (ρ_ Y).inv = (ρ_ _).inv ≫ (α_ _ _ _).hom := by |
| 50 | + coherence |
| 51 | +#align category_theory.monoidal_category.id_tensor_right_unitor_inv CategoryTheory.MonoidalCategory.id_tensor_rightUnitor_inv |
| 52 | + |
| 53 | +@[reassoc] |
| 54 | +theorem leftUnitor_inv_tensor_id (X Y : C) : (λ_ X).inv ⊗ 𝟙 Y = (λ_ _).inv ≫ (α_ _ _ _).inv := by |
| 55 | + coherence |
| 56 | +#align category_theory.monoidal_category.left_unitor_inv_tensor_id CategoryTheory.MonoidalCategory.leftUnitor_inv_tensor_id |
| 57 | + |
| 58 | +@[reassoc] |
| 59 | +theorem pentagon_inv_inv_hom (W X Y Z : C) : |
| 60 | + (α_ W (X ⊗ Y) Z).inv ≫ ((α_ W X Y).inv ⊗ 𝟙 Z) ≫ (α_ (W ⊗ X) Y Z).hom = |
| 61 | + (𝟙 W ⊗ (α_ X Y Z).hom) ≫ (α_ W X (Y ⊗ Z)).inv := by |
| 62 | + coherence |
| 63 | +#align category_theory.monoidal_category.pentagon_inv_inv_hom CategoryTheory.MonoidalCategory.pentagon_inv_inv_hom |
| 64 | + |
| 65 | +@[reassoc (attr := simp)] |
| 66 | +theorem triangle_assoc_comp_right_inv (X Y : C) : |
| 67 | + ((ρ_ X).inv ⊗ 𝟙 Y) ≫ (α_ X (𝟙_ C) Y).hom = 𝟙 X ⊗ (λ_ Y).inv := by |
| 68 | + coherence |
| 69 | +#align category_theory.monoidal_category.triangle_assoc_comp_right_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_right_inv |
| 70 | + |
| 71 | +theorem unitors_equal : (λ_ (𝟙_ C)).hom = (ρ_ (𝟙_ C)).hom := by |
| 72 | + coherence |
| 73 | +#align category_theory.monoidal_category.unitors_equal CategoryTheory.MonoidalCategory.unitors_equal |
| 74 | + |
| 75 | +theorem unitors_inv_equal : (λ_ (𝟙_ C)).inv = (ρ_ (𝟙_ C)).inv := by |
| 76 | + coherence |
| 77 | +#align category_theory.monoidal_category.unitors_inv_equal CategoryTheory.MonoidalCategory.unitors_inv_equal |
| 78 | + |
| 79 | +@[reassoc] |
| 80 | +theorem pentagon_hom_inv {W X Y Z : C} : |
| 81 | + (α_ W X (Y ⊗ Z)).hom ≫ (𝟙 W ⊗ (α_ X Y Z).inv) = |
| 82 | + (α_ (W ⊗ X) Y Z).inv ≫ ((α_ W X Y).hom ⊗ 𝟙 Z) ≫ (α_ W (X ⊗ Y) Z).hom := by |
| 83 | + coherence |
| 84 | +#align category_theory.monoidal_category.pentagon_hom_inv CategoryTheory.MonoidalCategory.pentagon_hom_inv |
| 85 | + |
| 86 | +@[reassoc] |
| 87 | +theorem pentagon_inv_hom (W X Y Z : C) : |
| 88 | + (α_ (W ⊗ X) Y Z).inv ≫ ((α_ W X Y).hom ⊗ 𝟙 Z) = |
| 89 | + (α_ W X (Y ⊗ Z)).hom ≫ (𝟙 W ⊗ (α_ X Y Z).inv) ≫ (α_ W (X ⊗ Y) Z).inv := by |
| 90 | + coherence |
| 91 | +#align category_theory.monoidal_category.pentagon_inv_hom CategoryTheory.MonoidalCategory.pentagon_inv_hom |
| 92 | + |
| 93 | +end CategoryTheory.MonoidalCategory |
0 commit comments