Skip to content

Commit 5f0e28c

Browse files
kim-emkmill
andcommitted
feat: port CategoryTheory.Monoidal.CoherenceLemmas (#4359)
- [x] depends on: #4357 [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/) Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com>
1 parent 6e48706 commit 5f0e28c

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -791,6 +791,7 @@ import Mathlib.CategoryTheory.Monad.Limits
791791
import Mathlib.CategoryTheory.Monad.Products
792792
import Mathlib.CategoryTheory.Monad.Types
793793
import Mathlib.CategoryTheory.Monoidal.Category
794+
import Mathlib.CategoryTheory.Monoidal.CoherenceLemmas
794795
import Mathlib.CategoryTheory.Monoidal.Discrete
795796
import Mathlib.CategoryTheory.Monoidal.End
796797
import Mathlib.CategoryTheory.Monoidal.Free.Basic
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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

Comments
 (0)