algebra.category.Module.monoidal.basicMathlib.Algebra.Category.ModuleCat.Monoidal.Basic

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 -/
-import Algebra.Category.Module.Basic
-import LinearAlgebra.TensorProduct
+import Algebra.Category.ModuleCat.Basic
+import LinearAlgebra.TensorProduct.Basic
 import CategoryTheory.Linear.Yoneda
 import CategoryTheory.Monoidal.Linear
 
Diff
@@ -183,7 +183,7 @@ theorem triangle (M N : ModuleCat.{u} R) :
   by
   apply TensorProduct.ext_threefold
   intro x y z
-  change R at y 
+  change R at y
   dsimp [tensor_hom, associator]
   erw [TensorProduct.lid_tmul, TensorProduct.rid_tmul]
   exact (TensorProduct.smul_tmul _ _ _).symm
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 -/
-import Mathbin.Algebra.Category.Module.Basic
-import Mathbin.LinearAlgebra.TensorProduct
-import Mathbin.CategoryTheory.Linear.Yoneda
-import Mathbin.CategoryTheory.Monoidal.Linear
+import Algebra.Category.Module.Basic
+import LinearAlgebra.TensorProduct
+import CategoryTheory.Linear.Yoneda
+import CategoryTheory.Monoidal.Linear
 
 #align_import algebra.category.Module.monoidal.basic from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
-
-! This file was ported from Lean 3 source module algebra.category.Module.monoidal.basic
-! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Category.Module.Basic
 import Mathbin.LinearAlgebra.TensorProduct
 import Mathbin.CategoryTheory.Linear.Yoneda
 import Mathbin.CategoryTheory.Monoidal.Linear
 
+#align_import algebra.category.Module.monoidal.basic from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
+
 /-!
 # The monoidal category structure on R-modules
 
Diff
@@ -154,7 +154,7 @@ def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
 theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom (𝟙 (ModuleCat.of R R)) f ≫ (leftUnitor N).Hom = (leftUnitor M).Hom ≫ f :=
   by
-  ext (x y); dsimp
+  ext x y; dsimp
   erw [TensorProduct.lid_tmul, TensorProduct.lid_tmul]
   rw [LinearMap.map_smul]
   rfl
@@ -172,7 +172,7 @@ def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
 theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom f (𝟙 (ModuleCat.of R R)) ≫ (rightUnitor N).Hom = (rightUnitor M).Hom ≫ f :=
   by
-  ext (x y); dsimp
+  ext x y; dsimp
   erw [TensorProduct.rid_tmul, TensorProduct.rid_tmul]
   rw [LinearMap.map_smul]
   rfl
Diff
@@ -69,14 +69,18 @@ def tensorHom {M N M' N' : ModuleCat R} (f : M ⟶ N) (g : M' ⟶ N') :
 #align Module.monoidal_category.tensor_hom ModuleCat.MonoidalCategory.tensorHom
 -/
 
+#print ModuleCat.MonoidalCategory.tensor_id /-
 theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) := by
   ext1; rfl
 #align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_id
+-/
 
+#print ModuleCat.MonoidalCategory.tensor_comp /-
 theorem tensor_comp {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁)
     (g₂ : Y₂ ⟶ Z₂) : tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂ := by ext1;
   rfl
 #align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_comp
+-/
 
 #print ModuleCat.MonoidalCategory.associator /-
 /-- (implementation) the associator for R-modules -/
@@ -121,24 +125,30 @@ private theorem pentagon_aux (W X Y Z : Type _) [AddCommMonoid W] [AddCommMonoid
 
 end
 
+#print ModuleCat.MonoidalCategory.associator_naturality /-
 theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂)
     (f₃ : X₃ ⟶ Y₃) :
     tensorHom (tensorHom f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).Hom =
       (associator X₁ X₂ X₃).Hom ≫ tensorHom f₁ (tensorHom f₂ f₃) :=
   by convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
+-/
 
+#print ModuleCat.MonoidalCategory.pentagon /-
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).Hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).Hom ≫ tensorHom (𝟙 W) (associator X Y Z).Hom =
       (associator (tensorObj W X) Y Z).Hom ≫ (associator W X (tensorObj Y Z)).Hom :=
   by convert pentagon_aux R W X Y Z using 1
 #align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagon
+-/
 
+#print ModuleCat.MonoidalCategory.leftUnitor /-
 /-- (implementation) the left unitor for R-modules -/
 def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.lid R M) : of R (R ⊗ M) ≅ of R M).trans (ofSelfIso M)
 #align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitor
+-/
 
 #print ModuleCat.MonoidalCategory.leftUnitor_naturality /-
 theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
@@ -151,10 +161,12 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
 #align Module.monoidal_category.left_unitor_naturality ModuleCat.MonoidalCategory.leftUnitor_naturality
 -/
 
+#print ModuleCat.MonoidalCategory.rightUnitor /-
 /-- (implementation) the right unitor for R-modules -/
 def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.rid R M) : of R (M ⊗ R) ≅ of R M).trans (ofSelfIso M)
 #align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitor
+-/
 
 #print ModuleCat.MonoidalCategory.rightUnitor_naturality /-
 theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
@@ -213,59 +225,73 @@ instance : CommRing ((𝟙_ (ModuleCat.{u} R) : ModuleCat.{u} R) : Type u) :=
 namespace MonoidalCategory
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.hom_apply /-
 @[simp]
 theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K) (m : M) :
     (f ⊗ g) (k ⊗ₜ m) = f k ⊗ₜ g m :=
   rfl
 #align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.leftUnitor_hom_apply /-
 @[simp]
 theorem leftUnitor_hom_apply {M : ModuleCat.{u} R} (r : R) (m : M) :
     ((λ_ M).Hom : 𝟙_ (ModuleCat R) ⊗ M ⟶ M) (r ⊗ₜ[R] m) = r • m :=
   TensorProduct.lid_tmul m r
 #align Module.monoidal_category.left_unitor_hom_apply ModuleCat.MonoidalCategory.leftUnitor_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.leftUnitor_inv_apply /-
 @[simp]
 theorem leftUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
     ((λ_ M).inv : M ⟶ 𝟙_ (ModuleCat.{u} R) ⊗ M) m = 1 ⊗ₜ[R] m :=
   TensorProduct.lid_symm_apply m
 #align Module.monoidal_category.left_unitor_inv_apply ModuleCat.MonoidalCategory.leftUnitor_inv_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.rightUnitor_hom_apply /-
 @[simp]
 theorem rightUnitor_hom_apply {M : ModuleCat.{u} R} (m : M) (r : R) :
     ((ρ_ M).Hom : M ⊗ 𝟙_ (ModuleCat R) ⟶ M) (m ⊗ₜ r) = r • m :=
   TensorProduct.rid_tmul m r
 #align Module.monoidal_category.right_unitor_hom_apply ModuleCat.MonoidalCategory.rightUnitor_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.rightUnitor_inv_apply /-
 @[simp]
 theorem rightUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
     ((ρ_ M).inv : M ⟶ M ⊗ 𝟙_ (ModuleCat.{u} R)) m = m ⊗ₜ[R] 1 :=
   TensorProduct.rid_symm_apply m
 #align Module.monoidal_category.right_unitor_inv_apply ModuleCat.MonoidalCategory.rightUnitor_inv_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.associator_hom_apply /-
 @[simp]
 theorem associator_hom_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
     ((α_ M N K).Hom : (M ⊗ N) ⊗ K ⟶ M ⊗ N ⊗ K) (m ⊗ₜ n ⊗ₜ k) = m ⊗ₜ (n ⊗ₜ k) :=
   rfl
 #align Module.monoidal_category.associator_hom_apply ModuleCat.MonoidalCategory.associator_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print ModuleCat.MonoidalCategory.associator_inv_apply /-
 @[simp]
 theorem associator_inv_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
     ((α_ M N K).inv : M ⊗ N ⊗ K ⟶ (M ⊗ N) ⊗ K) (m ⊗ₜ (n ⊗ₜ k)) = m ⊗ₜ n ⊗ₜ k :=
   rfl
 #align Module.monoidal_category.associator_inv_apply ModuleCat.MonoidalCategory.associator_inv_apply
+-/
 
 end MonoidalCategory
 
Diff
@@ -174,7 +174,7 @@ theorem triangle (M N : ModuleCat.{u} R) :
   by
   apply TensorProduct.ext_threefold
   intro x y z
-  change R at y
+  change R at y 
   dsimp [tensor_hom, associator]
   erw [TensorProduct.lid_tmul, TensorProduct.rid_tmul]
   exact (TensorProduct.smul_tmul _ _ _).symm
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 
 ! This file was ported from Lean 3 source module algebra.category.Module.monoidal.basic
-! leanprover-community/mathlib commit 74403a3b2551b0970855e14ef5e8fd0d6af1bfc2
+! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Monoidal.Linear
 /-!
 # The monoidal category structure on R-modules
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 Mostly this uses existing machinery in `linear_algebra.tensor_product`.
 We just need to provide a few small missing pieces to build the
 `monoidal_category` instance.
Diff
@@ -47,7 +47,7 @@ namespace MonoidalCategory
 -- The definitions inside this namespace are essentially private.
 -- After we build the `monoidal_category (Module R)` instance,
 -- you should use that API.
-open TensorProduct
+open scoped TensorProduct
 
 attribute [local ext] TensorProduct.ext
 
Diff
@@ -66,22 +66,10 @@ def tensorHom {M N M' N' : ModuleCat R} (f : M ⟶ N) (g : M' ⟶ N') :
 #align Module.monoidal_category.tensor_hom ModuleCat.MonoidalCategory.tensorHom
 -/
 
-/- warning: Module.monoidal_category.tensor_id -> ModuleCat.MonoidalCategory.tensor_id is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (N : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 M N) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 M N)) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 M M N N (CategoryTheory.CategoryStruct.id.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1))) M) (CategoryTheory.CategoryStruct.id.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1))) N)) (CategoryTheory.CategoryStruct.id.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1))) (ModuleCat.of.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (AddCommGroup.toAddCommMonoid.{u2} (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u3} (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (TensorProduct.addCommGroup.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (TensorProduct.module.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (AddCommGroup.toAddCommMonoid.{u2} (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u3} (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N))))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (M : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (N : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 M M N N (CategoryTheory.CategoryStruct.id.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) M) (CategoryTheory.CategoryStruct.id.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) N)) (CategoryTheory.CategoryStruct.id.{max u2 u1, max u3 (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.of.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1) (TensorProduct.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.addCommGroup.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N))))
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_idₓ'. -/
 theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) := by
   ext1; rfl
 #align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_id
 
-/- warning: Module.monoidal_category.tensor_comp -> ModuleCat.MonoidalCategory.tensor_comp is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {X₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {Y₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {Z₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {X₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} {Y₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} {Z₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} (f₁ : Quiver.Hom.{succ u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)))) X₁ Y₁) (f₂ : Quiver.Hom.{succ u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) X₂ Y₂) (g₁ : Quiver.Hom.{succ u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)))) Y₁ Z₁) (g₂ : Quiver.Hom.{succ u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) Y₂ Z₂), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Z₁ Z₂)) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 X₁ Z₁ X₂ Z₂ (CategoryTheory.CategoryStruct.comp.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1))) X₁ Y₁ Z₁ f₁ g₁) (CategoryTheory.CategoryStruct.comp.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1))) X₂ Y₂ Z₂ f₂ g₂)) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Y₁ Y₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Z₁ Z₂) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 X₁ Y₁ X₂ Y₂ f₁ f₂) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 Y₁ Z₁ Y₂ Z₂ g₁ g₂))
-but is expected to have type
-  forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {X₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {X₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} (f₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₁ Y₁) (f₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₂ Y₂) (g₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₁ Z₁) (g₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₂ Z₂), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Z₁ X₂ Z₂ (CategoryTheory.CategoryStruct.comp.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) X₁ Y₁ Z₁ f₁ g₁) (CategoryTheory.CategoryStruct.comp.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) X₂ Y₂ Z₂ f₂ g₂)) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Y₁ Y₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Y₁ X₂ Y₂ f₁ f₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 Y₁ Z₁ Y₂ Z₂ g₁ g₂))
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_compₓ'. -/
 theorem tensor_comp {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁)
     (g₂ : Y₂ ⟶ Z₂) : tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂ := by ext1;
   rfl
@@ -130,9 +118,6 @@ private theorem pentagon_aux (W X Y Z : Type _) [AddCommMonoid W] [AddCommMonoid
 
 end
 
-/- warning: Module.monoidal_category.associator_naturality -> ModuleCat.MonoidalCategory.associator_naturality is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturalityₓ'. -/
 theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂)
     (f₃ : X₃ ⟶ Y₃) :
     tensorHom (tensorHom f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).Hom =
@@ -140,9 +125,6 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
   by convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
-/- warning: Module.monoidal_category.pentagon -> ModuleCat.MonoidalCategory.pentagon is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagonₓ'. -/
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).Hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).Hom ≫ tensorHom (𝟙 W) (associator X Y Z).Hom =
@@ -150,12 +132,6 @@ theorem pentagon (W X Y Z : ModuleCat R) :
   by convert pentagon_aux R W X Y Z using 1
 #align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagon
 
-/- warning: Module.monoidal_category.left_unitor -> ModuleCat.MonoidalCategory.leftUnitor is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.module.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M))) M
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M))) M
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitorₓ'. -/
 /-- (implementation) the left unitor for R-modules -/
 def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.lid R M) : of R (R ⊗ M) ≅ of R M).trans (ofSelfIso M)
@@ -172,12 +148,6 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
 #align Module.monoidal_category.left_unitor_naturality ModuleCat.MonoidalCategory.leftUnitor_naturality
 -/
 
-/- warning: Module.monoidal_category.right_unitor -> ModuleCat.MonoidalCategory.rightUnitor is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.module.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) M
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) M
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitorₓ'. -/
 /-- (implementation) the right unitor for R-modules -/
 def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.rid R M) : of R (M ⊗ R) ≅ of R M).trans (ofSelfIso M)
@@ -239,9 +209,6 @@ instance : CommRing ((𝟙_ (ModuleCat.{u} R) : ModuleCat.{u} R) : Type u) :=
 
 namespace MonoidalCategory
 
-/- warning: Module.monoidal_category.hom_apply -> ModuleCat.MonoidalCategory.hom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K) (m : M) :
@@ -249,9 +216,6 @@ theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K
   rfl
 #align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_apply
 
-/- warning: Module.monoidal_category.left_unitor_hom_apply -> ModuleCat.MonoidalCategory.leftUnitor_hom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor_hom_apply ModuleCat.MonoidalCategory.leftUnitor_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem leftUnitor_hom_apply {M : ModuleCat.{u} R} (r : R) (m : M) :
@@ -259,9 +223,6 @@ theorem leftUnitor_hom_apply {M : ModuleCat.{u} R} (r : R) (m : M) :
   TensorProduct.lid_tmul m r
 #align Module.monoidal_category.left_unitor_hom_apply ModuleCat.MonoidalCategory.leftUnitor_hom_apply
 
-/- warning: Module.monoidal_category.left_unitor_inv_apply -> ModuleCat.MonoidalCategory.leftUnitor_inv_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor_inv_apply ModuleCat.MonoidalCategory.leftUnitor_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem leftUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
@@ -269,9 +230,6 @@ theorem leftUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
   TensorProduct.lid_symm_apply m
 #align Module.monoidal_category.left_unitor_inv_apply ModuleCat.MonoidalCategory.leftUnitor_inv_apply
 
-/- warning: Module.monoidal_category.right_unitor_hom_apply -> ModuleCat.MonoidalCategory.rightUnitor_hom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor_hom_apply ModuleCat.MonoidalCategory.rightUnitor_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem rightUnitor_hom_apply {M : ModuleCat.{u} R} (m : M) (r : R) :
@@ -279,9 +237,6 @@ theorem rightUnitor_hom_apply {M : ModuleCat.{u} R} (m : M) (r : R) :
   TensorProduct.rid_tmul m r
 #align Module.monoidal_category.right_unitor_hom_apply ModuleCat.MonoidalCategory.rightUnitor_hom_apply
 
-/- warning: Module.monoidal_category.right_unitor_inv_apply -> ModuleCat.MonoidalCategory.rightUnitor_inv_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor_inv_apply ModuleCat.MonoidalCategory.rightUnitor_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem rightUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
@@ -289,9 +244,6 @@ theorem rightUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
   TensorProduct.rid_symm_apply m
 #align Module.monoidal_category.right_unitor_inv_apply ModuleCat.MonoidalCategory.rightUnitor_inv_apply
 
-/- warning: Module.monoidal_category.associator_hom_apply -> ModuleCat.MonoidalCategory.associator_hom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_hom_apply ModuleCat.MonoidalCategory.associator_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -302,9 +254,6 @@ theorem associator_hom_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
   rfl
 #align Module.monoidal_category.associator_hom_apply ModuleCat.MonoidalCategory.associator_hom_apply
 
-/- warning: Module.monoidal_category.associator_inv_apply -> ModuleCat.MonoidalCategory.associator_inv_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_inv_apply ModuleCat.MonoidalCategory.associator_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
Diff
@@ -72,10 +72,8 @@ lean 3 declaration is
 but is expected to have type
   forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (M : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (N : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 M M N N (CategoryTheory.CategoryStruct.id.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) M) (CategoryTheory.CategoryStruct.id.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) N)) (CategoryTheory.CategoryStruct.id.{max u2 u1, max u3 (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.of.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1) (TensorProduct.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.addCommGroup.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N))))
 Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_idₓ'. -/
-theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) :=
-  by
-  ext1
-  rfl
+theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) := by
+  ext1; rfl
 #align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_id
 
 /- warning: Module.monoidal_category.tensor_comp -> ModuleCat.MonoidalCategory.tensor_comp is a dubious translation:
@@ -85,9 +83,7 @@ but is expected to have type
   forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {X₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {X₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} (f₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₁ Y₁) (f₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₂ Y₂) (g₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₁ Z₁) (g₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₂ Z₂), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Z₁ X₂ Z₂ (CategoryTheory.CategoryStruct.comp.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) X₁ Y₁ Z₁ f₁ g₁) (CategoryTheory.CategoryStruct.comp.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) X₂ Y₂ Z₂ f₂ g₂)) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Y₁ Y₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Y₁ X₂ Y₂ f₁ f₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 Y₁ Z₁ Y₂ Z₂ g₁ g₂))
 Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_compₓ'. -/
 theorem tensor_comp {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁)
-    (g₂ : Y₂ ⟶ Z₂) : tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂ :=
-  by
-  ext1
+    (g₂ : Y₂ ⟶ Z₂) : tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂ := by ext1;
   rfl
 #align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_comp
 
Diff
@@ -51,23 +51,39 @@ open TensorProduct
 
 attribute [local ext] TensorProduct.ext
 
+#print ModuleCat.MonoidalCategory.tensorObj /-
 /-- (implementation) tensor product of R-modules -/
 def tensorObj (M N : ModuleCat R) : ModuleCat R :=
   ModuleCat.of R (M ⊗[R] N)
 #align Module.monoidal_category.tensor_obj ModuleCat.MonoidalCategory.tensorObj
+-/
 
+#print ModuleCat.MonoidalCategory.tensorHom /-
 /-- (implementation) tensor product of morphisms R-modules -/
 def tensorHom {M N M' N' : ModuleCat R} (f : M ⟶ N) (g : M' ⟶ N') :
     tensorObj M M' ⟶ tensorObj N N' :=
   TensorProduct.map f g
 #align Module.monoidal_category.tensor_hom ModuleCat.MonoidalCategory.tensorHom
+-/
 
+/- warning: Module.monoidal_category.tensor_id -> ModuleCat.MonoidalCategory.tensor_id is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (N : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 M N) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 M N)) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 M M N N (CategoryTheory.CategoryStruct.id.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1))) M) (CategoryTheory.CategoryStruct.id.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1))) N)) (CategoryTheory.CategoryStruct.id.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1))) (ModuleCat.of.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (AddCommGroup.toAddCommMonoid.{u2} (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u3} (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (TensorProduct.addCommGroup.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (TensorProduct.module.{u1, u2, u3} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (AddCommGroup.toAddCommMonoid.{u2} (coeSort.{max (succ u1) (succ (succ u2)), succ (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u2} (ModuleCat.hasCoeToSort.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u3} (coeSort.{max (succ u1) (succ (succ u3)), succ (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u3} (ModuleCat.hasCoeToSort.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) N) (ModuleCat.isAddCommGroup.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N)) (ModuleCat.isModule.{u2, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isModule.{u3, u1} R (CommRing.toRing.{u1} R _inst_1) N))))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] (M : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (N : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 M N)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 M M N N (CategoryTheory.CategoryStruct.id.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) M) (CategoryTheory.CategoryStruct.id.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) N)) (CategoryTheory.CategoryStruct.id.{max u2 u1, max u3 (succ (max u1 u2))} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.of.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1) (TensorProduct.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.addCommGroup.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u3, u2, u1} R (CommRing.toCommSemiring.{u3} R _inst_1) (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (AddCommGroup.toAddCommMonoid.{u2} (ModuleCat.carrier.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isAddCommGroup.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N) (ModuleCat.isAddCommGroup.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N)) (ModuleCat.isModule.{u2, u3} R (CommRing.toRing.{u3} R _inst_1) M) (ModuleCat.isModule.{u1, u3} R (CommRing.toRing.{u3} R _inst_1) N))))
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_idₓ'. -/
 theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) :=
   by
   ext1
   rfl
 #align Module.monoidal_category.tensor_id ModuleCat.MonoidalCategory.tensor_id
 
+/- warning: Module.monoidal_category.tensor_comp -> ModuleCat.MonoidalCategory.tensor_comp is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] {X₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {Y₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {Z₁ : ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)} {X₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} {Y₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} {Z₂ : ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)} (f₁ : Quiver.Hom.{succ u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)))) X₁ Y₁) (f₂ : Quiver.Hom.{succ u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) X₂ Y₂) (g₁ : Quiver.Hom.{succ u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)))) Y₁ Z₁) (g₂ : Quiver.Hom.{succ u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) Y₂ Z₂), Eq.{succ (max u2 u3)} (Quiver.Hom.{succ (max u2 u3), max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Z₁ Z₂)) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 X₁ Z₁ X₂ Z₂ (CategoryTheory.CategoryStruct.comp.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 (succ u2)} (ModuleCat.{u2, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u2, u1} R (CommRing.toRing.{u1} R _inst_1))) X₁ Y₁ Z₁ f₁ g₁) (CategoryTheory.CategoryStruct.comp.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u3, max u1 (succ u3)} (ModuleCat.{u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u3, u1} R (CommRing.toRing.{u1} R _inst_1))) X₂ Y₂ Z₂ f₂ g₂)) (CategoryTheory.CategoryStruct.comp.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max u1 (succ (max u2 u3))} (ModuleCat.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u3, u1} R (CommRing.toRing.{u1} R _inst_1))) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Y₁ Y₂) (ModuleCat.MonoidalCategory.tensorObj.{u1, u2, u3} R _inst_1 Z₁ Z₂) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 X₁ Y₁ X₂ Y₂ f₁ f₂) (ModuleCat.MonoidalCategory.tensorHom.{u1, u2, u3} R _inst_1 Y₁ Z₁ Y₂ Z₂ g₁ g₂))
+but is expected to have type
+  forall {R : Type.{u3}} [_inst_1 : CommRing.{u3} R] {X₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₁ : ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)} {X₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Y₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} {Z₂ : ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)} (f₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₁ Y₁) (f₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) X₂ Y₂) (g₁ : Quiver.Hom.{succ u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max u3 (succ u2)} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₁ Z₁) (g₂ : Quiver.Hom.{succ u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) Y₂ Z₂), Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 (succ u2)) (succ u1)} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u2 u1, u3} R (CommRing.toRing.{u3} R _inst_1)))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂)) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Z₁ X₂ Z₂ (CategoryTheory.CategoryStruct.comp.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u2, max (succ u2) u3} (ModuleCat.{u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u2, u3} R (CommRing.toRing.{u3} R _inst_1))) X₁ Y₁ Z₁ f₁ g₁) (CategoryTheory.CategoryStruct.comp.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{u1, max u3 (succ u1)} (ModuleCat.{u1, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{u1, u3} R (CommRing.toRing.{u3} R _inst_1))) X₂ Y₂ Z₂ f₂ g₂)) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) (succ u2)) u3} (ModuleCat.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1)) (ModuleCat.moduleCategory.{max u1 u2, u3} R (CommRing.toRing.{u3} R _inst_1))) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 X₁ X₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Y₁ Y₂) (ModuleCat.MonoidalCategory.tensorObj.{u3, u2, u1} R _inst_1 Z₁ Z₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 X₁ Y₁ X₂ Y₂ f₁ f₂) (ModuleCat.MonoidalCategory.tensorHom.{u3, u2, u1} R _inst_1 Y₁ Z₁ Y₂ Z₂ g₁ g₂))
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_compₓ'. -/
 theorem tensor_comp {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂) (g₁ : Y₁ ⟶ Z₁)
     (g₂ : Y₂ ⟶ Z₂) : tensorHom (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom f₁ f₂ ≫ tensorHom g₁ g₂ :=
   by
@@ -75,11 +91,13 @@ theorem tensor_comp {X₁ Y₁ Z₁ X₂ Y₂ Z₂ : ModuleCat R} (f₁ : X₁ 
   rfl
 #align Module.monoidal_category.tensor_comp ModuleCat.MonoidalCategory.tensor_comp
 
+#print ModuleCat.MonoidalCategory.associator /-
 /-- (implementation) the associator for R-modules -/
 def associator (M : ModuleCat.{v} R) (N : ModuleCat.{w} R) (K : ModuleCat.{x} R) :
     tensorObj (tensorObj M N) K ≅ tensorObj M (tensorObj N K) :=
   (TensorProduct.assoc R M N K).toModuleIso
 #align Module.monoidal_category.associator ModuleCat.MonoidalCategory.associator
+-/
 
 section
 
@@ -100,7 +118,6 @@ private theorem associator_naturality_aux {X₁ X₂ X₃ : Type _} [AddCommMono
   apply TensorProduct.ext_threefold
   intro x y z
   rfl
-#align Module.monoidal_category.associator_naturality_aux Module.monoidal_category.associator_naturality_aux
 
 variable (R)
 
@@ -114,10 +131,12 @@ private theorem pentagon_aux (W X Y Z : Type _) [AddCommMonoid W] [AddCommMonoid
   apply TensorProduct.ext_fourfold
   intro w x y z
   rfl
-#align Module.monoidal_category.pentagon_aux Module.monoidal_category.pentagon_aux
 
 end
 
+/- warning: Module.monoidal_category.associator_naturality -> ModuleCat.MonoidalCategory.associator_naturality is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturalityₓ'. -/
 theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂)
     (f₃ : X₃ ⟶ Y₃) :
     tensorHom (tensorHom f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).Hom =
@@ -125,6 +144,9 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
   by convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
+/- warning: Module.monoidal_category.pentagon -> ModuleCat.MonoidalCategory.pentagon is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagonₓ'. -/
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).Hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).Hom ≫ tensorHom (𝟙 W) (associator X Y Z).Hom =
@@ -132,11 +154,18 @@ theorem pentagon (W X Y Z : ModuleCat R) :
   by convert pentagon_aux R W X Y Z using 1
 #align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagon
 
+/- warning: Module.monoidal_category.left_unitor -> ModuleCat.MonoidalCategory.leftUnitor is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.module.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M))) M
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) R (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M))) M
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitorₓ'. -/
 /-- (implementation) the left unitor for R-modules -/
 def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.lid R M) : of R (R ⊗ M) ≅ of R M).trans (ofSelfIso M)
 #align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitor
 
+#print ModuleCat.MonoidalCategory.leftUnitor_naturality /-
 theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom (𝟙 (ModuleCat.of R R)) f ≫ (leftUnitor N).Hom = (leftUnitor M).Hom ≫ f :=
   by
@@ -145,12 +174,20 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
   rw [LinearMap.map_smul]
   rfl
 #align Module.monoidal_category.left_unitor_naturality ModuleCat.MonoidalCategory.leftUnitor_naturality
+-/
 
+/- warning: Module.monoidal_category.right_unitor -> ModuleCat.MonoidalCategory.rightUnitor is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1)))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.module.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) R (AddCommGroup.toAddCommMonoid.{u1} (coeSort.{succ (succ u1), succ (succ u1)} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) Type.{u1} (ModuleCat.hasCoeToSort.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (AddCommGroup.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) M
+but is expected to have type
+  forall {R : Type.{u1}} [_inst_1 : CommRing.{u1} R] (M : ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)), CategoryTheory.Iso.{u1, succ u1} (ModuleCat.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.moduleCategory.{u1, u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.of.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) (TensorProduct.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.addCommGroup.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Ring.toAddCommGroup.{u1} R (CommRing.toRing.{u1} R _inst_1)) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1)))) (TensorProduct.instModuleTensorProductToSemiringAddCommMonoid.{u1, u1, u1} R (CommRing.toCommSemiring.{u1} R _inst_1) (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) R (AddCommGroup.toAddCommMonoid.{u1} (ModuleCat.carrier.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (ModuleCat.isAddCommGroup.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_1))))) (ModuleCat.isModule.{u1, u1} R (CommRing.toRing.{u1} R _inst_1) M) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_1))))) M
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitorₓ'. -/
 /-- (implementation) the right unitor for R-modules -/
 def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
   (LinearEquiv.toModuleIso (TensorProduct.rid R M) : of R (M ⊗ R) ≅ of R M).trans (ofSelfIso M)
 #align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitor
 
+#print ModuleCat.MonoidalCategory.rightUnitor_naturality /-
 theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom f (𝟙 (ModuleCat.of R R)) ≫ (rightUnitor N).Hom = (rightUnitor M).Hom ≫ f :=
   by
@@ -159,7 +196,9 @@ theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
   rw [LinearMap.map_smul]
   rfl
 #align Module.monoidal_category.right_unitor_naturality ModuleCat.MonoidalCategory.rightUnitor_naturality
+-/
 
+#print ModuleCat.MonoidalCategory.triangle /-
 theorem triangle (M N : ModuleCat.{u} R) :
     (associator M (ModuleCat.of R R) N).Hom ≫ tensorHom (𝟙 M) (leftUnitor N).Hom =
       tensorHom (rightUnitor M).Hom (𝟙 N) :=
@@ -171,11 +210,13 @@ theorem triangle (M N : ModuleCat.{u} R) :
   erw [TensorProduct.lid_tmul, TensorProduct.rid_tmul]
   exact (TensorProduct.smul_tmul _ _ _).symm
 #align Module.monoidal_category.triangle ModuleCat.MonoidalCategory.triangle
+-/
 
 end MonoidalCategory
 
 open MonoidalCategory
 
+#print ModuleCat.monoidalCategory /-
 instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R)
     where
   -- data
@@ -194,6 +235,7 @@ instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R)
   pentagon M N K L := pentagon M N K L
   triangle M N := triangle M N
 #align Module.monoidal_category ModuleCat.monoidalCategory
+-/
 
 /-- Remind ourselves that the monoidal unit, being just `R`, is still a commutative ring. -/
 instance : CommRing ((𝟙_ (ModuleCat.{u} R) : ModuleCat.{u} R) : Type u) :=
@@ -201,41 +243,59 @@ instance : CommRing ((𝟙_ (ModuleCat.{u} R) : ModuleCat.{u} R) : Type u) :=
 
 namespace MonoidalCategory
 
+/- warning: Module.monoidal_category.hom_apply -> ModuleCat.MonoidalCategory.hom_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K) (m : M) :
     (f ⊗ g) (k ⊗ₜ m) = f k ⊗ₜ g m :=
   rfl
-#align Module.monoidal_category.hom_apply ModuleCat.monoidalCategory.hom_apply
+#align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_apply
 
+/- warning: Module.monoidal_category.left_unitor_hom_apply -> ModuleCat.MonoidalCategory.leftUnitor_hom_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor_hom_apply ModuleCat.MonoidalCategory.leftUnitor_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem leftUnitor_hom_apply {M : ModuleCat.{u} R} (r : R) (m : M) :
     ((λ_ M).Hom : 𝟙_ (ModuleCat R) ⊗ M ⟶ M) (r ⊗ₜ[R] m) = r • m :=
   TensorProduct.lid_tmul m r
-#align Module.monoidal_category.left_unitor_hom_apply ModuleCat.monoidalCategory.leftUnitor_hom_apply
+#align Module.monoidal_category.left_unitor_hom_apply ModuleCat.MonoidalCategory.leftUnitor_hom_apply
 
+/- warning: Module.monoidal_category.left_unitor_inv_apply -> ModuleCat.MonoidalCategory.leftUnitor_inv_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.left_unitor_inv_apply ModuleCat.MonoidalCategory.leftUnitor_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem leftUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
     ((λ_ M).inv : M ⟶ 𝟙_ (ModuleCat.{u} R) ⊗ M) m = 1 ⊗ₜ[R] m :=
   TensorProduct.lid_symm_apply m
-#align Module.monoidal_category.left_unitor_inv_apply ModuleCat.monoidalCategory.leftUnitor_inv_apply
+#align Module.monoidal_category.left_unitor_inv_apply ModuleCat.MonoidalCategory.leftUnitor_inv_apply
 
+/- warning: Module.monoidal_category.right_unitor_hom_apply -> ModuleCat.MonoidalCategory.rightUnitor_hom_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor_hom_apply ModuleCat.MonoidalCategory.rightUnitor_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem rightUnitor_hom_apply {M : ModuleCat.{u} R} (m : M) (r : R) :
     ((ρ_ M).Hom : M ⊗ 𝟙_ (ModuleCat R) ⟶ M) (m ⊗ₜ r) = r • m :=
   TensorProduct.rid_tmul m r
-#align Module.monoidal_category.right_unitor_hom_apply ModuleCat.monoidalCategory.rightUnitor_hom_apply
+#align Module.monoidal_category.right_unitor_hom_apply ModuleCat.MonoidalCategory.rightUnitor_hom_apply
 
+/- warning: Module.monoidal_category.right_unitor_inv_apply -> ModuleCat.MonoidalCategory.rightUnitor_inv_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.right_unitor_inv_apply ModuleCat.MonoidalCategory.rightUnitor_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
 theorem rightUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
     ((ρ_ M).inv : M ⟶ M ⊗ 𝟙_ (ModuleCat.{u} R)) m = m ⊗ₜ[R] 1 :=
   TensorProduct.rid_symm_apply m
-#align Module.monoidal_category.right_unitor_inv_apply ModuleCat.monoidalCategory.rightUnitor_inv_apply
+#align Module.monoidal_category.right_unitor_inv_apply ModuleCat.MonoidalCategory.rightUnitor_inv_apply
 
+/- warning: Module.monoidal_category.associator_hom_apply -> ModuleCat.MonoidalCategory.associator_hom_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_hom_apply ModuleCat.MonoidalCategory.associator_hom_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -244,8 +304,11 @@ theorem rightUnitor_inv_apply {M : ModuleCat.{u} R} (m : M) :
 theorem associator_hom_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
     ((α_ M N K).Hom : (M ⊗ N) ⊗ K ⟶ M ⊗ N ⊗ K) (m ⊗ₜ n ⊗ₜ k) = m ⊗ₜ (n ⊗ₜ k) :=
   rfl
-#align Module.monoidal_category.associator_hom_apply ModuleCat.monoidalCategory.associator_hom_apply
+#align Module.monoidal_category.associator_hom_apply ModuleCat.MonoidalCategory.associator_hom_apply
 
+/- warning: Module.monoidal_category.associator_inv_apply -> ModuleCat.MonoidalCategory.associator_inv_apply is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Module.monoidal_category.associator_inv_apply ModuleCat.MonoidalCategory.associator_inv_applyₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -254,7 +317,7 @@ theorem associator_hom_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
 theorem associator_inv_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
     ((α_ M N K).inv : M ⊗ N ⊗ K ⟶ (M ⊗ N) ⊗ K) (m ⊗ₜ (n ⊗ₜ k)) = m ⊗ₜ n ⊗ₜ k :=
   rfl
-#align Module.monoidal_category.associator_inv_apply ModuleCat.monoidalCategory.associator_inv_apply
+#align Module.monoidal_category.associator_inv_apply ModuleCat.MonoidalCategory.associator_inv_apply
 
 end MonoidalCategory
 
Diff
@@ -3,30 +3,31 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 
-! This file was ported from Lean 3 source module algebra.category.Module.monoidal
-! leanprover-community/mathlib commit 0caf3701139ef2e69c215717665361cda205a90b
+! This file was ported from Lean 3 source module algebra.category.Module.monoidal.basic
+! leanprover-community/mathlib commit 74403a3b2551b0970855e14ef5e8fd0d6af1bfc2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathbin.CategoryTheory.Monoidal.Braided
-import Mathbin.CategoryTheory.Closed.Monoidal
 import Mathbin.Algebra.Category.Module.Basic
 import Mathbin.LinearAlgebra.TensorProduct
 import Mathbin.CategoryTheory.Linear.Yoneda
 import Mathbin.CategoryTheory.Monoidal.Linear
 
 /-!
-# The symmetric monoidal category structure on R-modules
+# The monoidal category structure on R-modules
 
 Mostly this uses existing machinery in `linear_algebra.tensor_product`.
 We just need to provide a few small missing pieces to build the
-`monoidal_category` instance and then the `symmetric_category` instance.
+`monoidal_category` instance.
+The `symmetric_category` instance is in `algebra.category.Module.monoidal.symmetric`
+to reduce imports.
 
 Note the universe level of the modules must be at least the universe level of the ring,
 so that we have a monoidal unit.
 For now, we simplify by insisting both universe levels are the same.
 
-We then construct the monoidal closed structure on `Module R`.
+We construct the monoidal closed structure on `Module R` in
+`algebra.category.Module.monoidal.closed`.
 
 If you're happy using the bundled `Module R`, it may be possible to mostly
 use this as an interface and not need to interact much with the implementation details.
@@ -190,8 +191,8 @@ instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R)
   associator_naturality' M N K M' N' K' f g h := associator_naturality f g h
   leftUnitor_naturality' M N f := leftUnitor_naturality f
   rightUnitor_naturality' M N f := rightUnitor_naturality f
-  pentagon' M N K L := pentagon M N K L
-  triangle' M N := triangle M N
+  pentagon M N K L := pentagon M N K L
+  triangle M N := triangle M N
 #align Module.monoidal_category ModuleCat.monoidalCategory
 
 /-- Remind ourselves that the monoidal unit, being just `R`, is still a commutative ring. -/
@@ -257,78 +258,6 @@ theorem associator_inv_apply {M N K : ModuleCat.{u} R} (m : M) (n : N) (k : K) :
 
 end MonoidalCategory
 
-/-- (implementation) the braiding for R-modules -/
-def braiding (M N : ModuleCat R) : tensorObj M N ≅ tensorObj N M :=
-  LinearEquiv.toModuleIso (TensorProduct.comm R M N)
-#align Module.braiding ModuleCat.braiding
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem braiding_naturality {X₁ X₂ Y₁ Y₂ : ModuleCat.{u} R} (f : X₁ ⟶ Y₁) (g : X₂ ⟶ Y₂) :
-    (f ⊗ g) ≫ (Y₁.braiding Y₂).Hom = (X₁.braiding X₂).Hom ≫ (g ⊗ f) :=
-  by
-  apply TensorProduct.ext'
-  intro x y
-  rfl
-#align Module.braiding_naturality ModuleCat.braiding_naturality
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem hexagon_forward (X Y Z : ModuleCat.{u} R) :
-    (α_ X Y Z).Hom ≫ (braiding X _).Hom ≫ (α_ Y Z X).Hom =
-      ((braiding X Y).Hom ⊗ 𝟙 Z) ≫ (α_ Y X Z).Hom ≫ (𝟙 Y ⊗ (braiding X Z).Hom) :=
-  by
-  apply TensorProduct.ext_threefold
-  intro x y z
-  rfl
-#align Module.hexagon_forward ModuleCat.hexagon_forward
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem hexagon_reverse (X Y Z : ModuleCat.{u} R) :
-    (α_ X Y Z).inv ≫ (braiding _ Z).Hom ≫ (α_ Z X Y).inv =
-      (𝟙 X ⊗ (Y.braiding Z).Hom) ≫ (α_ X Z Y).inv ≫ ((X.braiding Z).Hom ⊗ 𝟙 Y) :=
-  by
-  apply (cancel_epi (α_ X Y Z).Hom).1
-  apply TensorProduct.ext_threefold
-  intro x y z
-  rfl
-#align Module.hexagon_reverse ModuleCat.hexagon_reverse
-
-attribute [local ext] TensorProduct.ext
-
-/-- The symmetric monoidal structure on `Module R`. -/
-instance symmetricCategory : SymmetricCategory (ModuleCat.{u} R)
-    where
-  braiding := braiding
-  braiding_naturality' X₁ X₂ Y₁ Y₂ f g := braiding_naturality f g
-  hexagon_forward' := hexagon_forward
-  hexagon_reverse' := hexagon_reverse
-#align Module.symmetric_category ModuleCat.symmetricCategory
-
-namespace MonoidalCategory
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem braiding_hom_apply {M N : ModuleCat.{u} R} (m : M) (n : N) :
-    ((β_ M N).Hom : M ⊗ N ⟶ N ⊗ M) (m ⊗ₜ n) = n ⊗ₜ m :=
-  rfl
-#align Module.monoidal_category.braiding_hom_apply ModuleCat.monoidalCategory.braiding_hom_apply
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem braiding_inv_apply {M N : ModuleCat.{u} R} (m : M) (n : N) :
-    ((β_ M N).inv : N ⊗ M ⟶ M ⊗ N) (n ⊗ₜ m) = m ⊗ₜ n :=
-  rfl
-#align Module.monoidal_category.braiding_inv_apply ModuleCat.monoidalCategory.braiding_inv_apply
-
-end MonoidalCategory
-
 open Opposite
 
 instance : MonoidalPreadditive (ModuleCat.{u} R) := by
@@ -344,75 +273,5 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply, monoidal_category.hom_apply,
       LinearMap.smul_apply, TensorProduct.tmul_smul, TensorProduct.smul_tmul]
 
-/-- Auxiliary definition for the `monoidal_closed` instance on `Module R`.
-(This is only a separate definition in order to speed up typechecking. )
--/
-@[simps]
-def monoidalClosedHomEquiv (M N P : ModuleCat.{u} R) :
-    ((MonoidalCategory.tensorLeft M).obj N ⟶ P) ≃
-      (N ⟶ ((linearCoyoneda R (ModuleCat R)).obj (op M)).obj P)
-    where
-  toFun f := LinearMap.compr₂ (TensorProduct.mk R N M) ((β_ N M).Hom ≫ f)
-  invFun f := (β_ M N).Hom ≫ TensorProduct.lift f
-  left_inv f := by
-    ext (m n)
-    simp only [TensorProduct.mk_apply, TensorProduct.lift.tmul, LinearMap.compr₂_apply,
-      Function.comp_apply, coe_comp, monoidal_category.braiding_hom_apply]
-  right_inv f := by
-    ext (m n)
-    simp only [TensorProduct.mk_apply, TensorProduct.lift.tmul, LinearMap.compr₂_apply,
-      symmetric_category.symmetry_assoc]
-#align Module.monoidal_closed_hom_equiv ModuleCat.monoidalClosedHomEquiv
-
-instance : MonoidalClosed (ModuleCat.{u} R)
-    where closed' M :=
-    {
-      isAdj :=
-        { right := (linearCoyoneda R (ModuleCat.{u} R)).obj (op M)
-          adj := Adjunction.mkOfHomEquiv { homEquiv := fun N P => monoidalClosedHomEquiv M N P } } }
-
-theorem ihom_map_apply {M N P : ModuleCat.{u} R} (f : N ⟶ P) (g : ModuleCat.of R (M ⟶ N)) :
-    (ihom M).map f g = g ≫ f :=
-  rfl
-#align Module.ihom_map_apply ModuleCat.ihom_map_apply
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
--- I can't seem to express the function coercion here without writing `@coe_fn`.
-@[simp]
-theorem monoidalClosed_curry {M N P : ModuleCat.{u} R} (f : M ⊗ N ⟶ P) (x : M) (y : N) :
-    @coeFn _ _ LinearMap.hasCoeToFun ((MonoidalClosed.curry f : N →ₗ[R] M →ₗ[R] P) y) x =
-      f (x ⊗ₜ[R] y) :=
-  rfl
-#align Module.monoidal_closed_curry ModuleCat.monoidalClosed_curry
-
-@[simp]
-theorem monoidalClosed_uncurry {M N P : ModuleCat.{u} R} (f : N ⟶ M ⟶[ModuleCat.{u} R] P) (x : M)
-    (y : N) : MonoidalClosed.uncurry f (x ⊗ₜ[R] y) = (@coeFn _ _ LinearMap.hasCoeToFun (f y)) x :=
-  rfl
-#align Module.monoidal_closed_uncurry ModuleCat.monoidalClosed_uncurry
-
-/-- Describes the counit of the adjunction `M ⊗ - ⊣ Hom(M, -)`. Given an `R`-module `N` this
-should give a map `M ⊗ Hom(M, N) ⟶ N`, so we flip the order of the arguments in the identity map
-`Hom(M, N) ⟶ (M ⟶ N)` and uncurry the resulting map `M ⟶ Hom(M, N) ⟶ N.` -/
-theorem ihom_ev_app (M N : ModuleCat.{u} R) :
-    (ihom.ev M).app N = TensorProduct.uncurry _ _ _ _ LinearMap.id.flip :=
-  by
-  ext
-  exact ModuleCat.monoidalClosed_uncurry _ _ _
-#align Module.ihom_ev_app ModuleCat.ihom_ev_app
-
-/-- Describes the unit of the adjunction `M ⊗ - ⊣ Hom(M, -)`. Given an `R`-module `N` this should
-define a map `N ⟶ Hom(M, M ⊗ N)`, which is given by flipping the arguments in the natural
-`R`-bilinear map `M ⟶ N ⟶ M ⊗ N`. -/
-theorem ihom_coev_app (M N : ModuleCat.{u} R) :
-    (ihom.coev M).app N = (TensorProduct.mk _ _ _).flip :=
-  rfl
-#align Module.ihom_coev_app ModuleCat.ihom_coev_app
-
-theorem monoidalClosed_pre_app {M N : ModuleCat.{u} R} (P : ModuleCat.{u} R) (f : N ⟶ M) :
-    (MonoidalClosed.pre f).app P = LinearMap.lcomp R _ f :=
-  rfl
-#align Module.monoidal_closed_pre_app ModuleCat.monoidalClosed_pre_app
-
 end ModuleCat
 

Changes in mathlib4

mathlib3
mathlib4
feat(LinearAlgebra/TensorProduct/Basic): add LinearEquiv.(l|r)Tensor (#11731)
  • add LinearMap.(l|r)Tensor and their properties
  • add congr_symm, congr_refl_refl, congr_trans, congr_mul, congr_pow and congr_zpow
Diff
@@ -138,7 +138,7 @@ private theorem pentagon_aux (W X Y Z : Type*) [AddCommMonoid W] [AddCommMonoid
     [AddCommMonoid Y] [AddCommMonoid Z] [Module R W] [Module R X] [Module R Y] [Module R Z] :
     (((assoc R X Y Z).toLinearMap.lTensor W).comp
             (assoc R W (X ⊗[R] Y) Z).toLinearMap).comp
-        ((assoc R W X Y).rTensor Z) =
+        ((assoc R W X Y).toLinearMap.rTensor Z) =
       (assoc R W X (Y ⊗[R] Z)).toLinearMap.comp (assoc R (W ⊗[R] X) Y Z).toLinearMap := by
   apply TensorProduct.ext_fourfold
   intro w x y z
Acl/reorg tensor product (#11282)

Move:

  • Mathlib/Algebra/Module/DirectLimitAndTensorProduct.lean to LinearAlgebra/TensorProduct/DirectLimit.lean
  • Mathlib/LinearAlgebra/TensorProduct to Mathlib/LinearAlgebra.TensorProduct.Basic.lean
  • Mathlib/RingTheory/TensorProduct to Mathlib/RingTheory/TensorProduct/Basic.lean.

This follows suggestions 1, 2, 3 of

https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Tensor.20Products.20of.20modules.20and.20rings/near/424605543

Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr>

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 -/
 import Mathlib.Algebra.Category.ModuleCat.Basic
-import Mathlib.LinearAlgebra.TensorProduct
+import Mathlib.LinearAlgebra.TensorProduct.Basic
 import Mathlib.CategoryTheory.Monoidal.Linear
 
 #align_import algebra.category.Module.monoidal.basic from "leanprover-community/mathlib"@"74403a3b2551b0970855e14ef5e8fd0d6af1bfc2"
chore(CategoryTheory/Monoidal): replace 𝟙 X ⊗ f with X ◁ f (#11223)

Extracted from #6307

Diff
@@ -136,9 +136,9 @@ variable (R)
 
 private theorem pentagon_aux (W X Y Z : Type*) [AddCommMonoid W] [AddCommMonoid X]
     [AddCommMonoid Y] [AddCommMonoid Z] [Module R W] [Module R X] [Module R Y] [Module R Z] :
-    ((map (1 : W →ₗ[R] W) (assoc R X Y Z).toLinearMap).comp
+    (((assoc R X Y Z).toLinearMap.lTensor W).comp
             (assoc R W (X ⊗[R] Y) Z).toLinearMap).comp
-        (map ↑(assoc R W X Y) (1 : Z →ₗ[R] Z)) =
+        ((assoc R W X Y).rTensor Z) =
       (assoc R W X (Y ⊗[R] Z)).toLinearMap.comp (assoc R (W ⊗[R] X) Y Z).toLinearMap := by
   apply TensorProduct.ext_fourfold
   intro w x y z
@@ -156,8 +156,8 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
 theorem pentagon (W X Y Z : ModuleCat R) :
-    tensorHom (associator W X Y).hom (𝟙 Z) ≫
-        (associator W (tensorObj X Y) Z).hom ≫ tensorHom (𝟙 W) (associator X Y Z).hom =
+    whiskerRight (associator W X Y).hom Z ≫
+        (associator W (tensorObj X Y) Z).hom ≫ whiskerLeft W (associator X Y Z).hom =
       (associator (tensorObj W X) Y Z).hom ≫ (associator W X (tensorObj Y Z)).hom := by
   convert pentagon_aux R W X Y Z using 1
 #align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagon
@@ -288,30 +288,30 @@ instance : MonoidalPreadditive (ModuleCat.{u} R) := by
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.zero_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerLeft_apply]
     rw [LinearMap.zero_apply, TensorProduct.tmul_zero]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.zero_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerRight_apply]
     rw [LinearMap.zero_apply, TensorProduct.zero_tmul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.add_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
-    erw [MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerLeft_apply, MonoidalCategory.whiskerLeft_apply]
+    erw [MonoidalCategory.whiskerLeft_apply]
     rw [LinearMap.add_apply, TensorProduct.tmul_add]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.add_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
-    erw [MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerRight_apply, MonoidalCategory.whiskerRight_apply]
+    erw [MonoidalCategory.whiskerRight_apply]
     rw [LinearMap.add_apply, TensorProduct.add_tmul]
 
 -- Porting note: simp wasn't firing but rw was, annoying
@@ -322,14 +322,14 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.smul_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerLeft_apply, MonoidalCategory.whiskerLeft_apply]
     rw [LinearMap.smul_apply, TensorProduct.tmul_smul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
     rw [LinearMap.smul_apply]
     -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    erw [MonoidalCategory.whiskerRight_apply, MonoidalCategory.whiskerRight_apply]
     rw [LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
 
 end ModuleCat
chore: classify broken ext porting notes (#11042)

Classifies by adding issue number #11041 to porting notes claiming:

broken ext

Diff
@@ -164,7 +164,7 @@ theorem pentagon (W X Y Z : ModuleCat R) :
 
 theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom (𝟙 (ModuleCat.of R R)) f ≫ (leftUnitor N).hom = (leftUnitor M).hom ≫ f := by
-  -- Porting note: broken ext
+  -- Porting note (#11041): broken ext
   apply TensorProduct.ext
   apply LinearMap.ext_ring
   apply LinearMap.ext; intro x
@@ -178,7 +178,7 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
 
 theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom f (𝟙 (ModuleCat.of R R)) ≫ (rightUnitor N).hom = (rightUnitor M).hom ≫ f := by
-  -- Porting note: broken ext
+  -- Porting note (#11041): broken ext
   apply TensorProduct.ext
   apply LinearMap.ext; intro x
   apply LinearMap.ext_ring
chore: classify used to be dsimp porting notes (#10935)

Classifies by adding issue number (#10934) to porting notes claiming anything semantically equivalent to:

  • "used to be dsimp"
  • "was dsimp"
Diff
@@ -168,7 +168,7 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
   apply TensorProduct.ext
   apply LinearMap.ext_ring
   apply LinearMap.ext; intro x
-  -- Porting note: used to be dsimp
+  -- Porting note (#10934): used to be dsimp
   change ((leftUnitor N).hom) ((tensorHom (𝟙 (of R R)) f) ((1 : R) ⊗ₜ[R] x)) =
     f (((leftUnitor M).hom) (1 ⊗ₜ[R] x))
   erw [TensorProduct.lid_tmul, TensorProduct.lid_tmul]
@@ -182,7 +182,7 @@ theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
   apply TensorProduct.ext
   apply LinearMap.ext; intro x
   apply LinearMap.ext_ring
-  -- Porting note: used to be dsimp
+  -- Porting note (#10934): used to be dsimp
   change ((rightUnitor N).hom) ((tensorHom f (𝟙 (of R R))) (x ⊗ₜ[R] (1 : R))) =
     f (((rightUnitor M).hom) (x ⊗ₜ[R] 1))
   erw [TensorProduct.rid_tmul, TensorProduct.rid_tmul]
@@ -196,7 +196,7 @@ theorem triangle (M N : ModuleCat.{u} R) :
   apply TensorProduct.ext_threefold
   intro x y z
   change R at y
-  -- Porting note: used to be dsimp [tensorHom, associator]
+  -- Porting note (#10934): used to be dsimp [tensorHom, associator]
   change x ⊗ₜ[R] ((leftUnitor N).hom) (y ⊗ₜ[R] z) = ((rightUnitor M).hom) (x ⊗ₜ[R] y) ⊗ₜ[R] z
   erw [TensorProduct.lid_tmul, TensorProduct.rid_tmul]
   exact (TensorProduct.smul_tmul _ _ _).symm
chore: remove detrital heartbeat bumps (#10191)

With multiple changes, it is a good time to check if existing set_option maxHeartbeats and set_option synthInstance.maxHeartbeats remain necessary. This brings the number of files with such down from 23 to 9. Most are straight deletions though I did change one proof.

Diff
@@ -206,7 +206,6 @@ end MonoidalCategory
 
 open MonoidalCategory
 
-set_option maxHeartbeats 400000 in
 instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R) := MonoidalCategory.ofTensorHom
   (tensor_id := fun M N ↦ tensor_id M N)
   (tensor_comp := fun f g h ↦ MonoidalCategory.tensor_comp f g h)
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -5,7 +5,6 @@ Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
 -/
 import Mathlib.Algebra.Category.ModuleCat.Basic
 import Mathlib.LinearAlgebra.TensorProduct
-import Mathlib.CategoryTheory.Linear.Yoneda
 import Mathlib.CategoryTheory.Monoidal.Linear
 
 #align_import algebra.category.Module.monoidal.basic from "leanprover-community/mathlib"@"74403a3b2551b0970855e14ef5e8fd0d6af1bfc2"
chore: tidy various files (#8823)
Diff
@@ -233,13 +233,13 @@ theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K
 @[simp]
 theorem whiskerLeft_apply (L : ModuleCat.{u} R) {M N : ModuleCat.{u} R} (f : M ⟶ N)
     (l : L) (m : M) :
-      (L ◁ f) (l ⊗ₜ m) = l ⊗ₜ f m :=
+    (L ◁ f) (l ⊗ₜ m) = l ⊗ₜ f m :=
   rfl
 
 @[simp]
 theorem whiskerRight_apply {L M : ModuleCat.{u} R} (f : L ⟶ M) (N : ModuleCat.{u} R)
     (l : L) (n : N) :
-      (f ▷ N) (l ⊗ₜ n) = f l ⊗ₜ n :=
+    (f ▷ N) (l ⊗ₜ n) = f l ⊗ₜ n :=
   rfl
 
 @[simp]
style: cleanup by putting by on the same line as := (#8407)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -152,8 +152,8 @@ end
 theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f₁ : X₁ ⟶ Y₁) (f₂ : X₂ ⟶ Y₂)
     (f₃ : X₃ ⟶ Y₃) :
     tensorHom (tensorHom f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).hom =
-      (associator X₁ X₂ X₃).hom ≫ tensorHom f₁ (tensorHom f₂ f₃) :=
-  by convert associator_naturality_aux f₁ f₂ f₃ using 1
+      (associator X₁ X₂ X₃).hom ≫ tensorHom f₁ (tensorHom f₂ f₃) := by
+  convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
 theorem pentagon (W X Y Z : ModuleCat R) :
feat(CategoryTheory/Monoidal): add lemmas for whiskering operators (#8191)

Extracted from #6307 as suggested in https://github.com/leanprover-community/mathlib4/pull/6307#discussion_r1371849810 .


Open in Gitpod

Diff
@@ -230,6 +230,18 @@ theorem hom_apply {K L M N : ModuleCat.{u} R} (f : K ⟶ L) (g : M ⟶ N) (k : K
   rfl
 #align Module.monoidal_category.hom_apply ModuleCat.MonoidalCategory.hom_apply
 
+@[simp]
+theorem whiskerLeft_apply (L : ModuleCat.{u} R) {M N : ModuleCat.{u} R} (f : M ⟶ N)
+    (l : L) (m : M) :
+      (L ◁ f) (l ⊗ₜ m) = l ⊗ₜ f m :=
+  rfl
+
+@[simp]
+theorem whiskerRight_apply {L M : ModuleCat.{u} R} (f : L ⟶ M) (N : ModuleCat.{u} R)
+    (l : L) (n : N) :
+      (f ▷ N) (l ⊗ₜ n) = f l ⊗ₜ n :=
+  rfl
+
 @[simp]
 theorem leftUnitor_hom_apply {M : ModuleCat.{u} R} (r : R) (m : M) :
     ((λ_ M).hom : 𝟙_ (ModuleCat R) ⊗ M ⟶ M) (r ⊗ₜ[R] m) = r • m :=
refactor: Move the data fields of MonoidalCategory into a Struct class (#7279)

This matches the approach for CategoryStruct, and allows us to use the notation within MonoidalCategory.

It also makes it easier to induce the lawful structure along a faithful functor, as again it means by the time we are providing the proof fields, the notation is already available.

This also eliminates tensorUnit vs tensorUnit', adding a custom pretty-printer to provide the unprimed version with appropriate notation.

Diff
@@ -92,6 +92,26 @@ def associator (M : ModuleCat.{v} R) (N : ModuleCat.{w} R) (K : ModuleCat.{x} R)
   (TensorProduct.assoc R M N K).toModuleIso
 #align Module.monoidal_category.associator ModuleCat.MonoidalCategory.associator
 
+/-- (implementation) the left unitor for R-modules -/
+def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
+  (LinearEquiv.toModuleIso (TensorProduct.lid R M) : of R (R ⊗ M) ≅ of R M).trans (ofSelfIso M)
+#align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitor
+
+/-- (implementation) the right unitor for R-modules -/
+def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
+  (LinearEquiv.toModuleIso (TensorProduct.rid R M) : of R (M ⊗ R) ≅ of R M).trans (ofSelfIso M)
+#align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitor
+
+instance : MonoidalCategoryStruct (ModuleCat.{u} R) where
+  tensorObj := tensorObj
+  whiskerLeft := whiskerLeft
+  whiskerRight := whiskerRight
+  tensorHom f g := TensorProduct.map f g
+  tensorUnit := ModuleCat.of R R
+  associator := associator
+  leftUnitor := leftUnitor
+  rightUnitor := rightUnitor
+
 section
 
 /-! The `associator_naturality` and `pentagon` lemmas below are very slow to elaborate.
@@ -143,11 +163,6 @@ theorem pentagon (W X Y Z : ModuleCat R) :
   convert pentagon_aux R W X Y Z using 1
 #align Module.monoidal_category.pentagon ModuleCat.MonoidalCategory.pentagon
 
-/-- (implementation) the left unitor for R-modules -/
-def leftUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (R ⊗[R] M) ≅ M :=
-  (LinearEquiv.toModuleIso (TensorProduct.lid R M) : of R (R ⊗ M) ≅ of R M).trans (ofSelfIso M)
-#align Module.monoidal_category.left_unitor ModuleCat.MonoidalCategory.leftUnitor
-
 theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom (𝟙 (ModuleCat.of R R)) f ≫ (leftUnitor N).hom = (leftUnitor M).hom ≫ f := by
   -- Porting note: broken ext
@@ -162,11 +177,6 @@ theorem leftUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
   rfl
 #align Module.monoidal_category.left_unitor_naturality ModuleCat.MonoidalCategory.leftUnitor_naturality
 
-/-- (implementation) the right unitor for R-modules -/
-def rightUnitor (M : ModuleCat.{u} R) : ModuleCat.of R (M ⊗[R] R) ≅ M :=
-  (LinearEquiv.toModuleIso (TensorProduct.rid R M) : of R (M ⊗ R) ≅ of R M).trans (ofSelfIso M)
-#align Module.monoidal_category.right_unitor ModuleCat.MonoidalCategory.rightUnitor
-
 theorem rightUnitor_naturality {M N : ModuleCat R} (f : M ⟶ N) :
     tensorHom f (𝟙 (ModuleCat.of R R)) ≫ (rightUnitor N).hom = (rightUnitor M).hom ≫ f := by
   -- Porting note: broken ext
@@ -197,17 +207,8 @@ end MonoidalCategory
 
 open MonoidalCategory
 
+set_option maxHeartbeats 400000 in
 instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R) := MonoidalCategory.ofTensorHom
-  -- data
-  (tensorObj := MonoidalCategory.tensorObj)
-  (tensorHom := @tensorHom _ _)
-  (whiskerLeft := @whiskerLeft _ _)
-  (whiskerRight := @whiskerRight _ _)
-  (tensorUnit' := ModuleCat.of R R)
-  (associator := associator)
-  (leftUnitor := leftUnitor)
-  (rightUnitor := rightUnitor)
-  -- properties
   (tensor_id := fun M N ↦ tensor_id M N)
   (tensor_comp := fun f g h ↦ MonoidalCategory.tensor_comp f g h)
   (associator_naturality := fun f g h ↦ MonoidalCategory.associator_naturality f g h)
chore: removing unneeded maxHeartbeats (#7761)

Due to recent changes in core we can reduce or remove many set_option maxHeartbeats statements.

I have tried to be careful to not leave anything too close to the line, so don't be surprised if some of these can still be reduced further.

This reduces us from 96 maxHeartbeats statements to 44. (There are 10 false positives in meta or testing code.)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -136,8 +136,6 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
   by convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
--- Porting note: very slow!
-set_option maxHeartbeats 1200000 in
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).hom ≫ tensorHom (𝟙 W) (associator X Y Z).hom =
Revert "chore: revert #7703 (#7710)"

This reverts commit f3695eb2.

Diff
@@ -277,23 +277,31 @@ instance : MonoidalPreadditive (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
-      TensorProduct.tmul_zero]
+    rw [LinearMap.zero_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply]
+    rw [LinearMap.zero_apply, TensorProduct.tmul_zero]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
-      TensorProduct.zero_tmul]
+    rw [LinearMap.zero_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply]
+    rw [LinearMap.zero_apply, TensorProduct.zero_tmul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.tmul_add]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.add_tmul]
 
@@ -303,12 +311,16 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
-      LinearMap.smul_apply, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.smul_apply, TensorProduct.tmul_smul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
-      LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
 
 end ModuleCat
chore: revert #7703 (#7710)

This reverts commit 26eb2b0a.

Diff
@@ -277,31 +277,23 @@ instance : MonoidalPreadditive (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply]
-    rw [LinearMap.zero_apply, TensorProduct.tmul_zero]
+    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
+      TensorProduct.tmul_zero]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply]
-    rw [LinearMap.zero_apply, TensorProduct.zero_tmul]
+    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
+      TensorProduct.zero_tmul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.tmul_add]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.add_tmul]
 
@@ -311,16 +303,12 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
-    rw [LinearMap.smul_apply, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
+      LinearMap.smul_apply, TensorProduct.tmul_smul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply]
-    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
-    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
-    rw [LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
+      LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
 
 end ModuleCat
chore: bump toolchain to v4.2.0-rc2 (#7703)

This includes all the changes from #7606.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -277,23 +277,31 @@ instance : MonoidalPreadditive (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
-      TensorProduct.tmul_zero]
+    rw [LinearMap.zero_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply]
+    rw [LinearMap.zero_apply, TensorProduct.tmul_zero]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.zero_apply, MonoidalCategory.hom_apply, LinearMap.zero_apply,
-      TensorProduct.zero_tmul]
+    rw [LinearMap.zero_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply]
+    rw [LinearMap.zero_apply, TensorProduct.zero_tmul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.tmul_add]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.add_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.add_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
     erw [MonoidalCategory.hom_apply]
     rw [LinearMap.add_apply, TensorProduct.add_tmul]
 
@@ -303,12 +311,16 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
-      LinearMap.smul_apply, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.smul_apply, TensorProduct.tmul_smul]
   · dsimp only [autoParam]; intros
     refine' TensorProduct.ext (LinearMap.ext fun x => LinearMap.ext fun y => _)
     simp only [LinearMap.compr₂_apply, TensorProduct.mk_apply]
-    rw [LinearMap.smul_apply, MonoidalCategory.hom_apply, MonoidalCategory.hom_apply,
-      LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
+    rw [LinearMap.smul_apply]
+    -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+    erw [MonoidalCategory.hom_apply, MonoidalCategory.hom_apply]
+    rw [LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
 
 end ModuleCat
feat: use suppress_compilation in tensor products (#7504)

More principled version of #7281.

Diff
@@ -33,6 +33,8 @@ use this as an interface and not need to interact much with the implementation d
 -- Porting note: Module
 set_option linter.uppercaseLean3 false
 
+suppress_compilation
+
 universe v w x u
 
 open CategoryTheory
chore: update/remove heart beat bumps (#6860)

We clean up heart beat bumps after #6474.

Diff
@@ -135,7 +135,7 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
 -- Porting note: very slow!
-set_option maxHeartbeats 1600000 in
+set_option maxHeartbeats 1200000 in
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).hom ≫ tensorHom (𝟙 W) (associator X Y Z).hom =
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -100,8 +100,8 @@ We give them some help by expressing the lemmas first non-categorically, then us
 
 open TensorProduct (assoc map)
 
-private theorem associator_naturality_aux {X₁ X₂ X₃ : Type _} [AddCommMonoid X₁] [AddCommMonoid X₂]
-    [AddCommMonoid X₃] [Module R X₁] [Module R X₂] [Module R X₃] {Y₁ Y₂ Y₃ : Type _}
+private theorem associator_naturality_aux {X₁ X₂ X₃ : Type*} [AddCommMonoid X₁] [AddCommMonoid X₂]
+    [AddCommMonoid X₃] [Module R X₁] [Module R X₂] [Module R X₃] {Y₁ Y₂ Y₃ : Type*}
     [AddCommMonoid Y₁] [AddCommMonoid Y₂] [AddCommMonoid Y₃] [Module R Y₁] [Module R Y₂]
     [Module R Y₃] (f₁ : X₁ →ₗ[R] Y₁) (f₂ : X₂ →ₗ[R] Y₂) (f₃ : X₃ →ₗ[R] Y₃) :
     ↑(assoc R Y₁ Y₂ Y₃) ∘ₗ map (map f₁ f₂) f₃ = map f₁ (map f₂ f₃) ∘ₗ ↑(assoc R X₁ X₂ X₃) := by
@@ -113,7 +113,7 @@ private theorem associator_naturality_aux {X₁ X₂ X₃ : Type _} [AddCommMono
 
 variable (R)
 
-private theorem pentagon_aux (W X Y Z : Type _) [AddCommMonoid W] [AddCommMonoid X]
+private theorem pentagon_aux (W X Y Z : Type*) [AddCommMonoid W] [AddCommMonoid X]
     [AddCommMonoid Y] [AddCommMonoid Z] [Module R W] [Module R X] [Module R Y] [Module R Z] :
     ((map (1 : W →ₗ[R] W) (assoc R X Y Z).toLinearMap).comp
             (assoc R W (X ⊗[R] Y) Z).toLinearMap).comp
feat(CategoryTheory/Monoidal): define whiskering operators (#6420)

Extracted from #6307. Just put the whiskerings into the constructor.

Diff
@@ -61,6 +61,16 @@ def tensorHom {M N M' N' : ModuleCat R} (f : M ⟶ N) (g : M' ⟶ N') :
   TensorProduct.map f g
 #align Module.monoidal_category.tensor_hom ModuleCat.MonoidalCategory.tensorHom
 
+/-- (implementation) left whiskering for R-modules -/
+def whiskerLeft (M : ModuleCat R) {N₁ N₂ : ModuleCat R} (f : N₁ ⟶ N₂) :
+    tensorObj M N₁ ⟶ tensorObj M N₂ :=
+  f.lTensor M
+
+/-- (implementation) right whiskering for R-modules -/
+def whiskerRight {M₁ M₂ : ModuleCat R} (f : M₁ ⟶ M₂) (N : ModuleCat R) :
+    tensorObj M₁ N ⟶ tensorObj M₂ N :=
+  f.rTensor N
+
 theorem tensor_id (M N : ModuleCat R) : tensorHom (𝟙 M) (𝟙 N) = 𝟙 (ModuleCat.of R (M ⊗ N)) := by
   -- Porting note: even with high priority ext fails to find this
   apply TensorProduct.ext
@@ -187,22 +197,24 @@ end MonoidalCategory
 
 open MonoidalCategory
 
-instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R) where
+instance monoidalCategory : MonoidalCategory (ModuleCat.{u} R) := MonoidalCategory.ofTensorHom
   -- data
-  tensorObj := tensorObj
-  tensorHom := @tensorHom _ _
-  tensorUnit' := ModuleCat.of R R
-  associator := associator
-  leftUnitor := leftUnitor
-  rightUnitor := rightUnitor
+  (tensorObj := MonoidalCategory.tensorObj)
+  (tensorHom := @tensorHom _ _)
+  (whiskerLeft := @whiskerLeft _ _)
+  (whiskerRight := @whiskerRight _ _)
+  (tensorUnit' := ModuleCat.of R R)
+  (associator := associator)
+  (leftUnitor := leftUnitor)
+  (rightUnitor := rightUnitor)
   -- properties
-  tensor_id M N := tensor_id M N
-  tensor_comp f g h := MonoidalCategory.tensor_comp f g h
-  associator_naturality f g h := MonoidalCategory.associator_naturality f g h
-  leftUnitor_naturality f := MonoidalCategory.leftUnitor_naturality f
-  rightUnitor_naturality f := rightUnitor_naturality f
-  pentagon M N K L := pentagon M N K L
-  triangle M N := triangle M N
+  (tensor_id := fun M N ↦ tensor_id M N)
+  (tensor_comp := fun f g h ↦ MonoidalCategory.tensor_comp f g h)
+  (associator_naturality := fun f g h ↦ MonoidalCategory.associator_naturality f g h)
+  (leftUnitor_naturality := fun f ↦ MonoidalCategory.leftUnitor_naturality f)
+  (rightUnitor_naturality := fun f ↦ rightUnitor_naturality f)
+  (pentagon := fun M N K L ↦ pentagon M N K L)
+  (triangle := fun M N ↦ triangle M N)
 #align Module.monoidal_category ModuleCat.monoidalCategory
 
 /-- Remind ourselves that the monoidal unit, being just `R`, is still a commutative ring. -/
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kevin Buzzard, Scott Morrison, Jakob von Raumer
-
-! This file was ported from Lean 3 source module algebra.category.Module.monoidal.basic
-! leanprover-community/mathlib commit 74403a3b2551b0970855e14ef5e8fd0d6af1bfc2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Category.ModuleCat.Basic
 import Mathlib.LinearAlgebra.TensorProduct
 import Mathlib.CategoryTheory.Linear.Yoneda
 import Mathlib.CategoryTheory.Monoidal.Linear
 
+#align_import algebra.category.Module.monoidal.basic from "leanprover-community/mathlib"@"74403a3b2551b0970855e14ef5e8fd0d6af1bfc2"
+
 /-!
 # The monoidal category structure on R-modules
 
feat: port Algebra.Category.FGModule.basic (#4878)

Sets new records for set_option maxHeartbeats. :-( I spent too long struggling with this one; if anyone would like to take another look please do.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -127,7 +127,8 @@ theorem associator_naturality {X₁ X₂ X₃ Y₁ Y₂ Y₃ : ModuleCat R} (f
   by convert associator_naturality_aux f₁ f₂ f₃ using 1
 #align Module.monoidal_category.associator_naturality ModuleCat.MonoidalCategory.associator_naturality
 
-set_option maxHeartbeats 0 in
+-- Porting note: very slow!
+set_option maxHeartbeats 1600000 in
 theorem pentagon (W X Y Z : ModuleCat R) :
     tensorHom (associator W X Y).hom (𝟙 Z) ≫
         (associator W (tensorObj X Y) Z).hom ≫ tensorHom (𝟙 W) (associator X Y Z).hom =
@@ -300,4 +301,3 @@ instance : MonoidalLinear R (ModuleCat.{u} R) := by
       LinearMap.smul_apply, TensorProduct.smul_tmul, TensorProduct.tmul_smul]
 
 end ModuleCat
-
feat: port Algebra.Category.ModuleCat.Monoidal.Basic (#4368)

Dependencies 8 + 486

487 files ported (98.4%)
191006 lines ported (98.4%)
Show graph

The unported dependencies are