category_theory.monoidal.category ⟷ Mathlib.CategoryTheory.Monoidal.Category

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)

(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)

(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)

(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
@@ -776,7 +776,7 @@ def tensoringLeft : C β₯€ C β₯€ C where
 #align category_theory.monoidal_category.tensoring_left CategoryTheory.MonoidalCategory.tensoringLeft
 -/
 
-instance : Faithful (tensoringLeft C)
+instance : CategoryTheory.Functor.Faithful (tensoringLeft C)
     where map_injective' X Y f g h := by
     injections h
     replace h := congr_fun h (πŸ™_ C)
@@ -795,7 +795,7 @@ def tensoringRight : C β₯€ C β₯€ C where
 #align category_theory.monoidal_category.tensoring_right CategoryTheory.MonoidalCategory.tensoringRight
 -/
 
-instance : Faithful (tensoringRight C)
+instance : CategoryTheory.Functor.Faithful (tensoringRight C)
     where map_injective' X Y f g h := by
     injections h
     replace h := congr_fun h (πŸ™_ C)
Diff
@@ -310,20 +310,19 @@ theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) 
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-#print CategoryTheory.MonoidalCategory.rightUnitor_conjugation /-
+#print CategoryTheory.MonoidalCategory.whiskerRight_id /-
 @[simp]
-theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
-    f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).Hom ≫ f ≫ (ρ_ Y).inv := by
+theorem whiskerRight_id {X Y : C} (f : X ⟢ Y) : f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).Hom ≫ f ≫ (ρ_ Y).inv := by
   rw [← right_unitor_naturality_assoc, iso.hom_inv_id, category.comp_id]
-#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
+#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.whiskerRight_id
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-#print CategoryTheory.MonoidalCategory.leftUnitor_conjugation /-
+#print CategoryTheory.MonoidalCategory.id_whiskerLeft /-
 @[simp]
-theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).Hom ≫ f ≫ (Ξ»_ Y).inv :=
-  by rw [← left_unitor_naturality_assoc, iso.hom_inv_id, category.comp_id]
-#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
+theorem id_whiskerLeft {X Y : C} (f : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).Hom ≫ f ≫ (Ξ»_ Y).inv := by
+  rw [← left_unitor_naturality_assoc, iso.hom_inv_id, category.comp_id]
+#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.id_whiskerLeft
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
Diff
@@ -64,22 +64,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -88,14 +88,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:413:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
Diff
@@ -64,22 +64,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -88,14 +88,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:417:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
Diff
@@ -514,12 +514,12 @@ theorem inv_hom_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 /- ./././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 CategoryTheory.MonoidalCategory.tensorHom_inv_id /-
+#print CategoryTheory.MonoidalCategory.tensor_hom_inv_id /-
 @[simp, reassoc]
-theorem tensorHom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
+theorem tensor_hom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.Hom) ≫ (h βŠ— f.inv) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, f.hom_inv_id, comp_tensor_id]
-#align category_theory.monoidal_category.tensor_hom_inv_id CategoryTheory.MonoidalCategory.tensorHom_inv_id
+#align category_theory.monoidal_category.tensor_hom_inv_id CategoryTheory.MonoidalCategory.tensor_hom_inv_id
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -562,12 +562,12 @@ theorem inv_hom_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 /- ./././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 CategoryTheory.MonoidalCategory.tensorHom_inv_id' /-
+#print CategoryTheory.MonoidalCategory.tensor_hom_inv_id' /-
 @[simp, reassoc]
-theorem tensorHom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
+theorem tensor_hom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f) ≫ (h βŠ— inv f) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, is_iso.hom_inv_id, comp_tensor_id]
-#align category_theory.monoidal_category.tensor_hom_inv_id' CategoryTheory.MonoidalCategory.tensorHom_inv_id'
+#align category_theory.monoidal_category.tensor_hom_inv_id' CategoryTheory.MonoidalCategory.tensor_hom_inv_id'
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta, Jakob von Raumer
 -/
-import Mathbin.CategoryTheory.Products.Basic
+import CategoryTheory.Products.Basic
 
 #align_import category_theory.monoidal.category from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
 
@@ -64,22 +64,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -88,14 +88,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
Diff
@@ -175,33 +175,19 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
 #align category_theory.monoidal_category CategoryTheory.MonoidalCategory
 -/
 
-restate_axiom monoidal_category.tensor_id'
-
 attribute [simp] monoidal_category.tensor_id
 
-restate_axiom monoidal_category.tensor_comp'
-
 attribute [reassoc] monoidal_category.tensor_comp
 
 -- This would be redundant in the simp set.
 attribute [simp] monoidal_category.tensor_comp
 
-restate_axiom monoidal_category.associator_naturality'
-
 attribute [reassoc] monoidal_category.associator_naturality
 
-restate_axiom monoidal_category.left_unitor_naturality'
-
 attribute [reassoc] monoidal_category.left_unitor_naturality
 
-restate_axiom monoidal_category.right_unitor_naturality'
-
 attribute [reassoc] monoidal_category.right_unitor_naturality
 
-restate_axiom monoidal_category.pentagon'
-
-restate_axiom monoidal_category.triangle'
-
 attribute [reassoc] monoidal_category.pentagon
 
 attribute [simp, reassoc] monoidal_category.triangle
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta, Jakob von Raumer
-
-! This file was ported from Lean 3 source module category_theory.monoidal.category
-! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Products.Basic
 
+#align_import category_theory.monoidal.category from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
+
 /-!
 # Monoidal categories
 
Diff
@@ -67,22 +67,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -91,14 +91,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
@@ -211,22 +211,16 @@ attribute [simp, reassoc] monoidal_category.triangle
 
 open MonoidalCategory
 
--- mathport name: tensor_obj
 infixr:70 " βŠ— " => tensorObj
 
--- mathport name: tensor_hom
 infixr:70 " βŠ— " => tensorHom
 
--- mathport name: Β«exprπŸ™_Β»
 notation "πŸ™_" => tensorUnit
 
--- mathport name: exprΞ±_
 notation "Ξ±_" => associator
 
--- mathport name: Β«exprΞ»_Β»
 notation "Ξ»_" => leftUnitor
 
--- mathport name: exprρ_
 notation "ρ_" => rightUnitor
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -245,7 +239,6 @@ def tensorIso {C : Type u} {X Y X' Y' : C} [Category.{v} C] [MonoidalCategory.{v
 #align category_theory.tensor_iso CategoryTheory.tensorIso
 -/
 
--- mathport name: tensor_iso
 infixr:70 " βŠ— " => tensorIso
 
 namespace MonoidalCategory
@@ -638,17 +631,21 @@ def leftAssocTensor : C Γ— C Γ— C β₯€ C
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.MonoidalCategory.leftAssocTensor_obj /-
 @[simp]
 theorem leftAssocTensor_obj (X) : (leftAssocTensor C).obj X = (X.1 βŠ— X.2.1) βŠ— X.2.2 :=
   rfl
 #align category_theory.monoidal_category.left_assoc_tensor_obj CategoryTheory.MonoidalCategory.leftAssocTensor_obj
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.MonoidalCategory.leftAssocTensor_map /-
 @[simp]
 theorem leftAssocTensor_map {X Y} (f : X ⟢ Y) : (leftAssocTensor C).map f = (f.1 βŠ— f.2.1) βŠ— f.2.2 :=
   rfl
 #align category_theory.monoidal_category.left_assoc_tensor_map CategoryTheory.MonoidalCategory.leftAssocTensor_map
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -665,17 +662,21 @@ def rightAssocTensor : C Γ— C Γ— C β₯€ C
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.MonoidalCategory.rightAssocTensor_obj /-
 @[simp]
 theorem rightAssocTensor_obj (X) : (rightAssocTensor C).obj X = X.1 βŠ— X.2.1 βŠ— X.2.2 :=
   rfl
 #align category_theory.monoidal_category.right_assoc_tensor_obj CategoryTheory.MonoidalCategory.rightAssocTensor_obj
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.MonoidalCategory.rightAssocTensor_map /-
 @[simp]
 theorem rightAssocTensor_map {X Y} (f : X ⟢ Y) : (rightAssocTensor C).map f = f.1 βŠ— f.2.1 βŠ— f.2.2 :=
   rfl
 #align category_theory.monoidal_category.right_assoc_tensor_map CategoryTheory.MonoidalCategory.rightAssocTensor_map
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -752,16 +753,20 @@ def tensorLeftTensor (X Y : C) : tensorLeft (X βŠ— Y) β‰… tensorLeft Y β‹™ tenso
 #align category_theory.monoidal_category.tensor_left_tensor CategoryTheory.MonoidalCategory.tensorLeftTensor
 -/
 
+#print CategoryTheory.MonoidalCategory.tensorLeftTensor_hom_app /-
 @[simp]
 theorem tensorLeftTensor_hom_app (X Y Z : C) :
     (tensorLeftTensor X Y).Hom.app Z = (associator X Y Z).Hom :=
   rfl
 #align category_theory.monoidal_category.tensor_left_tensor_hom_app CategoryTheory.MonoidalCategory.tensorLeftTensor_hom_app
+-/
 
+#print CategoryTheory.MonoidalCategory.tensorLeftTensor_inv_app /-
 @[simp]
 theorem tensorLeftTensor_inv_app (X Y Z : C) :
     (tensorLeftTensor X Y).inv.app Z = (associator X Y Z).inv := by simp [tensor_left_tensor]
 #align category_theory.monoidal_category.tensor_left_tensor_inv_app CategoryTheory.MonoidalCategory.tensorLeftTensor_inv_app
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -827,16 +832,20 @@ def tensorRightTensor (X Y : C) : tensorRight (X βŠ— Y) β‰… tensorRight X β‹™ te
 #align category_theory.monoidal_category.tensor_right_tensor CategoryTheory.MonoidalCategory.tensorRightTensor
 -/
 
+#print CategoryTheory.MonoidalCategory.tensorRightTensor_hom_app /-
 @[simp]
 theorem tensorRightTensor_hom_app (X Y Z : C) :
     (tensorRightTensor X Y).Hom.app Z = (associator Z X Y).inv :=
   rfl
 #align category_theory.monoidal_category.tensor_right_tensor_hom_app CategoryTheory.MonoidalCategory.tensorRightTensor_hom_app
+-/
 
+#print CategoryTheory.MonoidalCategory.tensorRightTensor_inv_app /-
 @[simp]
 theorem tensorRightTensor_inv_app (X Y Z : C) :
     (tensorRightTensor X Y).inv.app Z = (associator Z X Y).Hom := by simp [tensor_right_tensor]
 #align category_theory.monoidal_category.tensor_right_tensor_inv_app CategoryTheory.MonoidalCategory.tensorRightTensor_inv_app
+-/
 
 end
 
Diff
@@ -67,22 +67,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -91,14 +91,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:407:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
Diff
@@ -703,8 +703,8 @@ def tensorUnitRight : C β₯€ C where
 /-- The associator as a natural isomorphism. -/
 @[simps]
 def associatorNatIso : leftAssocTensor C β‰… rightAssocTensor C :=
-  NatIso.ofComponents (by intros ; apply monoidal_category.associator)
-    (by intros ; apply monoidal_category.associator_naturality)
+  NatIso.ofComponents (by intros; apply monoidal_category.associator)
+    (by intros; apply monoidal_category.associator_naturality)
 #align category_theory.monoidal_category.associator_nat_iso CategoryTheory.MonoidalCategory.associatorNatIso
 -/
 
@@ -712,8 +712,8 @@ def associatorNatIso : leftAssocTensor C β‰… rightAssocTensor C :=
 /-- The left unitor as a natural isomorphism. -/
 @[simps]
 def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
-  NatIso.ofComponents (by intros ; apply monoidal_category.left_unitor)
-    (by intros ; apply monoidal_category.left_unitor_naturality)
+  NatIso.ofComponents (by intros; apply monoidal_category.left_unitor)
+    (by intros; apply monoidal_category.left_unitor_naturality)
 #align category_theory.monoidal_category.left_unitor_nat_iso CategoryTheory.MonoidalCategory.leftUnitorNatIso
 -/
 
@@ -721,8 +721,8 @@ def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
 /-- The right unitor as a natural isomorphism. -/
 @[simps]
 def rightUnitorNatIso : tensorUnitRight C β‰… 𝟭 C :=
-  NatIso.ofComponents (by intros ; apply monoidal_category.right_unitor)
-    (by intros ; apply monoidal_category.right_unitor_naturality)
+  NatIso.ofComponents (by intros; apply monoidal_category.right_unitor)
+    (by intros; apply monoidal_category.right_unitor_naturality)
 #align category_theory.monoidal_category.right_unitor_nat_iso CategoryTheory.MonoidalCategory.rightUnitorNatIso
 -/
 
Diff
@@ -636,12 +636,6 @@ def leftAssocTensor : C Γ— C Γ— C β₯€ C
 #align category_theory.monoidal_category.left_assoc_tensor CategoryTheory.MonoidalCategory.leftAssocTensor
 -/
 
-/- warning: category_theory.monoidal_category.left_assoc_tensor_obj -> CategoryTheory.MonoidalCategory.leftAssocTensor_obj is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : Prod.{u2, u2} C (Prod.{u2, u2} C C)), Eq.{succ u2} C (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)))
-but is expected to have type
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : Prod.{u2, u2} C (Prod.{u2, u2} C C)), Eq.{succ u2} C (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2)) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.left_assoc_tensor_obj CategoryTheory.MonoidalCategory.leftAssocTensor_objβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -649,9 +643,6 @@ theorem leftAssocTensor_obj (X) : (leftAssocTensor C).obj X = (X.1 βŠ— X.2.1) 
   rfl
 #align category_theory.monoidal_category.left_assoc_tensor_obj CategoryTheory.MonoidalCategory.leftAssocTensor_obj
 
-/- warning: category_theory.monoidal_category.left_assoc_tensor_map -> CategoryTheory.MonoidalCategory.leftAssocTensor_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.left_assoc_tensor_map CategoryTheory.MonoidalCategory.leftAssocTensor_mapβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -672,12 +663,6 @@ def rightAssocTensor : C Γ— C Γ— C β₯€ C
 #align category_theory.monoidal_category.right_assoc_tensor CategoryTheory.MonoidalCategory.rightAssocTensor
 -/
 
-/- warning: category_theory.monoidal_category.right_assoc_tensor_obj -> CategoryTheory.MonoidalCategory.rightAssocTensor_obj is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : Prod.{u2, u2} C (Prod.{u2, u2} C C)), Eq.{succ u2} C (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))))
-but is expected to have type
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : Prod.{u2, u2} C (Prod.{u2, u2} C C)), Eq.{succ u2} C (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2)) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.right_assoc_tensor_obj CategoryTheory.MonoidalCategory.rightAssocTensor_objβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -685,9 +670,6 @@ theorem rightAssocTensor_obj (X) : (rightAssocTensor C).obj X = X.1 βŠ— X.2.1 
   rfl
 #align category_theory.monoidal_category.right_assoc_tensor_obj CategoryTheory.MonoidalCategory.rightAssocTensor_obj
 
-/- warning: category_theory.monoidal_category.right_assoc_tensor_map -> CategoryTheory.MonoidalCategory.rightAssocTensor_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.right_assoc_tensor_map CategoryTheory.MonoidalCategory.rightAssocTensor_mapβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -770,24 +752,12 @@ def tensorLeftTensor (X Y : C) : tensorLeft (X βŠ— Y) β‰… tensorLeft Y β‹™ tenso
 #align category_theory.monoidal_category.tensor_left_tensor CategoryTheory.MonoidalCategory.tensorLeftTensor
 -/
 
-/- warning: category_theory.monoidal_category.tensor_left_tensor_hom_app -> CategoryTheory.MonoidalCategory.tensorLeftTensor_hom_app is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.Iso.hom.{max u2 u1, max u1 u2} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeftTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y) Z) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Y Z)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 X Y Z))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y))) Z) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X))) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.Iso.hom.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeftTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y) Z) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Y Z)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 X Y Z))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.tensor_left_tensor_hom_app CategoryTheory.MonoidalCategory.tensorLeftTensor_hom_appβ‚“'. -/
 @[simp]
 theorem tensorLeftTensor_hom_app (X Y Z : C) :
     (tensorLeftTensor X Y).Hom.app Z = (associator X Y Z).Hom :=
   rfl
 #align category_theory.monoidal_category.tensor_left_tensor_hom_app CategoryTheory.MonoidalCategory.tensorLeftTensor_hom_app
 
-/- warning: category_theory.monoidal_category.tensor_left_tensor_inv_app -> CategoryTheory.MonoidalCategory.tensorLeftTensor_inv_app is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) Z) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Iso.inv.{max u2 u1, max u1 u2} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeftTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.inv.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y) Z) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Y Z)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 X Y Z))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X))) Z) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y))) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Iso.inv.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 Y) (CategoryTheory.MonoidalCategory.tensorLeft.{u1, u2} C _inst_1 _inst_2 X)) (CategoryTheory.MonoidalCategory.tensorLeftTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.inv.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y) Z) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Y Z)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 X Y Z))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.tensor_left_tensor_inv_app CategoryTheory.MonoidalCategory.tensorLeftTensor_inv_appβ‚“'. -/
 @[simp]
 theorem tensorLeftTensor_inv_app (X Y Z : C) :
     (tensorLeftTensor X Y).inv.app Z = (associator X Y Z).inv := by simp [tensor_left_tensor]
@@ -857,24 +827,12 @@ def tensorRightTensor (X Y : C) : tensorRight (X βŠ— Y) β‰… tensorRight X β‹™ te
 #align category_theory.monoidal_category.tensor_right_tensor CategoryTheory.MonoidalCategory.tensorRightTensor
 -/
 
-/- warning: category_theory.monoidal_category.tensor_right_tensor_hom_app -> CategoryTheory.MonoidalCategory.tensorRightTensor_hom_app is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.Iso.hom.{max u2 u1, max u1 u2} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRightTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.inv.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z X) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 Z X Y))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y))) Z) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y))) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.Iso.hom.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRightTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.inv.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z X) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 Z X Y))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.tensor_right_tensor_hom_app CategoryTheory.MonoidalCategory.tensorRightTensor_hom_appβ‚“'. -/
 @[simp]
 theorem tensorRightTensor_hom_app (X Y Z : C) :
     (tensorRightTensor X Y).Hom.app Z = (associator Z X Y).inv :=
   rfl
 #align category_theory.monoidal_category.tensor_right_tensor_hom_app CategoryTheory.MonoidalCategory.tensorRightTensor_hom_app
 
-/- warning: category_theory.monoidal_category.tensor_right_tensor_inv_app -> CategoryTheory.MonoidalCategory.tensorRightTensor_inv_app is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) Z) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Iso.inv.{max u2 u1, max u1 u2} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRightTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z X) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 Z X Y))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] (X : C) (Y : C) (Z : C), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y))) Z) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y))) Z)) (CategoryTheory.NatTrans.app.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Iso.inv.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} C _inst_1 C _inst_1 C _inst_1 (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 X) (CategoryTheory.MonoidalCategory.tensorRight.{u1, u2} C _inst_1 _inst_2 Y)) (CategoryTheory.MonoidalCategory.tensorRightTensor.{u1, u2} C _inst_1 _inst_2 X Y)) Z) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z X) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 Z (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 X Y)) (CategoryTheory.MonoidalCategory.associator.{u1, u2} C _inst_1 _inst_2 Z X Y))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.tensor_right_tensor_inv_app CategoryTheory.MonoidalCategory.tensorRightTensor_inv_appβ‚“'. -/
 @[simp]
 theorem tensorRightTensor_inv_app (X Y Z : C) :
     (tensorRightTensor X Y).inv.app Z = (associator Z X Y).Hom := by simp [tensor_right_tensor]
Diff
@@ -267,9 +267,7 @@ instance tensor_isIso {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso
 #print CategoryTheory.MonoidalCategory.inv_tensor /-
 @[simp]
 theorem inv_tensor {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso g] :
-    inv (f βŠ— g) = inv f βŠ— inv g := by
-  ext
-  simp [← tensor_comp]
+    inv (f βŠ— g) = inv f βŠ— inv g := by ext; simp [← tensor_comp]
 #align category_theory.monoidal_category.inv_tensor CategoryTheory.MonoidalCategory.inv_tensor
 -/
 
@@ -300,10 +298,8 @@ theorem dite_tensor {P : Prop} [Decidable P] {W X Y Z : C} (f : W ⟢ X) (g : P
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.comp_tensor_id /-
 @[reassoc, simp]
-theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) :=
-  by
-  rw [← tensor_comp]
-  simp
+theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) := by
+  rw [← tensor_comp]; simp
 #align category_theory.monoidal_category.comp_tensor_id CategoryTheory.MonoidalCategory.comp_tensor_id
 -/
 
@@ -312,10 +308,8 @@ theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ—
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.id_tensor_comp /-
 @[reassoc, simp]
-theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) :=
-  by
-  rw [← tensor_comp]
-  simp
+theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) := by
+  rw [← tensor_comp]; simp
 #align category_theory.monoidal_category.id_tensor_comp CategoryTheory.MonoidalCategory.id_tensor_comp
 -/
 
@@ -324,10 +318,8 @@ theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id /-
 @[simp, reassoc]
-theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f :=
-  by
-  rw [← tensor_comp]
-  simp
+theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f := by
+  rw [← tensor_comp]; simp
 #align category_theory.monoidal_category.id_tensor_comp_tensor_id CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
 -/
 
@@ -336,10 +328,8 @@ theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor /-
 @[simp, reassoc]
-theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f :=
-  by
-  rw [← tensor_comp]
-  simp
+theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f := by
+  rw [← tensor_comp]; simp
 #align category_theory.monoidal_category.tensor_id_comp_id_tensor CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor
 -/
 
@@ -465,10 +455,8 @@ end
 #print CategoryTheory.MonoidalCategory.associator_inv_naturality /-
 @[reassoc]
 theorem associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
-    (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) :=
-  by
-  rw [comp_inv_eq, assoc, associator_naturality]
-  simp
+    (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) := by
+  rw [comp_inv_eq, assoc, associator_naturality]; simp
 #align category_theory.monoidal_category.associator_inv_naturality CategoryTheory.MonoidalCategory.associator_inv_naturality
 -/
 
@@ -733,13 +721,8 @@ def tensorUnitRight : C β₯€ C where
 /-- The associator as a natural isomorphism. -/
 @[simps]
 def associatorNatIso : leftAssocTensor C β‰… rightAssocTensor C :=
-  NatIso.ofComponents
-    (by
-      intros
-      apply monoidal_category.associator)
-    (by
-      intros
-      apply monoidal_category.associator_naturality)
+  NatIso.ofComponents (by intros ; apply monoidal_category.associator)
+    (by intros ; apply monoidal_category.associator_naturality)
 #align category_theory.monoidal_category.associator_nat_iso CategoryTheory.MonoidalCategory.associatorNatIso
 -/
 
@@ -747,13 +730,8 @@ def associatorNatIso : leftAssocTensor C β‰… rightAssocTensor C :=
 /-- The left unitor as a natural isomorphism. -/
 @[simps]
 def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
-  NatIso.ofComponents
-    (by
-      intros
-      apply monoidal_category.left_unitor)
-    (by
-      intros
-      apply monoidal_category.left_unitor_naturality)
+  NatIso.ofComponents (by intros ; apply monoidal_category.left_unitor)
+    (by intros ; apply monoidal_category.left_unitor_naturality)
 #align category_theory.monoidal_category.left_unitor_nat_iso CategoryTheory.MonoidalCategory.leftUnitorNatIso
 -/
 
@@ -761,13 +739,8 @@ def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
 /-- The right unitor as a natural isomorphism. -/
 @[simps]
 def rightUnitorNatIso : tensorUnitRight C β‰… 𝟭 C :=
-  NatIso.ofComponents
-    (by
-      intros
-      apply monoidal_category.right_unitor)
-    (by
-      intros
-      apply monoidal_category.right_unitor_naturality)
+  NatIso.ofComponents (by intros ; apply monoidal_category.right_unitor)
+    (by intros ; apply monoidal_category.right_unitor_naturality)
 #align category_theory.monoidal_category.right_unitor_nat_iso CategoryTheory.MonoidalCategory.rightUnitorNatIso
 -/
 
@@ -792,10 +765,7 @@ def tensorLeft (X : C) : C β₯€ C where
 tensoring on the left with `Y`, and then again with `X`.
 -/
 def tensorLeftTensor (X Y : C) : tensorLeft (X βŠ— Y) β‰… tensorLeft Y β‹™ tensorLeft X :=
-  NatIso.ofComponents (associator _ _) fun Z Z' f =>
-    by
-    dsimp
-    rw [← tensor_id]
+  NatIso.ofComponents (associator _ _) fun Z Z' f => by dsimp; rw [← tensor_id];
     apply associator_naturality
 #align category_theory.monoidal_category.tensor_left_tensor CategoryTheory.MonoidalCategory.tensorLeftTensor
 -/
@@ -882,10 +852,7 @@ variable {C}
 tensoring on the right with `X`, and then again with `Y`.
 -/
 def tensorRightTensor (X Y : C) : tensorRight (X βŠ— Y) β‰… tensorRight X β‹™ tensorRight Y :=
-  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun Z Z' f =>
-    by
-    dsimp
-    rw [← tensor_id]
+  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun Z Z' f => by dsimp; rw [← tensor_id];
     apply associator_inv_naturality
 #align category_theory.monoidal_category.tensor_right_tensor CategoryTheory.MonoidalCategory.tensorRightTensor
 -/
@@ -948,10 +915,7 @@ instance prodMonoidal : MonoidalCategory (C₁ Γ— Cβ‚‚)
 #print CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_fst /-
 @[simp]
 theorem prodMonoidal_leftUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).Hom : πŸ™_ _ βŠ— X ⟢ X).1 = (Ξ»_ X.1).Hom :=
-  by
-  cases X
-  rfl
+    ((Ξ»_ X).Hom : πŸ™_ _ βŠ— X ⟢ X).1 = (Ξ»_ X.1).Hom := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_hom_fst CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_fst
 -/
 
@@ -959,10 +923,7 @@ theorem prodMonoidal_leftUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_snd /-
 @[simp]
 theorem prodMonoidal_leftUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).Hom : πŸ™_ _ βŠ— X ⟢ X).2 = (Ξ»_ X.2).Hom :=
-  by
-  cases X
-  rfl
+    ((Ξ»_ X).Hom : πŸ™_ _ βŠ— X ⟢ X).2 = (Ξ»_ X.2).Hom := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_hom_snd CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_snd
 -/
 
@@ -970,10 +931,7 @@ theorem prodMonoidal_leftUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_fst /-
 @[simp]
 theorem prodMonoidal_leftUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).1 = (Ξ»_ X.1).inv :=
-  by
-  cases X
-  rfl
+    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).1 = (Ξ»_ X.1).inv := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_inv_fst CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_fst
 -/
 
@@ -981,10 +939,7 @@ theorem prodMonoidal_leftUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_snd /-
 @[simp]
 theorem prodMonoidal_leftUnitor_inv_snd (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).2 = (Ξ»_ X.2).inv :=
-  by
-  cases X
-  rfl
+    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).2 = (Ξ»_ X.2).inv := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_inv_snd CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_snd
 -/
 
@@ -992,10 +947,7 @@ theorem prodMonoidal_leftUnitor_inv_snd (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_fst /-
 @[simp]
 theorem prodMonoidal_rightUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).Hom : X βŠ— πŸ™_ _ ⟢ X).1 = (ρ_ X.1).Hom :=
-  by
-  cases X
-  rfl
+    ((ρ_ X).Hom : X βŠ— πŸ™_ _ ⟢ X).1 = (ρ_ X.1).Hom := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_hom_fst CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_fst
 -/
 
@@ -1003,10 +955,7 @@ theorem prodMonoidal_rightUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_snd /-
 @[simp]
 theorem prodMonoidal_rightUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).Hom : X βŠ— πŸ™_ _ ⟢ X).2 = (ρ_ X.2).Hom :=
-  by
-  cases X
-  rfl
+    ((ρ_ X).Hom : X βŠ— πŸ™_ _ ⟢ X).2 = (ρ_ X.2).Hom := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_hom_snd CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_snd
 -/
 
@@ -1014,10 +963,7 @@ theorem prodMonoidal_rightUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_fst /-
 @[simp]
 theorem prodMonoidal_rightUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).1 = (ρ_ X.1).inv :=
-  by
-  cases X
-  rfl
+    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).1 = (ρ_ X.1).inv := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_inv_fst CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_fst
 -/
 
@@ -1025,10 +971,7 @@ theorem prodMonoidal_rightUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
 #print CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_snd /-
 @[simp]
 theorem prodMonoidal_rightUnitor_inv_snd (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).2 = (ρ_ X.2).inv :=
-  by
-  cases X
-  rfl
+    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).2 = (ρ_ X.2).inv := by cases X; rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_inv_snd CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_snd
 -/
 
Diff
@@ -662,10 +662,7 @@ theorem leftAssocTensor_obj (X) : (leftAssocTensor C).obj X = (X.1 βŠ— X.2.1) 
 #align category_theory.monoidal_category.left_assoc_tensor_obj CategoryTheory.MonoidalCategory.leftAssocTensor_obj
 
 /- warning: category_theory.monoidal_category.left_assoc_tensor_map -> CategoryTheory.MonoidalCategory.leftAssocTensor_map is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] {X : Prod.{u2, u2} C (Prod.{u2, u2} C C)} {Y : Prod.{u2, u2} C (Prod.{u2, u2} C C)} (f : Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2) X Y f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f)))
-but is expected to have type
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] {X : Prod.{u2, u2} C (Prod.{u2, u2} C C)} {Y : Prod.{u2, u2} C (Prod.{u2, u2} C C)} (f : Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2)) X) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2)) Y)) (Prefunctor.map.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.leftAssocTensor.{u1, u2} C _inst_1 _inst_2)) X Y f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.left_assoc_tensor_map CategoryTheory.MonoidalCategory.leftAssocTensor_mapβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -701,10 +698,7 @@ theorem rightAssocTensor_obj (X) : (rightAssocTensor C).obj X = X.1 βŠ— X.2.1 
 #align category_theory.monoidal_category.right_assoc_tensor_obj CategoryTheory.MonoidalCategory.rightAssocTensor_obj
 
 /- warning: category_theory.monoidal_category.right_assoc_tensor_map -> CategoryTheory.MonoidalCategory.rightAssocTensor_map is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] {X : Prod.{u2, u2} C (Prod.{u2, u2} C C)} {Y : Prod.{u2, u2} C (Prod.{u2, u2} C C)} (f : Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2) X Y f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f)) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f))))
-but is expected to have type
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u1, u2} C _inst_1] {X : Prod.{u2, u2} C (Prod.{u2, u2} C C)} {Y : Prod.{u2, u2} C (Prod.{u2, u2} C C)} (f : Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2)) X) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2)) Y)) (Prefunctor.map.{succ u1, succ u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (Prod.{u2, u2} C (Prod.{u2, u2} C C)) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1)) C _inst_1 (CategoryTheory.MonoidalCategory.rightAssocTensor.{u1, u2} C _inst_1 _inst_2)) X Y f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X))) (CategoryTheory.MonoidalCategory.tensorObj.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f) (CategoryTheory.MonoidalCategory.tensorHom.{u1, u2} C _inst_1 _inst_2 (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Prod.fst.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f)) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.fst.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X)) (Prod.snd.{u2, u2} C C (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y))) (Prod.snd.{u1, u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.fst.{u2, u2} C (Prod.{u2, u2} C C) Y)) (Quiver.Hom.{succ u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Prod.{u2, u2} C C) (CategoryTheory.uniformProd.{u1, u2} C _inst_1 C _inst_1))) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) X) (Prod.snd.{u2, u2} C (Prod.{u2, u2} C C) Y)) f))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_category.right_assoc_tensor_map CategoryTheory.MonoidalCategory.rightAssocTensor_mapβ‚“'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
Diff
@@ -184,30 +184,30 @@ attribute [simp] monoidal_category.tensor_id
 
 restate_axiom monoidal_category.tensor_comp'
 
-attribute [reassoc.1] monoidal_category.tensor_comp
+attribute [reassoc] monoidal_category.tensor_comp
 
 -- This would be redundant in the simp set.
 attribute [simp] monoidal_category.tensor_comp
 
 restate_axiom monoidal_category.associator_naturality'
 
-attribute [reassoc.1] monoidal_category.associator_naturality
+attribute [reassoc] monoidal_category.associator_naturality
 
 restate_axiom monoidal_category.left_unitor_naturality'
 
-attribute [reassoc.1] monoidal_category.left_unitor_naturality
+attribute [reassoc] monoidal_category.left_unitor_naturality
 
 restate_axiom monoidal_category.right_unitor_naturality'
 
-attribute [reassoc.1] monoidal_category.right_unitor_naturality
+attribute [reassoc] monoidal_category.right_unitor_naturality
 
 restate_axiom monoidal_category.pentagon'
 
 restate_axiom monoidal_category.triangle'
 
-attribute [reassoc.1] monoidal_category.pentagon
+attribute [reassoc] monoidal_category.pentagon
 
-attribute [simp, reassoc.1] monoidal_category.triangle
+attribute [simp, reassoc] monoidal_category.triangle
 
 open MonoidalCategory
 
@@ -299,7 +299,7 @@ theorem dite_tensor {P : Prop} [Decidable P] {W X Y Z : C} (f : W ⟢ X) (g : P
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.comp_tensor_id /-
-@[reassoc.1, simp]
+@[reassoc, simp]
 theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) :=
   by
   rw [← tensor_comp]
@@ -311,7 +311,7 @@ theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ—
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.id_tensor_comp /-
-@[reassoc.1, simp]
+@[reassoc, simp]
 theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) :=
   by
   rw [← tensor_comp]
@@ -323,7 +323,7 @@ theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f :=
   by
   rw [← tensor_comp]
@@ -335,7 +335,7 @@ theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f :=
   by
   rw [← tensor_comp]
@@ -362,7 +362,7 @@ theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f =
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality /-
-@[reassoc.1]
+@[reassoc]
 theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
     f ≫ (Ξ»_ X').inv = (Ξ»_ X).inv ≫ (πŸ™ _ βŠ— f) := by simp
 #align category_theory.monoidal_category.left_unitor_inv_naturality CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
@@ -370,7 +370,7 @@ theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality /-
-@[reassoc.1]
+@[reassoc]
 theorem rightUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
     f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f βŠ— πŸ™ _) := by simp
 #align category_theory.monoidal_category.right_unitor_inv_naturality CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality
@@ -402,7 +402,7 @@ section
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.pentagon_inv /-
-@[reassoc.1]
+@[reassoc]
 theorem pentagon_inv (W X Y Z : C) :
     (πŸ™ W βŠ— (Ξ±_ X Y Z).inv) ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ ((Ξ±_ W X Y).inv βŠ— πŸ™ Z) =
       (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv :=
@@ -413,7 +413,7 @@ theorem pentagon_inv (W X Y Z : C) :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.rightUnitor_tensor /-
-@[reassoc.1, simp]
+@[reassoc, simp]
 theorem rightUnitor_tensor (X Y : C) :
     (ρ_ (X βŠ— Y)).Hom = (Ξ±_ X Y (πŸ™_ C)).Hom ≫ (πŸ™ X βŠ— (ρ_ Y).Hom) := by
   rw [← tensor_right_iff, comp_tensor_id, ← cancel_mono (Ξ±_ X Y (πŸ™_ C)).Hom, assoc,
@@ -425,7 +425,7 @@ theorem rightUnitor_tensor (X Y : C) :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv /-
-@[reassoc.1, simp]
+@[reassoc, simp]
 theorem rightUnitor_tensor_inv (X Y : C) :
     (ρ_ (X βŠ— Y)).inv = (πŸ™ X βŠ— (ρ_ Y).inv) ≫ (Ξ±_ X Y (πŸ™_ C)).inv :=
   eq_of_inv_eq_inv (by simp)
@@ -435,7 +435,7 @@ theorem rightUnitor_tensor_inv (X Y : C) :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.triangle_assoc_comp_right /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem triangle_assoc_comp_right (X Y : C) :
     (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).Hom βŠ— πŸ™ Y) = πŸ™ X βŠ— (Ξ»_ Y).Hom := by
   rw [← triangle, iso.inv_hom_id_assoc]
@@ -446,7 +446,7 @@ theorem triangle_assoc_comp_right (X Y : C) :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.triangle_assoc_comp_left_inv /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem triangle_assoc_comp_left_inv (X Y : C) :
     (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y :=
   by
@@ -463,7 +463,7 @@ end
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.associator_inv_naturality /-
-@[reassoc.1]
+@[reassoc]
 theorem associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
     (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) :=
   by
@@ -477,7 +477,7 @@ theorem associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟢ X') (g : Y ⟢
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.associator_conjugation /-
-@[reassoc.1, simp]
+@[reassoc, simp]
 theorem associator_conjugation {X X' Y Y' Z Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
     (f βŠ— g) βŠ— h = (Ξ±_ X Y Z).Hom ≫ (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv := by
   rw [associator_inv_naturality, hom_inv_id_assoc]
@@ -489,7 +489,7 @@ theorem associator_conjugation {X X' Y Y' Z Z' : C} (f : X ⟢ X') (g : Y ⟢ Y'
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.associator_inv_conjugation /-
-@[reassoc.1]
+@[reassoc]
 theorem associator_inv_conjugation {X X' Y Y' Z Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
     f βŠ— g βŠ— h = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) ≫ (Ξ±_ X' Y' Z').Hom := by
   rw [associator_naturality, inv_hom_id_assoc]
@@ -503,7 +503,7 @@ theorem associator_inv_conjugation {X X' Y Y' Z Z' : C} (f : X ⟢ X') (g : Y 
 #print CategoryTheory.MonoidalCategory.id_tensor_associator_naturality /-
 -- TODO these next two lemmas aren't so fundamental, and perhaps could be removed
 -- (replacing their usages by their proofs).
-@[reassoc.1]
+@[reassoc]
 theorem id_tensor_associator_naturality {X Y Z Z' : C} (h : Z ⟢ Z') :
     (πŸ™ (X βŠ— Y) βŠ— h) ≫ (Ξ±_ X Y Z').Hom = (Ξ±_ X Y Z).Hom ≫ (πŸ™ X βŠ— πŸ™ Y βŠ— h) := by
   rw [← tensor_id, associator_naturality]
@@ -515,7 +515,7 @@ theorem id_tensor_associator_naturality {X Y Z Z' : C} (h : Z ⟢ Z') :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.id_tensor_associator_inv_naturality /-
-@[reassoc.1]
+@[reassoc]
 theorem id_tensor_associator_inv_naturality {X Y Z X' : C} (f : X ⟢ X') :
     (f βŠ— πŸ™ (Y βŠ— Z)) ≫ (Ξ±_ X' Y Z).inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— πŸ™ Y) βŠ— πŸ™ Z) := by
   rw [← tensor_id, associator_inv_naturality]
@@ -527,7 +527,7 @@ theorem id_tensor_associator_inv_naturality {X Y Z X' : C} (f : X ⟢ X') :
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.hom_inv_id_tensor /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem hom_inv_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f.Hom βŠ— g) ≫ (f.inv βŠ— h) = (πŸ™ V βŠ— g) ≫ (πŸ™ V βŠ— h) := by
   rw [← tensor_comp, f.hom_inv_id, id_tensor_comp]
@@ -539,7 +539,7 @@ theorem hom_inv_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.inv_hom_id_tensor /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem inv_hom_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f.inv βŠ— g) ≫ (f.Hom βŠ— h) = (πŸ™ W βŠ— g) ≫ (πŸ™ W βŠ— h) := by
   rw [← tensor_comp, f.inv_hom_id, id_tensor_comp]
@@ -551,7 +551,7 @@ theorem inv_hom_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensorHom_inv_id /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem tensorHom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.Hom) ≫ (h βŠ— f.inv) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, f.hom_inv_id, comp_tensor_id]
@@ -563,7 +563,7 @@ theorem tensorHom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensor_inv_hom_id /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem tensor_inv_hom_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.inv) ≫ (h βŠ— f.Hom) = (g βŠ— πŸ™ W) ≫ (h βŠ— πŸ™ W) := by
   rw [← tensor_comp, f.inv_hom_id, comp_tensor_id]
@@ -575,7 +575,7 @@ theorem tensor_inv_hom_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.hom_inv_id_tensor' /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem hom_inv_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f βŠ— g) ≫ (inv f βŠ— h) = (πŸ™ V βŠ— g) ≫ (πŸ™ V βŠ— h) := by
   rw [← tensor_comp, is_iso.hom_inv_id, id_tensor_comp]
@@ -587,7 +587,7 @@ theorem hom_inv_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.inv_hom_id_tensor' /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem inv_hom_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (inv f βŠ— g) ≫ (f βŠ— h) = (πŸ™ W βŠ— g) ≫ (πŸ™ W βŠ— h) := by
   rw [← tensor_comp, is_iso.inv_hom_id, id_tensor_comp]
@@ -599,7 +599,7 @@ theorem inv_hom_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensorHom_inv_id' /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem tensorHom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f) ≫ (h βŠ— inv f) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, is_iso.hom_inv_id, comp_tensor_id]
@@ -611,7 +611,7 @@ theorem tensorHom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 #print CategoryTheory.MonoidalCategory.tensor_inv_hom_id' /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem tensor_inv_hom_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— inv f) ≫ (h βŠ— f) = (g βŠ— πŸ™ W) ≫ (h βŠ— πŸ™ W) := by
   rw [← tensor_comp, is_iso.inv_hom_id, comp_tensor_id]
Diff
@@ -67,22 +67,22 @@ open CategoryTheory.Iso
 namespace CategoryTheory
 
 #print CategoryTheory.MonoidalCategory /-
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`tensorUnit] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprΞ±_ -/
@@ -91,14 +91,14 @@ namespace CategoryTheory
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprΞ»_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `tensor_obj -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
-/- ./././Mathport/Syntax/Translate/Command.lean:401:24: unsupported: (notation) in structure -/
+/- ./././Mathport/Syntax/Translate/Command.lean:406:24: unsupported: (notation) in structure -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«expr βŠ—' Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `Β«exprπŸ™_Β» -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:207:4: warning: unsupported notation `exprρ_ -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta, Jakob von Raumer
 
 ! This file was ported from Lean 3 source module category_theory.monoidal.category
-! leanprover-community/mathlib commit 3d7987cda72abc473c7cdbbb075170e9ac620042
+! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.CategoryTheory.Products.Basic
 /-!
 # Monoidal categories
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A monoidal category is a category equipped with a tensor product, unitors, and an associator.
 In the definition, we provide the tensor product as a pair of functions
 * `tensor_obj : C β†’ C β†’ C`

Changes in mathlib4

mathlib3
mathlib4
chore(CategoryTheory): move Full, Faithful, EssSurj, IsEquivalence and ReflectsIsomorphisms to the Functor namespace (#11985)

These notions on functors are now Functor.Full, Functor.Faithful, Functor.EssSurj, Functor.IsEquivalence, Functor.ReflectsIsomorphisms. Deprecated aliases are introduced for the previous names.

Diff
@@ -947,7 +947,7 @@ def tensoringLeft : C β₯€ C β₯€ C where
   map {X} {Y} f := { app := fun Z => f β–· Z }
 #align category_theory.monoidal_category.tensoring_left CategoryTheory.MonoidalCategory.tensoringLeft
 
-instance : Faithful (tensoringLeft C) where
+instance : (tensoringLeft C).Faithful where
   map_injective {X} {Y} f g h := by
     injections h
     replace h := congr_fun h (πŸ™_ C)
@@ -963,7 +963,7 @@ def tensoringRight : C β₯€ C β₯€ C where
   map {X} {Y} f := { app := fun Z => Z ◁ f }
 #align category_theory.monoidal_category.tensoring_right CategoryTheory.MonoidalCategory.tensoringRight
 
-instance : Faithful (tensoringRight C) where
+instance : (tensoringRight C).Faithful where
   map_injective {X} {Y} f g h := by
     injections h
     replace h := congr_fun h (πŸ™_ C)
fix: add missing withOverApps (#12022)

This fixes the delaborators for sums, products, infimums, and supremums of pi types and matrices.

Also adds a missing whenPPOption getPPNotation to Prefunctor.obj.

Zulip thread.

Diff
@@ -125,7 +125,7 @@ scoped notation "πŸ™_ " C:max => (MonoidalCategoryStruct.tensorUnit : C)
 open Lean PrettyPrinter.Delaborator SubExpr in
 /-- Used to ensure that `πŸ™_` notation is used, as the ascription makes this not automatic. -/
 @[delab app.CategoryTheory.MonoidalCategoryStruct.tensorUnit]
-def delabTensorUnit : Delab := whenPPOption getPPNotation do
+def delabTensorUnit : Delab := whenPPOption getPPNotation <| withOverApp 3 do
   let e ← getExpr
   guard <| e.isAppOfArity ``MonoidalCategoryStruct.tensorUnit 3
   let C ← withNaryArg 0 delab
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -999,7 +999,6 @@ section
 universe v₁ vβ‚‚ u₁ uβ‚‚
 
 variable (C₁ : Type u₁) [Category.{v₁} C₁] [MonoidalCategory.{v₁} C₁]
-
 variable (Cβ‚‚ : Type uβ‚‚) [Category.{vβ‚‚} Cβ‚‚] [MonoidalCategory.{vβ‚‚} Cβ‚‚]
 
 attribute [local simp] associator_naturality leftUnitor_naturality rightUnitor_naturality pentagon
chore: remove tactics (#11365)

More tactics that are not used, found using the linter at #11308.

The PR consists of tactic removals, whitespace changes and replacing a porting note by an explanation.

Diff
@@ -233,18 +233,17 @@ theorem tensorHom_id {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) :
 @[reassoc, simp]
 theorem whiskerLeft_comp (W : C) {X Y Z : C} (f : X ⟢ Y) (g : Y ⟢ Z) :
     W ◁ (f ≫ g) = W ◁ f ≫ W ◁ g := by
-  intros; simp only [← id_tensorHom, ← tensor_comp, comp_id]
+  simp only [← id_tensorHom, ← tensor_comp, comp_id]
 
 @[reassoc, simp]
 theorem id_whiskerLeft {X Y : C} (f : X ⟢ Y) :
     πŸ™_ C ◁ f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
-  intros; rw [← assoc, ← leftUnitor_naturality]; simp [id_tensorHom]
+  rw [← assoc, ← leftUnitor_naturality]; simp [id_tensorHom]
 #align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.id_whiskerLeft
 
 @[reassoc, simp]
 theorem tensor_whiskerLeft (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
     (X βŠ— Y) ◁ f = (Ξ±_ X Y Z).hom ≫ X ◁ Y ◁ f ≫ (Ξ±_ X Y Z').inv := by
-  intros
   simp only [← id_tensorHom, ← tensorHom_id]
   rw [← assoc, ← associator_naturality]
   simp
@@ -252,18 +251,17 @@ theorem tensor_whiskerLeft (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
 @[reassoc, simp]
 theorem comp_whiskerRight {W X Y : C} (f : W ⟢ X) (g : X ⟢ Y) (Z : C) :
     (f ≫ g) β–· Z = f β–· Z ≫ g β–· Z := by
-  intros; simp only [← tensorHom_id, ← tensor_comp, id_comp]
+  simp only [← tensorHom_id, ← tensor_comp, id_comp]
 
 @[reassoc, simp]
 theorem whiskerRight_id {X Y : C} (f : X ⟢ Y) :
     f β–· πŸ™_ C = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
-   intros; rw [← assoc, ← rightUnitor_naturality]; simp [tensorHom_id]
+  rw [← assoc, ← rightUnitor_naturality]; simp [tensorHom_id]
 #align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.whiskerRight_id
 
 @[reassoc, simp]
 theorem whiskerRight_tensor {X X' : C} (f : X ⟢ X') (Y Z : C) :
     f β–· (Y βŠ— Z) = (Ξ±_ X Y Z).inv ≫ f β–· Y β–· Z ≫ (Ξ±_ X' Y Z).hom := by
-  intros
   simp only [← id_tensorHom, ← tensorHom_id]
   rw [associator_naturality]
   simp [tensor_id]
@@ -271,7 +269,6 @@ theorem whiskerRight_tensor {X X' : C} (f : X ⟢ X') (Y Z : C) :
 @[reassoc, simp]
 theorem whisker_assoc (X : C) {Y Y' : C} (f : Y ⟢ Y') (Z : C) :
     (X ◁ f) β–· Z = (Ξ±_ X Y Z).hom ≫ X ◁ f β–· Z ≫ (Ξ±_ X Y' Z).inv := by
-  intros
   simp only [← id_tensorHom, ← tensorHom_id]
   rw [← assoc, ← associator_naturality]
   simp
feat(CategoryTheory/Monoidal): replace πŸ™ X βŠ— f with X ◁ f (#10912)

We set id_tensorHom and tensorHom_id as simp lemmas. Partially extracted from #6307.

Diff
@@ -181,34 +181,33 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] extends MonoidalCate
   Naturality of the left unitor, commutativity of `πŸ™_ C βŠ— X ⟢ πŸ™_ C βŠ— Y ⟢ Y` and `πŸ™_ C βŠ— X ⟢ X ⟢ Y`
   -/
   leftUnitor_naturality :
-    βˆ€ {X Y : C} (f : X ⟢ Y), (πŸ™ (πŸ™_ _) βŠ— f) ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f := by
+    βˆ€ {X Y : C} (f : X ⟢ Y), πŸ™_ _ ◁ f ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f := by
     aesop_cat
   /--
   Naturality of the right unitor: commutativity of `X βŠ— πŸ™_ C ⟢ Y βŠ— πŸ™_ C ⟢ Y` and `X βŠ— πŸ™_ C ⟢ X ⟢ Y`
   -/
   rightUnitor_naturality :
-    βˆ€ {X Y : C} (f : X ⟢ Y), (f βŠ— πŸ™ (πŸ™_ _)) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
+    βˆ€ {X Y : C} (f : X ⟢ Y), f β–· πŸ™_ _ ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
     aesop_cat
   /--
   The pentagon identity relating the isomorphism between `X βŠ— (Y βŠ— (Z βŠ— W))` and `((X βŠ— Y) βŠ— Z) βŠ— W`
   -/
   pentagon :
     βˆ€ W X Y Z : C,
-      ((Ξ±_ W X Y).hom βŠ— πŸ™ Z) ≫ (Ξ±_ W (X βŠ— Y) Z).hom ≫ (πŸ™ W βŠ— (Ξ±_ X Y Z).hom) =
+      (Ξ±_ W X Y).hom β–· Z ≫ (Ξ±_ W (X βŠ— Y) Z).hom ≫ W ◁ (Ξ±_ X Y Z).hom =
         (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom := by
     aesop_cat
   /--
-  The identity relating the isomorphisms between `X βŠ— (πŸ™_C βŠ— Y)`, `(X βŠ— πŸ™_C) βŠ— Y` and `X βŠ— Y`
+  The identity relating the isomorphisms between `X βŠ— (πŸ™_ C βŠ— Y)`, `(X βŠ— πŸ™_ C) βŠ— Y` and `X βŠ— Y`
   -/
   triangle :
-    βˆ€ X Y : C, (Ξ±_ X (πŸ™_ _) Y).hom ≫ (πŸ™ X βŠ— (Ξ»_ Y).hom) = ((ρ_ X).hom βŠ— πŸ™ Y) := by
+    βˆ€ X Y : C, (Ξ±_ X (πŸ™_ _) Y).hom ≫ X ◁ (Ξ»_ Y).hom = (ρ_ X).hom β–· Y := by
     aesop_cat
 #align category_theory.monoidal_category CategoryTheory.MonoidalCategory
 
 attribute [reassoc] MonoidalCategory.tensorHom_def
 attribute [reassoc, simp] MonoidalCategory.whiskerLeft_id
 attribute [reassoc, simp] MonoidalCategory.id_whiskerRight
-attribute [simp] MonoidalCategory.tensor_id
 attribute [reassoc] MonoidalCategory.tensor_comp
 attribute [simp] MonoidalCategory.tensor_comp
 attribute [reassoc] MonoidalCategory.associator_naturality
@@ -221,12 +220,12 @@ namespace MonoidalCategory
 
 variable {C : Type u} [π’ž : Category.{v} C] [MonoidalCategory C]
 
--- Note: this will be a simp lemma after merging #6307.
+@[simp]
 theorem id_tensorHom (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) :
     πŸ™ X βŠ— f = X ◁ f := by
   simp [tensorHom_def]
 
--- Note: this will be a simp lemma after merging #6307.
+@[simp]
 theorem tensorHom_id {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) :
     f βŠ— πŸ™ Y = f β–· Y := by
   simp [tensorHom_def]
@@ -240,6 +239,7 @@ theorem whiskerLeft_comp (W : C) {X Y Z : C} (f : X ⟢ Y) (g : Y ⟢ Z) :
 theorem id_whiskerLeft {X Y : C} (f : X ⟢ Y) :
     πŸ™_ C ◁ f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
   intros; rw [← assoc, ← leftUnitor_naturality]; simp [id_tensorHom]
+#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.id_whiskerLeft
 
 @[reassoc, simp]
 theorem tensor_whiskerLeft (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
@@ -258,6 +258,7 @@ theorem comp_whiskerRight {W X Y : C} (f : W ⟢ X) (g : X ⟢ Y) (Z : C) :
 theorem whiskerRight_id {X Y : C} (f : X ⟢ Y) :
     f β–· πŸ™_ C = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
    intros; rw [← assoc, ← rightUnitor_naturality]; simp [tensorHom_id]
+#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.whiskerRight_id
 
 @[reassoc, simp]
 theorem whiskerRight_tensor {X X' : C} (f : X ⟢ X') (Y Z : C) :
@@ -492,13 +493,9 @@ theorem tensor_whiskerLeft_symm (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
     X ◁ Y ◁ f = (Ξ±_ X Y Z).inv ≫ (X βŠ— Y) ◁ f ≫ (Ξ±_ X Y Z').hom := by simp
 
 @[reassoc]
-theorem leftUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
-    (πŸ™_ C) ◁ f ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f := by
-  simp
-
-@[reassoc]
-theorem leftUnitor_inv_naturality' {X Y : C} (f : X ⟢ Y) :
+theorem leftUnitor_inv_naturality {X Y : C} (f : X ⟢ Y) :
     f ≫ (Ξ»_ Y).inv = (Ξ»_ X).inv ≫ _ ◁ f := by simp
+#align category_theory.monoidal_category.left_unitor_inv_naturality CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
 
 @[reassoc]
 theorem id_whiskerLeft_symm {X X' : C} (f : X ⟢ X') :
@@ -506,13 +503,9 @@ theorem id_whiskerLeft_symm {X X' : C} (f : X ⟢ X') :
   simp only [id_whiskerLeft, assoc, inv_hom_id, comp_id, inv_hom_id_assoc]
 
 @[reassoc]
-theorem rightUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
-    f β–· (πŸ™_ C) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
-  simp
-
-@[reassoc]
-theorem rightUnitor_inv_naturality' {X X' : C} (f : X ⟢ X') :
+theorem rightUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
     f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ f β–· _ := by simp
+#align category_theory.monoidal_category.right_unitor_inv_naturality CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality
 
 @[reassoc]
 theorem whiskerRight_id_symm {X Y : C} (f : X ⟢ Y) :
@@ -529,16 +522,11 @@ but we prove them directly as they are used in proving the coherence theorem. -/
 section
 
 @[reassoc (attr := simp)]
-theorem pentagon' (W X Y Z : C) :
-    (Ξ±_ W X Y).hom β–· Z ≫ (Ξ±_ W (X βŠ— Y) Z).hom ≫ W ◁ (Ξ±_ X Y Z).hom =
-      (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom := by
-  simp [← id_tensorHom, ← tensorHom_id, pentagon]
-
-@[reassoc (attr := simp)]
-theorem pentagon_inv' :
+theorem pentagon_inv :
     W ◁ (Ξ±_ X Y Z).inv ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ (Ξ±_ W X Y).inv β–· Z =
       (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv :=
   eq_of_inv_eq_inv (by simp)
+#align category_theory.monoidal_category.pentagon_inv CategoryTheory.MonoidalCategory.pentagon_inv
 
 @[reassoc (attr := simp)]
 theorem pentagon_inv_inv_hom_hom_inv :
@@ -591,24 +579,22 @@ theorem pentagon_inv_inv_hom_inv_inv :
   eq_of_inv_eq_inv (by simp)
 
 @[reassoc (attr := simp)]
-theorem triangle' (X Y : C) :
-    (Ξ±_ X (πŸ™_ C) Y).hom ≫ X ◁ (Ξ»_ Y).hom = (ρ_ X).hom β–· Y := by
-  simp [← id_tensorHom, ← tensorHom_id, triangle]
-
-@[reassoc (attr := simp)]
-theorem triangle_assoc_comp_right' (X Y : C) :
+theorem triangle_assoc_comp_right (X Y : C) :
     (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).hom β–· Y) = X ◁ (Ξ»_ Y).hom := by
-  rw [← triangle', Iso.inv_hom_id_assoc]
+  rw [← triangle, Iso.inv_hom_id_assoc]
+#align category_theory.monoidal_category.triangle_assoc_comp_right CategoryTheory.MonoidalCategory.triangle_assoc_comp_right
 
 @[reassoc (attr := simp)]
-theorem triangle_assoc_comp_right_inv' (X Y : C) :
+theorem triangle_assoc_comp_right_inv (X Y : C) :
     (ρ_ X).inv β–· Y ≫ (Ξ±_ X (πŸ™_ C) Y).hom = X ◁ (Ξ»_ Y).inv := by
   simp [← cancel_mono (X ◁ (Ξ»_ Y).hom)]
+#align category_theory.monoidal_category.triangle_assoc_comp_right_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_right_inv
 
 @[reassoc (attr := simp)]
-theorem triangle_assoc_comp_left_inv' (X Y : C) :
+theorem triangle_assoc_comp_left_inv (X Y : C) :
     (X ◁ (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv β–· Y := by
   simp [← cancel_mono ((ρ_ X).hom β–· Y)]
+#align category_theory.monoidal_category.triangle_assoc_comp_left_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_left_inv
 
 /-- We state it as a simp lemma, which is regarded as an involved version of
 `id_whiskerRight X Y : πŸ™ X β–· Y = πŸ™ (X βŠ— Y)`.
@@ -617,8 +603,8 @@ theorem triangle_assoc_comp_left_inv' (X Y : C) :
 theorem leftUnitor_whiskerRight (X Y : C) :
     (Ξ»_ X).hom β–· Y = (Ξ±_ (πŸ™_ C) X Y).hom ≫ (Ξ»_ (X βŠ— Y)).hom := by
   rw [← whiskerLeft_iff, whiskerLeft_comp, ← cancel_epi (Ξ±_ _ _ _).hom, ←
-      cancel_epi ((Ξ±_ _ _ _).hom β–· _), pentagon'_assoc, triangle', ← associator_naturality_middle, ←
-      comp_whiskerRight_assoc, triangle', associator_naturality_left]
+      cancel_epi ((Ξ±_ _ _ _).hom β–· _), pentagon_assoc, triangle, ← associator_naturality_middle, ←
+      comp_whiskerRight_assoc, triangle, associator_naturality_left]
 
 @[reassoc, simp]
 theorem leftUnitor_inv_whiskerRight (X Y : C) :
@@ -629,8 +615,8 @@ theorem leftUnitor_inv_whiskerRight (X Y : C) :
 theorem whiskerLeft_rightUnitor (X Y : C) :
     X ◁ (ρ_ Y).hom = (Ξ±_ X Y (πŸ™_ C)).inv ≫ (ρ_ (X βŠ— Y)).hom := by
   rw [← whiskerRight_iff, comp_whiskerRight, ← cancel_epi (Ξ±_ _ _ _).inv, ←
-      cancel_epi (X ◁ (Ξ±_ _ _ _).inv), pentagon_inv'_assoc, triangle_assoc_comp_right', ←
-      associator_inv_naturality_middle, ← whiskerLeft_comp_assoc, triangle_assoc_comp_right',
+      cancel_epi (X ◁ (Ξ±_ _ _ _).inv), pentagon_inv_assoc, triangle_assoc_comp_right, ←
+      associator_inv_naturality_middle, ← whiskerLeft_comp_assoc, triangle_assoc_comp_right,
       associator_inv_naturality_right]
 
 @[reassoc, simp]
@@ -639,20 +625,22 @@ theorem whiskerLeft_rightUnitor_inv (X Y : C) :
   eq_of_inv_eq_inv (by simp)
 
 @[reassoc]
-theorem leftUnitor_tensor' (X Y : C) :
+theorem leftUnitor_tensor (X Y : C) :
     (Ξ»_ (X βŠ— Y)).hom = (Ξ±_ (πŸ™_ C) X Y).inv ≫ (Ξ»_ X).hom β–· Y := by simp
 
 @[reassoc]
-theorem leftUnitor_tensor_inv' (X Y : C) :
+theorem leftUnitor_tensor_inv (X Y : C) :
     (Ξ»_ (X βŠ— Y)).inv = (Ξ»_ X).inv β–· Y ≫ (Ξ±_ (πŸ™_ C) X Y).hom := by simp
 
 @[reassoc]
-theorem rightUnitor_tensor' (X Y : C) :
+theorem rightUnitor_tensor (X Y : C) :
     (ρ_ (X βŠ— Y)).hom = (Ξ±_ X Y (πŸ™_ C)).hom ≫ X ◁ (ρ_ Y).hom := by simp
+#align category_theory.monoidal_category.right_unitor_tensor CategoryTheory.MonoidalCategory.rightUnitor_tensor
 
 @[reassoc]
-theorem rightUnitor_tensor_inv' (X Y : C) :
+theorem rightUnitor_tensor_inv (X Y : C) :
     (ρ_ (X βŠ— Y)).inv = X ◁ (ρ_ Y).inv ≫ (Ξ±_ X Y (πŸ™_ C)).inv := by simp
+#align category_theory.monoidal_category.right_unitor_tensor_inv CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv
 
 end
 
@@ -782,22 +770,12 @@ abbrev ofTensorHom [MonoidalCategoryStruct C]
   pentagon := by intros; simp [← id_tensorHom, ← tensorHom_id, pentagon]
   triangle := by intros; simp [← id_tensorHom, ← tensorHom_id, triangle]
 
-section
-
-/- The lemmas of this section might be redundant because they should be stated in terms of the
-whiskering operators. We leave them in order not to break proofs that existed before we
-have the whiskering operators. -/
-
-/- TODO: The lemmas in this section are no longer simp lemmas after we set `id_tensorHom`
-and `tensorHom_id` as simp lemmas. -/
-attribute [local simp] id_tensorHom tensorHom_id
-
-@[reassoc, simp]
+@[reassoc]
 theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) := by
   simp
 #align category_theory.monoidal_category.comp_tensor_id CategoryTheory.MonoidalCategory.comp_tensor_id
 
-@[reassoc, simp]
+@[reassoc]
 theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) := by
   simp
 #align category_theory.monoidal_category.id_tensor_comp CategoryTheory.MonoidalCategory.id_tensor_comp
@@ -820,63 +798,6 @@ theorem tensor_left_iff {X Y : C} (f g : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = πŸ™
 theorem tensor_right_iff {X Y : C} (f g : X ⟢ Y) : f βŠ— πŸ™ (πŸ™_ C) = g βŠ— πŸ™ (πŸ™_ C) ↔ f = g := by simp
 #align category_theory.monoidal_category.tensor_right_iff CategoryTheory.MonoidalCategory.tensor_right_iff
 
-@[reassoc]
-theorem pentagon_inv (W X Y Z : C) :
-    (πŸ™ W βŠ— (Ξ±_ X Y Z).inv) ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ ((Ξ±_ W X Y).inv βŠ— πŸ™ Z) =
-      (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv :=
-  CategoryTheory.eq_of_inv_eq_inv (by simp [pentagon])
-#align category_theory.monoidal_category.pentagon_inv CategoryTheory.MonoidalCategory.pentagon_inv
-
-@[reassoc]
-theorem rightUnitor_tensor (X Y : C) :
-    (ρ_ (X βŠ— Y)).hom = (Ξ±_ X Y (πŸ™_ C)).hom ≫ (πŸ™ X βŠ— (ρ_ Y).hom) := by
-  simp
-#align category_theory.monoidal_category.right_unitor_tensor CategoryTheory.MonoidalCategory.rightUnitor_tensor
-
-@[reassoc]
-theorem rightUnitor_tensor_inv (X Y : C) :
-    (ρ_ (X βŠ— Y)).inv = (πŸ™ X βŠ— (ρ_ Y).inv) ≫ (Ξ±_ X Y (πŸ™_ C)).inv :=
-  eq_of_inv_eq_inv (by simp)
-#align category_theory.monoidal_category.right_unitor_tensor_inv CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv
-
-@[reassoc (attr := simp)]
-theorem triangle_assoc_comp_right (X Y : C) :
-    (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).hom βŠ— πŸ™ Y) = πŸ™ X βŠ— (Ξ»_ Y).hom := by
-  simp
-#align category_theory.monoidal_category.triangle_assoc_comp_right CategoryTheory.MonoidalCategory.triangle_assoc_comp_right
-
-@[reassoc (attr := simp)]
-theorem triangle_assoc_comp_left_inv (X Y : C) :
-    (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y := by
-  simp
-#align category_theory.monoidal_category.triangle_assoc_comp_left_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_left_inv
-
-@[reassoc]
-theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
-    f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
-  simp
-#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
-
-@[reassoc]
-theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
-    πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
-  simp
-#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
-
-@[reassoc]
-theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
-    f ≫ (Ξ»_ X').inv = (Ξ»_ X).inv ≫ (πŸ™ _ βŠ— f) := by
-  simp
-#align category_theory.monoidal_category.left_unitor_inv_naturality CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
-
-@[reassoc]
-theorem rightUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
-    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f βŠ— πŸ™ _) := by
-  simp
-#align category_theory.monoidal_category.right_unitor_inv_naturality CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality
-
-end
-
 end
 
 section
@@ -961,7 +882,7 @@ def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
       apply MonoidalCategory.leftUnitor)
     (by
       intros
-      apply MonoidalCategory.leftUnitor_naturality')
+      apply MonoidalCategory.leftUnitor_naturality)
 #align category_theory.monoidal_category.left_unitor_nat_iso CategoryTheory.MonoidalCategory.leftUnitorNatIso
 
 -- Porting Note: same as above
@@ -974,12 +895,12 @@ def rightUnitorNatIso : tensorUnitRight C β‰… 𝟭 C :=
       apply MonoidalCategory.rightUnitor)
     (by
       intros
-      apply MonoidalCategory.rightUnitor_naturality')
+      apply MonoidalCategory.rightUnitor_naturality)
 #align category_theory.monoidal_category.right_unitor_nat_iso CategoryTheory.MonoidalCategory.rightUnitorNatIso
 
 section
 
-attribute [local simp] id_tensorHom tensorHom_id whisker_exchange
+attribute [local simp] whisker_exchange
 
 -- Porting Note: This used to be `variable {C}` but it seems like Lean 4 parses that differently
 variable {C : Type u} [Category.{v} C] [MonoidalCategory.{v} C]
feat(CategoryTheory/Monoidal): redefine tensorLeft by using whiskering (#10898)

Extracted from #6307

Diff
@@ -927,13 +927,13 @@ theorem rightAssocTensor_map {X Y} (f : X ⟢ Y) : (rightAssocTensor C).map f =
 /-- The functor `fun X ↦ πŸ™_ C βŠ— X`. -/
 def tensorUnitLeft : C β₯€ C where
   obj X := πŸ™_ C βŠ— X
-  map {X Y : C} (f : X ⟢ Y) := πŸ™ (πŸ™_ C) βŠ— f
+  map {X Y : C} (f : X ⟢ Y) := πŸ™_ C ◁ f
 #align category_theory.monoidal_category.tensor_unit_left CategoryTheory.MonoidalCategory.tensorUnitLeft
 
 /-- The functor `fun X ↦ X βŠ— πŸ™_ C`. -/
 def tensorUnitRight : C β₯€ C where
   obj X := X βŠ— πŸ™_ C
-  map {X Y : C} (f : X ⟢ Y) := f βŠ— πŸ™ (πŸ™_ C)
+  map {X Y : C} (f : X ⟢ Y) := f β–· πŸ™_ C
 #align category_theory.monoidal_category.tensor_unit_right CategoryTheory.MonoidalCategory.tensorUnitRight
 
 -- We can express the associator and the unitors, given componentwise above,
@@ -961,7 +961,7 @@ def leftUnitorNatIso : tensorUnitLeft C β‰… 𝟭 C :=
       apply MonoidalCategory.leftUnitor)
     (by
       intros
-      apply MonoidalCategory.leftUnitor_naturality)
+      apply MonoidalCategory.leftUnitor_naturality')
 #align category_theory.monoidal_category.left_unitor_nat_iso CategoryTheory.MonoidalCategory.leftUnitorNatIso
 
 -- Porting Note: same as above
@@ -974,7 +974,7 @@ def rightUnitorNatIso : tensorUnitRight C β‰… 𝟭 C :=
       apply MonoidalCategory.rightUnitor)
     (by
       intros
-      apply MonoidalCategory.rightUnitor_naturality)
+      apply MonoidalCategory.rightUnitor_naturality')
 #align category_theory.monoidal_category.right_unitor_nat_iso CategoryTheory.MonoidalCategory.rightUnitorNatIso
 
 section
@@ -988,7 +988,7 @@ variable {C : Type u} [Category.{v} C] [MonoidalCategory.{v} C]
 @[simps]
 def tensorLeft (X : C) : C β₯€ C where
   obj Y := X βŠ— Y
-  map {Y} {Y'} f := πŸ™ X βŠ— f
+  map {Y} {Y'} f := X ◁ f
 #align category_theory.monoidal_category.tensor_left CategoryTheory.MonoidalCategory.tensorLeft
 
 /-- Tensoring on the left with `X βŠ— Y` is naturally isomorphic to
@@ -1013,7 +1013,7 @@ theorem tensorLeftTensor_inv_app (X Y Z : C) :
 @[simps]
 def tensorRight (X : C) : C β₯€ C where
   obj Y := Y βŠ— X
-  map {Y} {Y'} f := f βŠ— πŸ™ X
+  map {Y} {Y'} f := f β–· X
 #align category_theory.monoidal_category.tensor_right CategoryTheory.MonoidalCategory.tensorRight
 
 -- Porting Note: This used to be `variable (C)` but it seems like Lean 4 parses that differently
@@ -1026,7 +1026,7 @@ TODO: show this is an op-monoidal functor.
 @[simps]
 def tensoringLeft : C β₯€ C β₯€ C where
   obj := tensorLeft
-  map {X} {Y} f := { app := fun Z => f βŠ— πŸ™ Z }
+  map {X} {Y} f := { app := fun Z => f β–· Z }
 #align category_theory.monoidal_category.tensoring_left CategoryTheory.MonoidalCategory.tensoringLeft
 
 instance : Faithful (tensoringLeft C) where
@@ -1042,7 +1042,7 @@ We later show this is a monoidal functor.
 @[simps]
 def tensoringRight : C β₯€ C β₯€ C where
   obj := tensorRight
-  map {X} {Y} f := { app := fun Z => πŸ™ Z βŠ— f }
+  map {X} {Y} f := { app := fun Z => Z ◁ f }
 #align category_theory.monoidal_category.tensoring_right CategoryTheory.MonoidalCategory.tensoringRight
 
 instance : Faithful (tensoringRight C) where
Feat: Add Yang-Baxter equation and the opposite braided monoidal category (#10415)

This PR adds some basics about monoidal opposite categories and their relation to the original category, as well as the Yang-Baxter equation for braided monoidal categories. It should be easy to define an action of the braid group on an object of a braided monoidal category from this.

Diff
@@ -348,6 +348,20 @@ theorem inv_whiskerLeft (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
     inv (X ◁ f) = X ◁ inv f := by
   aesop_cat
 
+@[simp]
+lemma whiskerLeftIso_refl (W X : C) :
+    whiskerLeftIso W (Iso.refl X) = Iso.refl (W βŠ— X) :=
+  Iso.ext (whiskerLeft_id W X)
+
+@[simp]
+lemma whiskerLeftIso_trans (W : C) {X Y Z : C} (f : X β‰… Y) (g : Y β‰… Z) :
+    whiskerLeftIso W (f β‰ͺ≫ g) = whiskerLeftIso W f β‰ͺ≫ whiskerLeftIso W g :=
+  Iso.ext (whiskerLeft_comp W f.hom g.hom)
+
+@[simp]
+lemma whiskerLeftIso_symm (W : C) {X Y : C} (f : X β‰… Y) :
+    (whiskerLeftIso W f).symm = whiskerLeftIso W f.symm := rfl
+
 /-- The right whiskering of an isomorphism is an isomorphism. -/
 @[simps!]
 def whiskerRightIso {X Y : C} (f : X β‰… Y) (Z : C) : X βŠ— Z β‰… Y βŠ— Z where
@@ -362,6 +376,20 @@ theorem inv_whiskerRight {X Y : C} (f : X ⟢ Y) (Z : C) [IsIso f] :
     inv (f β–· Z) = inv f β–· Z := by
   aesop_cat
 
+@[simp]
+lemma whiskerRightIso_refl (X W : C) :
+    whiskerRightIso (Iso.refl X) W = Iso.refl (X βŠ— W) :=
+  Iso.ext (id_whiskerRight X W)
+
+@[simp]
+lemma whiskerRightIso_trans {X Y Z : C} (f : X β‰… Y) (g : Y β‰… Z) (W : C) :
+    whiskerRightIso (f β‰ͺ≫ g) W = whiskerRightIso f W β‰ͺ≫ whiskerRightIso g W :=
+  Iso.ext (comp_whiskerRight f.hom g.hom W)
+
+@[simp]
+lemma whiskerRightIso_symm {X Y : C} (f : X β‰… Y) (W : C) :
+    (whiskerRightIso f W).symm = whiskerRightIso f.symm W := rfl
+
 end MonoidalCategory
 
 /-- The tensor product of two isomorphisms is an isomorphism. -/
refactor(CategoryTheory/Monoidal/Braided): use monoidalComp in the proofs (#10078)
Diff
@@ -463,18 +463,30 @@ theorem associator_inv_naturality_right (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
 theorem tensor_whiskerLeft_symm (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
     X ◁ Y ◁ f = (Ξ±_ X Y Z).inv ≫ (X βŠ— Y) ◁ f ≫ (Ξ±_ X Y Z').hom := by simp
 
+@[reassoc]
+theorem leftUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
+    (πŸ™_ C) ◁ f ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f := by
+  simp
+
 @[reassoc]
 theorem leftUnitor_inv_naturality' {X Y : C} (f : X ⟢ Y) :
-    f ≫ (Ξ»_ Y).inv = (Ξ»_ X).inv ≫ (_ ◁ f) := by simp
+    f ≫ (Ξ»_ Y).inv = (Ξ»_ X).inv ≫ _ ◁ f := by simp
 
+@[reassoc]
 theorem id_whiskerLeft_symm {X X' : C} (f : X ⟢ X') :
     f = (Ξ»_ X).inv ≫ πŸ™_ C ◁ f ≫ (Ξ»_ X').hom := by
   simp only [id_whiskerLeft, assoc, inv_hom_id, comp_id, inv_hom_id_assoc]
 
+@[reassoc]
+theorem rightUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
+    f β–· (πŸ™_ C) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
+  simp
+
 @[reassoc]
 theorem rightUnitor_inv_naturality' {X X' : C} (f : X ⟢ X') :
-    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f β–· _) := by simp
+    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ f β–· _ := by simp
 
+@[reassoc]
 theorem whiskerRight_id_symm {X Y : C} (f : X ⟢ Y) :
     f = (ρ_ X).inv ≫ f β–· πŸ™_ C ≫ (ρ_ Y).hom := by
   simp
@@ -823,16 +835,6 @@ theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
   simp
 #align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
 
-@[reassoc]
-theorem leftUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
-    (πŸ™ (πŸ™_ C) βŠ— f) ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f :=
-  by simp
-
-@[reassoc]
-theorem rightUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
-    (f βŠ— πŸ™ (πŸ™_ C)) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
-  simp
-
 @[reassoc]
 theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
     f ≫ (Ξ»_ X').inv = (Ξ»_ X).inv ≫ (πŸ™ _ βŠ— f) := by
feat(CategoryTheory/Monoidal): partially setting simp lemmas (#10061)

Extracted from #6307. The main reason why #6307 is so large is that many tensoring of identity morphisms that appear in mathlib should be replaced with whiskerings. This PR will leave this issue and deal with other parts. That is, we do not set id_tensorHom and tensorHom_id as simple lemmas at this moment, We can set them as simp lemmas locally to enable simple normal forms.

Diff
@@ -41,6 +41,27 @@ you can use the alternative constructor `CategoryTheory.MonoidalCategory.ofTenso
 
 The whiskerings are useful when considering simp-normal forms of morphisms in monoidal categories.
 
+### Simp-normal form for morphisms
+
+Rewriting involving associators and unitors could be very complicated. We try to ease this
+complexity by putting carefully chosen simp lemmas that rewrite any morphisms into the simp-normal
+form defined below. Rewriting into simp-normal form is especially useful in preprocessing
+performed by the `coherence` tactic.
+
+The simp-normal form of morphisms is defined to be an expression that has the minimal number of
+parentheses. More precisely,
+1. it is a composition of morphisms like `f₁ ≫ fβ‚‚ ≫ f₃ ≫ fβ‚„ ≫ fβ‚…` such that each `fα΅’` is
+  either a structural morphisms (morphisms made up only of identities, associators, unitors)
+  or non-structural morphisms, and
+2. each non-structural morphism in the composition is of the form `X₁ ◁ Xβ‚‚ ◁ X₃ ◁ f β–· Xβ‚„ β–· Xβ‚…`,
+  where each `Xα΅’` is a object that is not the identity or a tensor and `f` is a non-structural
+  morphisms that is not the identity or a composite.
+
+Note that `X₁ ◁ Xβ‚‚ ◁ X₃ ◁ f β–· Xβ‚„ β–· Xβ‚…` is actually `X₁ ◁ (Xβ‚‚ ◁ (X₃ ◁ ((f β–· Xβ‚„) β–· Xβ‚…)))`.
+
+Currently, the simp lemmas don't rewrite `πŸ™ X βŠ— f` and `f βŠ— πŸ™ Y` into `X ◁ f` and `f β–· Y`,
+respectively, since it requires a huge refactoring. We hope to add these simp lemmas soon.
+
 ## References
 * Tensor categories, Etingof, Gelaki, Nikshych, Ostrik,
   http://www-math.mit.edu/~etingof/egnobookfinal.pdf
@@ -193,24 +214,71 @@ attribute [simp] MonoidalCategory.tensor_comp
 attribute [reassoc] MonoidalCategory.associator_naturality
 attribute [reassoc] MonoidalCategory.leftUnitor_naturality
 attribute [reassoc] MonoidalCategory.rightUnitor_naturality
-attribute [reassoc] MonoidalCategory.pentagon
+attribute [reassoc (attr := simp)] MonoidalCategory.pentagon
 attribute [reassoc (attr := simp)] MonoidalCategory.triangle
 
 namespace MonoidalCategory
 
 variable {C : Type u} [π’ž : Category.{v} C] [MonoidalCategory C]
 
+-- Note: this will be a simp lemma after merging #6307.
 theorem id_tensorHom (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) :
-    (πŸ™ X) βŠ— f = X ◁ f := by
+    πŸ™ X βŠ— f = X ◁ f := by
   simp [tensorHom_def]
 
+-- Note: this will be a simp lemma after merging #6307.
 theorem tensorHom_id {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) :
-    f βŠ— (πŸ™ Y) = f β–· Y := by
+    f βŠ— πŸ™ Y = f β–· Y := by
   simp [tensorHom_def]
 
+@[reassoc, simp]
+theorem whiskerLeft_comp (W : C) {X Y Z : C} (f : X ⟢ Y) (g : Y ⟢ Z) :
+    W ◁ (f ≫ g) = W ◁ f ≫ W ◁ g := by
+  intros; simp only [← id_tensorHom, ← tensor_comp, comp_id]
+
+@[reassoc, simp]
+theorem id_whiskerLeft {X Y : C} (f : X ⟢ Y) :
+    πŸ™_ C ◁ f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
+  intros; rw [← assoc, ← leftUnitor_naturality]; simp [id_tensorHom]
+
+@[reassoc, simp]
+theorem tensor_whiskerLeft (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
+    (X βŠ— Y) ◁ f = (Ξ±_ X Y Z).hom ≫ X ◁ Y ◁ f ≫ (Ξ±_ X Y Z').inv := by
+  intros
+  simp only [← id_tensorHom, ← tensorHom_id]
+  rw [← assoc, ← associator_naturality]
+  simp
+
+@[reassoc, simp]
+theorem comp_whiskerRight {W X Y : C} (f : W ⟢ X) (g : X ⟢ Y) (Z : C) :
+    (f ≫ g) β–· Z = f β–· Z ≫ g β–· Z := by
+  intros; simp only [← tensorHom_id, ← tensor_comp, id_comp]
+
+@[reassoc, simp]
+theorem whiskerRight_id {X Y : C} (f : X ⟢ Y) :
+    f β–· πŸ™_ C = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
+   intros; rw [← assoc, ← rightUnitor_naturality]; simp [tensorHom_id]
+
+@[reassoc, simp]
+theorem whiskerRight_tensor {X X' : C} (f : X ⟢ X') (Y Z : C) :
+    f β–· (Y βŠ— Z) = (Ξ±_ X Y Z).inv ≫ f β–· Y β–· Z ≫ (Ξ±_ X' Y Z).hom := by
+  intros
+  simp only [← id_tensorHom, ← tensorHom_id]
+  rw [associator_naturality]
+  simp [tensor_id]
+
+@[reassoc, simp]
+theorem whisker_assoc (X : C) {Y Y' : C} (f : Y ⟢ Y') (Z : C) :
+    (X ◁ f) β–· Z = (Ξ±_ X Y Z).hom ≫ X ◁ f β–· Z ≫ (Ξ±_ X Y' Z).inv := by
+  intros
+  simp only [← id_tensorHom, ← tensorHom_id]
+  rw [← assoc, ← associator_naturality]
+  simp
+
+@[reassoc]
 theorem whisker_exchange {W X Y Z : C} (f : W ⟢ X) (g : Y ⟢ Z) :
     W ◁ g ≫ f β–· Z = f β–· Y ≫ X ◁ g := by
-  simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
+  simp only [← id_tensorHom, ← tensorHom_id, ← tensor_comp, id_comp, comp_id]
 
 @[reassoc]
 theorem tensorHom_def' {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g : Xβ‚‚ ⟢ Yβ‚‚) :
@@ -229,42 +297,42 @@ namespace MonoidalCategory
 @[reassoc (attr := simp)]
 theorem whiskerLeft_hom_inv (X : C) {Y Z : C} (f : Y β‰… Z) :
     X ◁ f.hom ≫ X ◁ f.inv = πŸ™ (X βŠ— Y) := by
-  simp [← id_tensorHom, ← tensor_comp]
+  rw [← whiskerLeft_comp, hom_inv_id, whiskerLeft_id]
 
 @[reassoc (attr := simp)]
 theorem hom_inv_whiskerRight {X Y : C} (f : X β‰… Y) (Z : C) :
     f.hom β–· Z ≫ f.inv β–· Z = πŸ™ (X βŠ— Z) := by
-  simp [← tensorHom_id, ← tensor_comp]
+  rw [← comp_whiskerRight, hom_inv_id, id_whiskerRight]
 
 @[reassoc (attr := simp)]
 theorem whiskerLeft_inv_hom (X : C) {Y Z : C} (f : Y β‰… Z) :
     X ◁ f.inv ≫ X ◁ f.hom = πŸ™ (X βŠ— Z) := by
-  simp [← id_tensorHom, ← tensor_comp]
+  rw [← whiskerLeft_comp, inv_hom_id, whiskerLeft_id]
 
 @[reassoc (attr := simp)]
 theorem inv_hom_whiskerRight {X Y : C} (f : X β‰… Y) (Z : C) :
     f.inv β–· Z ≫ f.hom β–· Z = πŸ™ (Y βŠ— Z) := by
-  simp [← tensorHom_id, ← tensor_comp]
+  rw [← comp_whiskerRight, inv_hom_id, id_whiskerRight]
 
 @[reassoc (attr := simp)]
 theorem whiskerLeft_hom_inv' (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
     X ◁ f ≫ X ◁ inv f = πŸ™ (X βŠ— Y) := by
-  simp [← id_tensorHom, ← tensor_comp]
+  rw [← whiskerLeft_comp, IsIso.hom_inv_id, whiskerLeft_id]
 
 @[reassoc (attr := simp)]
 theorem hom_inv_whiskerRight' {X Y : C} (f : X ⟢ Y) [IsIso f] (Z : C) :
     f β–· Z ≫ inv f β–· Z = πŸ™ (X βŠ— Z) := by
-  simp [← tensorHom_id, ← tensor_comp]
+  rw [← comp_whiskerRight, IsIso.hom_inv_id, id_whiskerRight]
 
 @[reassoc (attr := simp)]
 theorem whiskerLeft_inv_hom' (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
     X ◁ inv f ≫ X ◁ f = πŸ™ (X βŠ— Z) := by
-  simp [← id_tensorHom, ← tensor_comp]
+  rw [← whiskerLeft_comp, IsIso.inv_hom_id, whiskerLeft_id]
 
 @[reassoc (attr := simp)]
 theorem inv_hom_whiskerRight' {X Y : C} (f : X ⟢ Y) [IsIso f] (Z : C) :
     inv f β–· Z ≫ f β–· Z = πŸ™ (Y βŠ— Z) := by
-  simp [← tensorHom_id, ← tensor_comp]
+  rw [← comp_whiskerRight, IsIso.inv_hom_id, id_whiskerRight]
 
 /-- The left whiskering of an isomorphism is an isomorphism. -/
 @[simps]
@@ -322,12 +390,21 @@ instance tensor_isIso {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso
 @[simp]
 theorem inv_tensor {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso g] :
     inv (f βŠ— g) = inv f βŠ— inv g := by
-  apply IsIso.inv_eq_of_hom_inv_id
-  simp [← tensor_comp]
+  simp [tensorHom_def ,whisker_exchange]
 #align category_theory.monoidal_category.inv_tensor CategoryTheory.MonoidalCategory.inv_tensor
 
 variable {U V W X Y Z : C}
 
+theorem whiskerLeft_dite {P : Prop} [Decidable P]
+    (X : C) {Y Z : C} (f : P β†’ (Y ⟢ Z)) (f' : Β¬P β†’ (Y ⟢ Z)) :
+      X ◁ (if h : P then f h else f' h) = if h : P then X ◁ f h else X ◁ f' h := by
+  split_ifs <;> rfl
+
+theorem dite_whiskerRight {P : Prop} [Decidable P]
+    {X Y : C} (f : P β†’ (X ⟢ Y)) (f' : Β¬P β†’ (X ⟢ Y)) (Z : C):
+      (if h : P then f h else f' h) β–· Z = if h : P then f h β–· Z else f' h β–· Z := by
+  split_ifs <;> rfl
+
 theorem tensor_dite {P : Prop} [Decidable P] {W X Y Z : C} (f : W ⟢ X) (g : P β†’ (Y ⟢ Z))
     (g' : Β¬P β†’ (Y ⟢ Z)) : (f βŠ— if h : P then g h else g' h) = if h : P then f βŠ— g h else f βŠ— g' h :=
   by split_ifs <;> rfl
@@ -338,106 +415,211 @@ theorem dite_tensor {P : Prop} [Decidable P] {W X Y Z : C} (f : W ⟢ X) (g : P
   by split_ifs <;> rfl
 #align category_theory.monoidal_category.dite_tensor CategoryTheory.MonoidalCategory.dite_tensor
 
-@[reassoc, simp]
-theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) := by
-  rw [← tensor_comp]
-  simp
-#align category_theory.monoidal_category.comp_tensor_id CategoryTheory.MonoidalCategory.comp_tensor_id
+@[simp]
+theorem whiskerLeft_eqToHom (X : C) {Y Z : C} (f : Y = Z) :
+    X ◁ eqToHom f = eqToHom (congr_argβ‚‚ tensorObj rfl f) := by
+  cases f
+  simp only [whiskerLeft_id, eqToHom_refl]
 
-@[reassoc, simp]
-theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) := by
-  rw [← tensor_comp]
-  simp
-#align category_theory.monoidal_category.id_tensor_comp CategoryTheory.MonoidalCategory.id_tensor_comp
+@[simp]
+theorem eqToHom_whiskerRight {X Y : C} (f : X = Y) (Z : C) :
+    eqToHom f β–· Z = eqToHom (congr_argβ‚‚ tensorObj f rfl) := by
+  cases f
+  simp only [id_whiskerRight, eqToHom_refl]
 
-@[reassoc (attr := simp)]
-theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f := by
-  rw [← tensor_comp]
-  simp
-#align category_theory.monoidal_category.id_tensor_comp_tensor_id CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
+@[reassoc]
+theorem associator_naturality_left {X X' : C} (f : X ⟢ X') (Y Z : C) :
+    f β–· Y β–· Z ≫ (Ξ±_ X' Y Z).hom = (Ξ±_ X Y Z).hom ≫ f β–· (Y βŠ— Z) := by simp
 
-@[reassoc (attr := simp)]
-theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f := by
-  rw [← tensor_comp]
-  simp
-#align category_theory.monoidal_category.tensor_id_comp_id_tensor CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor
+@[reassoc]
+theorem associator_inv_naturality_left {X X' : C} (f : X ⟢ X') (Y Z : C) :
+    f β–· (Y βŠ— Z) ≫ (Ξ±_ X' Y Z).inv = (Ξ±_ X Y Z).inv ≫ f β–· Y β–· Z := by simp
 
-@[simp]
-theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
-    f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
-  rw [← rightUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
-#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
+@[reassoc]
+theorem whiskerRight_tensor_symm {X X' : C} (f : X ⟢ X') (Y Z : C) :
+    f β–· Y β–· Z = (Ξ±_ X Y Z).hom ≫ f β–· (Y βŠ— Z) ≫ (Ξ±_ X' Y Z).inv := by simp
 
-@[simp]
-theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
-    πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
-  rw [← leftUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
-#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
+@[reassoc]
+theorem associator_naturality_middle (X : C) {Y Y' : C} (f : Y ⟢ Y') (Z : C) :
+    (X ◁ f) β–· Z ≫ (Ξ±_ X Y' Z).hom = (Ξ±_ X Y Z).hom ≫ X ◁ f β–· Z := by simp
 
 @[reassoc]
-theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
-    f ≫ (Ξ»_ X').inv = (Ξ»_ X).inv ≫ (πŸ™ _ βŠ— f) := by simp
-#align category_theory.monoidal_category.left_unitor_inv_naturality CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
+theorem associator_inv_naturality_middle (X : C) {Y Y' : C} (f : Y ⟢ Y') (Z : C) :
+    X ◁ f β–· Z ≫ (Ξ±_ X Y' Z).inv = (Ξ±_ X Y Z).inv ≫ (X ◁ f) β–· Z := by simp
 
 @[reassoc]
-theorem rightUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
-    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f βŠ— πŸ™ _) := by simp
-#align category_theory.monoidal_category.right_unitor_inv_naturality CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality
+theorem whisker_assoc_symm (X : C) {Y Y' : C} (f : Y ⟢ Y') (Z : C) :
+    X ◁ f β–· Z = (Ξ±_ X Y Z).inv ≫ (X ◁ f) β–· Z ≫ (Ξ±_ X Y' Z).hom := by simp
 
-theorem tensor_left_iff {X Y : C} (f g : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = πŸ™ (πŸ™_ C) βŠ— g ↔ f = g := by simp
-#align category_theory.monoidal_category.tensor_left_iff CategoryTheory.MonoidalCategory.tensor_left_iff
+@[reassoc]
+theorem associator_naturality_right (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
+    (X βŠ— Y) ◁ f ≫ (Ξ±_ X Y Z').hom = (Ξ±_ X Y Z).hom ≫ X ◁ Y ◁ f := by simp
 
-theorem tensor_right_iff {X Y : C} (f g : X ⟢ Y) : f βŠ— πŸ™ (πŸ™_ C) = g βŠ— πŸ™ (πŸ™_ C) ↔ f = g := by simp
-#align category_theory.monoidal_category.tensor_right_iff CategoryTheory.MonoidalCategory.tensor_right_iff
+@[reassoc]
+theorem associator_inv_naturality_right (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
+    X ◁ Y ◁ f ≫ (Ξ±_ X Y Z').inv = (Ξ±_ X Y Z).inv ≫ (X βŠ— Y) ◁ f := by simp
+
+@[reassoc]
+theorem tensor_whiskerLeft_symm (X Y : C) {Z Z' : C} (f : Z ⟢ Z') :
+    X ◁ Y ◁ f = (Ξ±_ X Y Z).inv ≫ (X βŠ— Y) ◁ f ≫ (Ξ±_ X Y Z').hom := by simp
+
+@[reassoc]
+theorem leftUnitor_inv_naturality' {X Y : C} (f : X ⟢ Y) :
+    f ≫ (Ξ»_ Y).inv = (Ξ»_ X).inv ≫ (_ ◁ f) := by simp
+
+theorem id_whiskerLeft_symm {X X' : C} (f : X ⟢ X') :
+    f = (Ξ»_ X).inv ≫ πŸ™_ C ◁ f ≫ (Ξ»_ X').hom := by
+  simp only [id_whiskerLeft, assoc, inv_hom_id, comp_id, inv_hom_id_assoc]
+
+@[reassoc]
+theorem rightUnitor_inv_naturality' {X X' : C} (f : X ⟢ X') :
+    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f β–· _) := by simp
+
+theorem whiskerRight_id_symm {X Y : C} (f : X ⟢ Y) :
+    f = (ρ_ X).inv ≫ f β–· πŸ™_ C ≫ (ρ_ Y).hom := by
+  simp
+
+theorem whiskerLeft_iff {X Y : C} (f g : X ⟢ Y) : πŸ™_ C ◁ f = πŸ™_ C ◁ g ↔ f = g := by simp
+
+theorem whiskerRight_iff {X Y : C} (f g : X ⟢ Y) : f β–· πŸ™_ C = g β–· πŸ™_ C ↔ f = g := by simp
 
 /-! The lemmas in the next section are true by coherence,
 but we prove them directly as they are used in proving the coherence theorem. -/
 
-
 section
 
-@[reassoc]
-theorem pentagon_inv (W X Y Z : C) :
-    (πŸ™ W βŠ— (Ξ±_ X Y Z).inv) ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ ((Ξ±_ W X Y).inv βŠ— πŸ™ Z) =
+@[reassoc (attr := simp)]
+theorem pentagon' (W X Y Z : C) :
+    (Ξ±_ W X Y).hom β–· Z ≫ (Ξ±_ W (X βŠ— Y) Z).hom ≫ W ◁ (Ξ±_ X Y Z).hom =
+      (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom := by
+  simp [← id_tensorHom, ← tensorHom_id, pentagon]
+
+@[reassoc (attr := simp)]
+theorem pentagon_inv' :
+    W ◁ (Ξ±_ X Y Z).inv ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ (Ξ±_ W X Y).inv β–· Z =
       (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv :=
-  CategoryTheory.eq_of_inv_eq_inv (by simp [pentagon])
-#align category_theory.monoidal_category.pentagon_inv CategoryTheory.MonoidalCategory.pentagon_inv
+  eq_of_inv_eq_inv (by simp)
 
-@[reassoc, simp]
-theorem rightUnitor_tensor (X Y : C) :
-    (ρ_ (X βŠ— Y)).hom = (Ξ±_ X Y (πŸ™_ C)).hom ≫ (πŸ™ X βŠ— (ρ_ Y).hom) := by
-  rw [← tensor_right_iff, comp_tensor_id, ← cancel_mono (Ξ±_ X Y (πŸ™_ C)).hom, assoc,
-    associator_naturality, ← triangle_assoc, ← triangle, id_tensor_comp, pentagon_assoc, ←
-    associator_naturality, tensor_id]
-#align category_theory.monoidal_category.right_unitor_tensor CategoryTheory.MonoidalCategory.rightUnitor_tensor
+@[reassoc (attr := simp)]
+theorem pentagon_inv_inv_hom_hom_inv :
+    (Ξ±_ W (X βŠ— Y) Z).inv ≫ (Ξ±_ W X Y).inv β–· Z ≫ (Ξ±_ (W βŠ— X) Y Z).hom =
+      W ◁ (Ξ±_ X Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).inv := by
+  rw [← cancel_epi (W ◁ (Ξ±_ X Y Z).inv), ← cancel_mono (Ξ±_ (W βŠ— X) Y Z).inv]
+  simp
 
-@[reassoc, simp]
-theorem rightUnitor_tensor_inv (X Y : C) :
-    (ρ_ (X βŠ— Y)).inv = (πŸ™ X βŠ— (ρ_ Y).inv) ≫ (Ξ±_ X Y (πŸ™_ C)).inv :=
+@[reassoc (attr := simp)]
+theorem pentagon_inv_hom_hom_hom_inv :
+    (Ξ±_ (W βŠ— X) Y Z).inv ≫ (Ξ±_ W X Y).hom β–· Z ≫ (Ξ±_ W (X βŠ— Y) Z).hom =
+      (Ξ±_ W X (Y βŠ— Z)).hom ≫ W ◁ (Ξ±_ X Y Z).inv :=
   eq_of_inv_eq_inv (by simp)
-#align category_theory.monoidal_category.right_unitor_tensor_inv CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv
 
 @[reassoc (attr := simp)]
-theorem triangle_assoc_comp_right (X Y : C) :
-    (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).hom βŠ— πŸ™ Y) = πŸ™ X βŠ— (Ξ»_ Y).hom := by
-  rw [← triangle, Iso.inv_hom_id_assoc]
-#align category_theory.monoidal_category.triangle_assoc_comp_right CategoryTheory.MonoidalCategory.triangle_assoc_comp_right
+theorem pentagon_hom_inv_inv_inv_inv :
+    W ◁ (Ξ±_ X Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv =
+      (Ξ±_ W (X βŠ— Y) Z).inv ≫ (Ξ±_ W X Y).inv β–· Z :=
+  by simp [← cancel_epi (W ◁ (Ξ±_ X Y Z).inv)]
 
 @[reassoc (attr := simp)]
-theorem triangle_assoc_comp_left_inv (X Y : C) :
-    (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y := by
-  apply (cancel_mono ((ρ_ X).hom βŠ— πŸ™ Y)).1
-  simp only [triangle_assoc_comp_right, assoc]
-  rw [← id_tensor_comp, Iso.inv_hom_id, ← comp_tensor_id, Iso.inv_hom_id]
-#align category_theory.monoidal_category.triangle_assoc_comp_left_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_left_inv
+theorem pentagon_hom_hom_inv_hom_hom :
+    (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom ≫ W ◁ (Ξ±_ X Y Z).inv =
+      (Ξ±_ W X Y).hom β–· Z ≫ (Ξ±_ W (X βŠ— Y) Z).hom :=
+  eq_of_inv_eq_inv (by simp)
+
+@[reassoc (attr := simp)]
+theorem pentagon_hom_inv_inv_inv_hom :
+    (Ξ±_ W X (Y βŠ— Z)).hom ≫ W ◁ (Ξ±_ X Y Z).inv ≫ (Ξ±_ W (X βŠ— Y) Z).inv =
+      (Ξ±_ (W βŠ— X) Y Z).inv ≫ (Ξ±_ W X Y).hom β–· Z := by
+  rw [← cancel_epi (Ξ±_ W X (Y βŠ— Z)).inv, ← cancel_mono ((Ξ±_ W X Y).inv β–· Z)]
+  simp
+
+@[reassoc (attr := simp)]
+theorem pentagon_hom_hom_inv_inv_hom :
+    (Ξ±_ W (X βŠ— Y) Z).hom ≫ W ◁ (Ξ±_ X Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).inv =
+      (Ξ±_ W X Y).inv β–· Z ≫ (Ξ±_ (W βŠ— X) Y Z).hom :=
+  eq_of_inv_eq_inv (by simp)
+
+@[reassoc (attr := simp)]
+theorem pentagon_inv_hom_hom_hom_hom :
+    (Ξ±_ W X Y).inv β–· Z ≫ (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom =
+      (Ξ±_ W (X βŠ— Y) Z).hom ≫ W ◁ (Ξ±_ X Y Z).hom :=
+  by simp [← cancel_epi ((Ξ±_ W X Y).hom β–· Z)]
+
+@[reassoc (attr := simp)]
+theorem pentagon_inv_inv_hom_inv_inv :
+    (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv ≫ (Ξ±_ W X Y).hom β–· Z =
+      W ◁ (Ξ±_ X Y Z).inv ≫ (Ξ±_ W (X βŠ— Y) Z).inv :=
+  eq_of_inv_eq_inv (by simp)
+
+@[reassoc (attr := simp)]
+theorem triangle' (X Y : C) :
+    (Ξ±_ X (πŸ™_ C) Y).hom ≫ X ◁ (Ξ»_ Y).hom = (ρ_ X).hom β–· Y := by
+  simp [← id_tensorHom, ← tensorHom_id, triangle]
+
+@[reassoc (attr := simp)]
+theorem triangle_assoc_comp_right' (X Y : C) :
+    (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).hom β–· Y) = X ◁ (Ξ»_ Y).hom := by
+  rw [← triangle', Iso.inv_hom_id_assoc]
+
+@[reassoc (attr := simp)]
+theorem triangle_assoc_comp_right_inv' (X Y : C) :
+    (ρ_ X).inv β–· Y ≫ (Ξ±_ X (πŸ™_ C) Y).hom = X ◁ (Ξ»_ Y).inv := by
+  simp [← cancel_mono (X ◁ (Ξ»_ Y).hom)]
+
+@[reassoc (attr := simp)]
+theorem triangle_assoc_comp_left_inv' (X Y : C) :
+    (X ◁ (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv β–· Y := by
+  simp [← cancel_mono ((ρ_ X).hom β–· Y)]
+
+/-- We state it as a simp lemma, which is regarded as an involved version of
+`id_whiskerRight X Y : πŸ™ X β–· Y = πŸ™ (X βŠ— Y)`.
+-/
+@[reassoc, simp]
+theorem leftUnitor_whiskerRight (X Y : C) :
+    (Ξ»_ X).hom β–· Y = (Ξ±_ (πŸ™_ C) X Y).hom ≫ (Ξ»_ (X βŠ— Y)).hom := by
+  rw [← whiskerLeft_iff, whiskerLeft_comp, ← cancel_epi (Ξ±_ _ _ _).hom, ←
+      cancel_epi ((Ξ±_ _ _ _).hom β–· _), pentagon'_assoc, triangle', ← associator_naturality_middle, ←
+      comp_whiskerRight_assoc, triangle', associator_naturality_left]
+
+@[reassoc, simp]
+theorem leftUnitor_inv_whiskerRight (X Y : C) :
+    (Ξ»_ X).inv β–· Y = (Ξ»_ (X βŠ— Y)).inv ≫ (Ξ±_ (πŸ™_ C) X Y).inv :=
+  eq_of_inv_eq_inv (by simp)
+
+@[reassoc, simp]
+theorem whiskerLeft_rightUnitor (X Y : C) :
+    X ◁ (ρ_ Y).hom = (Ξ±_ X Y (πŸ™_ C)).inv ≫ (ρ_ (X βŠ— Y)).hom := by
+  rw [← whiskerRight_iff, comp_whiskerRight, ← cancel_epi (Ξ±_ _ _ _).inv, ←
+      cancel_epi (X ◁ (Ξ±_ _ _ _).inv), pentagon_inv'_assoc, triangle_assoc_comp_right', ←
+      associator_inv_naturality_middle, ← whiskerLeft_comp_assoc, triangle_assoc_comp_right',
+      associator_inv_naturality_right]
+
+@[reassoc, simp]
+theorem whiskerLeft_rightUnitor_inv (X Y : C) :
+    X ◁ (ρ_ Y).inv = (ρ_ (X βŠ— Y)).inv ≫ (Ξ±_ X Y (πŸ™_ C)).hom :=
+  eq_of_inv_eq_inv (by simp)
+
+@[reassoc]
+theorem leftUnitor_tensor' (X Y : C) :
+    (Ξ»_ (X βŠ— Y)).hom = (Ξ±_ (πŸ™_ C) X Y).inv ≫ (Ξ»_ X).hom β–· Y := by simp
+
+@[reassoc]
+theorem leftUnitor_tensor_inv' (X Y : C) :
+    (Ξ»_ (X βŠ— Y)).inv = (Ξ»_ X).inv β–· Y ≫ (Ξ±_ (πŸ™_ C) X Y).hom := by simp
+
+@[reassoc]
+theorem rightUnitor_tensor' (X Y : C) :
+    (ρ_ (X βŠ— Y)).hom = (Ξ±_ X Y (πŸ™_ C)).hom ≫ X ◁ (ρ_ Y).hom := by simp
+
+@[reassoc]
+theorem rightUnitor_tensor_inv' (X Y : C) :
+    (ρ_ (X βŠ— Y)).inv = X ◁ (ρ_ Y).inv ≫ (Ξ±_ X Y (πŸ™_ C)).inv := by simp
 
 end
 
 @[reassoc]
 theorem associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
     (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) := by
-  rw [comp_inv_eq, assoc, associator_naturality]
-  simp
+  simp [tensorHom_def]
 #align category_theory.monoidal_category.associator_inv_naturality CategoryTheory.MonoidalCategory.associator_inv_naturality
 
 @[reassoc, simp]
@@ -469,49 +651,49 @@ theorem id_tensor_associator_inv_naturality {X Y Z X' : C} (f : X ⟢ X') :
 @[reassoc (attr := simp)]
 theorem hom_inv_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f.hom βŠ— g) ≫ (f.inv βŠ— h) = (πŸ™ V βŠ— g) ≫ (πŸ™ V βŠ— h) := by
-  rw [← tensor_comp, f.hom_inv_id, id_tensor_comp]
+  rw [← tensor_comp, f.hom_inv_id]; simp [id_tensorHom]
 #align category_theory.monoidal_category.hom_inv_id_tensor CategoryTheory.MonoidalCategory.hom_inv_id_tensor
 
 @[reassoc (attr := simp)]
 theorem inv_hom_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f.inv βŠ— g) ≫ (f.hom βŠ— h) = (πŸ™ W βŠ— g) ≫ (πŸ™ W βŠ— h) := by
-  rw [← tensor_comp, f.inv_hom_id, id_tensor_comp]
+  rw [← tensor_comp, f.inv_hom_id]; simp [id_tensorHom]
 #align category_theory.monoidal_category.inv_hom_id_tensor CategoryTheory.MonoidalCategory.inv_hom_id_tensor
 
 @[reassoc (attr := simp)]
 theorem tensor_hom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.hom) ≫ (h βŠ— f.inv) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
-  rw [← tensor_comp, f.hom_inv_id, comp_tensor_id]
+  rw [← tensor_comp, f.hom_inv_id]; simp [tensorHom_id]
 #align category_theory.monoidal_category.tensor_hom_inv_id CategoryTheory.MonoidalCategory.tensor_hom_inv_id
 
 @[reassoc (attr := simp)]
 theorem tensor_inv_hom_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.inv) ≫ (h βŠ— f.hom) = (g βŠ— πŸ™ W) ≫ (h βŠ— πŸ™ W) := by
-  rw [← tensor_comp, f.inv_hom_id, comp_tensor_id]
+  rw [← tensor_comp, f.inv_hom_id]; simp [tensorHom_id]
 #align category_theory.monoidal_category.tensor_inv_hom_id CategoryTheory.MonoidalCategory.tensor_inv_hom_id
 
 @[reassoc (attr := simp)]
 theorem hom_inv_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (f βŠ— g) ≫ (inv f βŠ— h) = (πŸ™ V βŠ— g) ≫ (πŸ™ V βŠ— h) := by
-  rw [← tensor_comp, IsIso.hom_inv_id, id_tensor_comp]
+  rw [← tensor_comp, IsIso.hom_inv_id]; simp [id_tensorHom]
 #align category_theory.monoidal_category.hom_inv_id_tensor' CategoryTheory.MonoidalCategory.hom_inv_id_tensor'
 
 @[reassoc (attr := simp)]
 theorem inv_hom_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (inv f βŠ— g) ≫ (f βŠ— h) = (πŸ™ W βŠ— g) ≫ (πŸ™ W βŠ— h) := by
-  rw [← tensor_comp, IsIso.inv_hom_id, id_tensor_comp]
+  rw [← tensor_comp, IsIso.inv_hom_id]; simp [id_tensorHom]
 #align category_theory.monoidal_category.inv_hom_id_tensor' CategoryTheory.MonoidalCategory.inv_hom_id_tensor'
 
 @[reassoc (attr := simp)]
 theorem tensor_hom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f) ≫ (h βŠ— inv f) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
-  rw [← tensor_comp, IsIso.hom_inv_id, comp_tensor_id]
+  rw [← tensor_comp, IsIso.hom_inv_id]; simp [tensorHom_id]
 #align category_theory.monoidal_category.tensor_hom_inv_id' CategoryTheory.MonoidalCategory.tensor_hom_inv_id'
 
 @[reassoc (attr := simp)]
 theorem tensor_inv_hom_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— inv f) ≫ (h βŠ— f) = (g βŠ— πŸ™ W) ≫ (h βŠ— πŸ™ W) := by
-  rw [← tensor_comp, IsIso.inv_hom_id, comp_tensor_id]
+  rw [← tensor_comp, IsIso.inv_hom_id]; simp [tensorHom_id]
 #align category_theory.monoidal_category.tensor_inv_hom_id' CategoryTheory.MonoidalCategory.tensor_inv_hom_id'
 
 /--
@@ -557,8 +739,113 @@ abbrev ofTensorHom [MonoidalCategoryStruct C]
   tensorHom_def := by intros; simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
   whiskerLeft_id := by intros; simp [← id_tensorHom, ← tensor_id]
   id_whiskerRight := by intros; simp [← tensorHom_id, tensor_id]
-  pentagon := pentagon
-  triangle := triangle
+  pentagon := by intros; simp [← id_tensorHom, ← tensorHom_id, pentagon]
+  triangle := by intros; simp [← id_tensorHom, ← tensorHom_id, triangle]
+
+section
+
+/- The lemmas of this section might be redundant because they should be stated in terms of the
+whiskering operators. We leave them in order not to break proofs that existed before we
+have the whiskering operators. -/
+
+/- TODO: The lemmas in this section are no longer simp lemmas after we set `id_tensorHom`
+and `tensorHom_id` as simp lemmas. -/
+attribute [local simp] id_tensorHom tensorHom_id
+
+@[reassoc, simp]
+theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) := by
+  simp
+#align category_theory.monoidal_category.comp_tensor_id CategoryTheory.MonoidalCategory.comp_tensor_id
+
+@[reassoc, simp]
+theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) := by
+  simp
+#align category_theory.monoidal_category.id_tensor_comp CategoryTheory.MonoidalCategory.id_tensor_comp
+
+@[reassoc]
+theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f := by
+  rw [← tensor_comp]
+  simp
+#align category_theory.monoidal_category.id_tensor_comp_tensor_id CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
+
+@[reassoc]
+theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f := by
+  rw [← tensor_comp]
+  simp
+#align category_theory.monoidal_category.tensor_id_comp_id_tensor CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor
+
+theorem tensor_left_iff {X Y : C} (f g : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = πŸ™ (πŸ™_ C) βŠ— g ↔ f = g := by simp
+#align category_theory.monoidal_category.tensor_left_iff CategoryTheory.MonoidalCategory.tensor_left_iff
+
+theorem tensor_right_iff {X Y : C} (f g : X ⟢ Y) : f βŠ— πŸ™ (πŸ™_ C) = g βŠ— πŸ™ (πŸ™_ C) ↔ f = g := by simp
+#align category_theory.monoidal_category.tensor_right_iff CategoryTheory.MonoidalCategory.tensor_right_iff
+
+@[reassoc]
+theorem pentagon_inv (W X Y Z : C) :
+    (πŸ™ W βŠ— (Ξ±_ X Y Z).inv) ≫ (Ξ±_ W (X βŠ— Y) Z).inv ≫ ((Ξ±_ W X Y).inv βŠ— πŸ™ Z) =
+      (Ξ±_ W X (Y βŠ— Z)).inv ≫ (Ξ±_ (W βŠ— X) Y Z).inv :=
+  CategoryTheory.eq_of_inv_eq_inv (by simp [pentagon])
+#align category_theory.monoidal_category.pentagon_inv CategoryTheory.MonoidalCategory.pentagon_inv
+
+@[reassoc]
+theorem rightUnitor_tensor (X Y : C) :
+    (ρ_ (X βŠ— Y)).hom = (Ξ±_ X Y (πŸ™_ C)).hom ≫ (πŸ™ X βŠ— (ρ_ Y).hom) := by
+  simp
+#align category_theory.monoidal_category.right_unitor_tensor CategoryTheory.MonoidalCategory.rightUnitor_tensor
+
+@[reassoc]
+theorem rightUnitor_tensor_inv (X Y : C) :
+    (ρ_ (X βŠ— Y)).inv = (πŸ™ X βŠ— (ρ_ Y).inv) ≫ (Ξ±_ X Y (πŸ™_ C)).inv :=
+  eq_of_inv_eq_inv (by simp)
+#align category_theory.monoidal_category.right_unitor_tensor_inv CategoryTheory.MonoidalCategory.rightUnitor_tensor_inv
+
+@[reassoc (attr := simp)]
+theorem triangle_assoc_comp_right (X Y : C) :
+    (Ξ±_ X (πŸ™_ C) Y).inv ≫ ((ρ_ X).hom βŠ— πŸ™ Y) = πŸ™ X βŠ— (Ξ»_ Y).hom := by
+  simp
+#align category_theory.monoidal_category.triangle_assoc_comp_right CategoryTheory.MonoidalCategory.triangle_assoc_comp_right
+
+@[reassoc (attr := simp)]
+theorem triangle_assoc_comp_left_inv (X Y : C) :
+    (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y := by
+  simp
+#align category_theory.monoidal_category.triangle_assoc_comp_left_inv CategoryTheory.MonoidalCategory.triangle_assoc_comp_left_inv
+
+@[reassoc]
+theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
+    f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
+  simp
+#align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
+
+@[reassoc]
+theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
+    πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
+  simp
+#align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
+
+@[reassoc]
+theorem leftUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
+    (πŸ™ (πŸ™_ C) βŠ— f) ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f :=
+  by simp
+
+@[reassoc]
+theorem rightUnitor_naturality' {X Y : C} (f : X ⟢ Y) :
+    (f βŠ— πŸ™ (πŸ™_ C)) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
+  simp
+
+@[reassoc]
+theorem leftUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
+    f ≫ (Ξ»_ X').inv = (Ξ»_ X).inv ≫ (πŸ™ _ βŠ— f) := by
+  simp
+#align category_theory.monoidal_category.left_unitor_inv_naturality CategoryTheory.MonoidalCategory.leftUnitor_inv_naturality
+
+@[reassoc]
+theorem rightUnitor_inv_naturality {X X' : C} (f : X ⟢ X') :
+    f ≫ (ρ_ X').inv = (ρ_ X).inv ≫ (f βŠ— πŸ™ _) := by
+  simp
+#align category_theory.monoidal_category.right_unitor_inv_naturality CategoryTheory.MonoidalCategory.rightUnitor_inv_naturality
+
+end
 
 end
 
@@ -662,6 +949,8 @@ def rightUnitorNatIso : tensorUnitRight C β‰… 𝟭 C :=
 
 section
 
+attribute [local simp] id_tensorHom tensorHom_id whisker_exchange
+
 -- Porting Note: This used to be `variable {C}` but it seems like Lean 4 parses that differently
 variable {C : Type u} [Category.{v} C] [MonoidalCategory.{v} C]
 
@@ -676,10 +965,7 @@ def tensorLeft (X : C) : C β₯€ C where
 tensoring on the left with `Y`, and then again with `X`.
 -/
 def tensorLeftTensor (X Y : C) : tensorLeft (X βŠ— Y) β‰… tensorLeft Y β‹™ tensorLeft X :=
-  NatIso.ofComponents (associator _ _) fun {Z} {Z'} f => by
-    dsimp
-    rw [← tensor_id]
-    apply associator_naturality
+  NatIso.ofComponents (associator _ _) fun {Z} {Z'} f => by simp
 #align category_theory.monoidal_category.tensor_left_tensor CategoryTheory.MonoidalCategory.tensorLeftTensor
 
 @[simp]
@@ -742,10 +1028,7 @@ variable {C : Type u} [Category.{v} C] [MonoidalCategory.{v} C]
 tensoring on the right with `X`, and then again with `Y`.
 -/
 def tensorRightTensor (X Y : C) : tensorRight (X βŠ— Y) β‰… tensorRight X β‹™ tensorRight Y :=
-  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun {Z} {Z'} f => by
-    dsimp
-    rw [← tensor_id]
-    apply associator_inv_naturality
+  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun {Z} {Z'} f => by simp
 #align category_theory.monoidal_category.tensor_right_tensor CategoryTheory.MonoidalCategory.tensorRightTensor
 
 @[simp]
@@ -773,7 +1056,7 @@ variable (Cβ‚‚ : Type uβ‚‚) [Category.{vβ‚‚} Cβ‚‚] [MonoidalCategory.{vβ‚‚} Cβ‚‚
 
 attribute [local simp] associator_naturality leftUnitor_naturality rightUnitor_naturality pentagon
 
-@[simps! tensorObj tensorHom tensorUnit associator]
+@[simps! tensorObj tensorHom tensorUnit whiskerLeft whiskerRight associator]
 instance prodMonoidal : MonoidalCategory (C₁ Γ— Cβ‚‚) where
   tensorObj X Y := (X.1 βŠ— Y.1, X.2 βŠ— Y.2)
   tensorHom f g := (f.1 βŠ— g.1, f.2 βŠ— g.2)
feat(CategoryTheory/Monoidal): add lemmas for the whiskerings (#9995)

Extracted from #6307.

Diff
@@ -222,7 +222,79 @@ end MonoidalCategory
 open scoped MonoidalCategory
 open MonoidalCategory
 
-variable (C : Type u) [π’ž : Category.{v} C] [MonoidalCategory C]
+variable {C : Type u} [π’ž : Category.{v} C] [MonoidalCategory C]
+
+namespace MonoidalCategory
+
+@[reassoc (attr := simp)]
+theorem whiskerLeft_hom_inv (X : C) {Y Z : C} (f : Y β‰… Z) :
+    X ◁ f.hom ≫ X ◁ f.inv = πŸ™ (X βŠ— Y) := by
+  simp [← id_tensorHom, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem hom_inv_whiskerRight {X Y : C} (f : X β‰… Y) (Z : C) :
+    f.hom β–· Z ≫ f.inv β–· Z = πŸ™ (X βŠ— Z) := by
+  simp [← tensorHom_id, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem whiskerLeft_inv_hom (X : C) {Y Z : C} (f : Y β‰… Z) :
+    X ◁ f.inv ≫ X ◁ f.hom = πŸ™ (X βŠ— Z) := by
+  simp [← id_tensorHom, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem inv_hom_whiskerRight {X Y : C} (f : X β‰… Y) (Z : C) :
+    f.inv β–· Z ≫ f.hom β–· Z = πŸ™ (Y βŠ— Z) := by
+  simp [← tensorHom_id, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem whiskerLeft_hom_inv' (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
+    X ◁ f ≫ X ◁ inv f = πŸ™ (X βŠ— Y) := by
+  simp [← id_tensorHom, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem hom_inv_whiskerRight' {X Y : C} (f : X ⟢ Y) [IsIso f] (Z : C) :
+    f β–· Z ≫ inv f β–· Z = πŸ™ (X βŠ— Z) := by
+  simp [← tensorHom_id, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem whiskerLeft_inv_hom' (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
+    X ◁ inv f ≫ X ◁ f = πŸ™ (X βŠ— Z) := by
+  simp [← id_tensorHom, ← tensor_comp]
+
+@[reassoc (attr := simp)]
+theorem inv_hom_whiskerRight' {X Y : C} (f : X ⟢ Y) [IsIso f] (Z : C) :
+    inv f β–· Z ≫ f β–· Z = πŸ™ (Y βŠ— Z) := by
+  simp [← tensorHom_id, ← tensor_comp]
+
+/-- The left whiskering of an isomorphism is an isomorphism. -/
+@[simps]
+def whiskerLeftIso (X : C) {Y Z : C} (f : Y β‰… Z) : X βŠ— Y β‰… X βŠ— Z where
+  hom := X ◁ f.hom
+  inv := X ◁ f.inv
+
+instance whiskerLeft_isIso (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] : IsIso (X ◁ f) :=
+  IsIso.of_iso (whiskerLeftIso X (asIso f))
+
+@[simp]
+theorem inv_whiskerLeft (X : C) {Y Z : C} (f : Y ⟢ Z) [IsIso f] :
+    inv (X ◁ f) = X ◁ inv f := by
+  aesop_cat
+
+/-- The right whiskering of an isomorphism is an isomorphism. -/
+@[simps!]
+def whiskerRightIso {X Y : C} (f : X β‰… Y) (Z : C) : X βŠ— Z β‰… Y βŠ— Z where
+  hom := f.hom β–· Z
+  inv := f.inv β–· Z
+
+instance whiskerRight_isIso {X Y : C} (f : X ⟢ Y) (Z : C) [IsIso f] : IsIso (f β–· Z) :=
+  IsIso.of_iso (whiskerRightIso (asIso f) Z)
+
+@[simp]
+theorem inv_whiskerRight {X Y : C} (f : X ⟢ Y) (Z : C) [IsIso f] :
+    inv (f β–· Z) = inv f β–· Z := by
+  aesop_cat
+
+end MonoidalCategory
 
 /-- The tensor product of two isomorphisms is an isomorphism. -/
 @[simps]
chore: space after ← (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -482,7 +482,7 @@ abbrev ofTensorHom [MonoidalCategoryStruct C]
           tensorHom (rightUnitor X).hom (πŸ™ Y) := by
             aesop_cat) :
       MonoidalCategory C where
-  tensorHom_def := by intros; simp [← id_tensorHom, ←tensorHom_id, ← tensor_comp]
+  tensorHom_def := by intros; simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
   whiskerLeft_id := by intros; simp [← id_tensorHom, ← tensor_id]
   id_whiskerRight := by intros; simp [← tensorHom_id, tensor_id]
   pentagon := pentagon
style: add missing spaces around colons (#8293)

This is not exhaustive

Diff
@@ -213,7 +213,7 @@ theorem whisker_exchange {W X Y Z : C} (f : W ⟢ X) (g : Y ⟢ Z) :
   simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
 
 @[reassoc]
-theorem tensorHom_def' {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) :
+theorem tensorHom_def' {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g : Xβ‚‚ ⟢ Yβ‚‚) :
     f βŠ— g = X₁ ◁ g ≫ f β–· Yβ‚‚ :=
   whisker_exchange f g β–Έ tensorHom_def f g
 
fix(CategoryTheory/Monoidal/Category): correct mathport-ized lemma names (#7923)

tensor_hom_inv_id, which matches tensor_inv_hom_id, was incorrectly renamed during porting to tensorHom_inv_id.

Diff
@@ -407,10 +407,10 @@ theorem inv_hom_id_tensor {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢
 #align category_theory.monoidal_category.inv_hom_id_tensor CategoryTheory.MonoidalCategory.inv_hom_id_tensor
 
 @[reassoc (attr := simp)]
-theorem tensorHom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
+theorem tensor_hom_inv_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f.hom) ≫ (h βŠ— f.inv) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, f.hom_inv_id, comp_tensor_id]
-#align category_theory.monoidal_category.tensor_hom_inv_id CategoryTheory.MonoidalCategory.tensorHom_inv_id
+#align category_theory.monoidal_category.tensor_hom_inv_id CategoryTheory.MonoidalCategory.tensor_hom_inv_id
 
 @[reassoc (attr := simp)]
 theorem tensor_inv_hom_id {V W X Y Z : C} (f : V β‰… W) (g : X ⟢ Y) (h : Y ⟢ Z) :
@@ -431,10 +431,10 @@ theorem inv_hom_id_tensor' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 #align category_theory.monoidal_category.inv_hom_id_tensor' CategoryTheory.MonoidalCategory.inv_hom_id_tensor'
 
 @[reassoc (attr := simp)]
-theorem tensorHom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
+theorem tensor_hom_inv_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
     (g βŠ— f) ≫ (h βŠ— inv f) = (g βŠ— πŸ™ V) ≫ (h βŠ— πŸ™ V) := by
   rw [← tensor_comp, IsIso.hom_inv_id, comp_tensor_id]
-#align category_theory.monoidal_category.tensor_hom_inv_id' CategoryTheory.MonoidalCategory.tensorHom_inv_id'
+#align category_theory.monoidal_category.tensor_hom_inv_id' CategoryTheory.MonoidalCategory.tensor_hom_inv_id'
 
 @[reassoc (attr := simp)]
 theorem tensor_inv_hom_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y) (h : Y ⟢ Z) :
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
@@ -47,30 +47,17 @@ The whiskerings are useful when considering simp-normal forms of morphisms in mo
 * <https://stacks.math.columbia.edu/tag/0FFK>.
 -/
 
-
-open CategoryTheory
-
 universe v u
 
-open CategoryTheory
-
 open CategoryTheory.Category
 
 open CategoryTheory.Iso
 
 namespace CategoryTheory
 
-/--
-In a monoidal category, we can take the tensor product of objects, `X βŠ— Y` and of morphisms `f βŠ— g`.
-Tensor product does not need to be strictly associative on objects, but there is a
-specified associator, `Ξ±_ X Y Z : (X βŠ— Y) βŠ— Z β‰… X βŠ— (Y βŠ— Z)`. There is a tensor unit `πŸ™_ C`,
-with specified left and right unitor isomorphisms `Ξ»_ X : πŸ™_ C βŠ— X β‰… X` and `ρ_ X : X βŠ— πŸ™_ C β‰… X`.
-These associators and unitors satisfy the pentagon and triangle equations.
-
-See <https://stacks.math.columbia.edu/tag/0FFK>.
--/
--- Porting note: The Mathport did not translate the temporary notation
-class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
+/-- Auxiliary structure to carry only the data fields of (and provide notation for)
+`MonoidalCategory`. -/
+class MonoidalCategoryStruct (C : Type u) [π’ž : Category.{v} C] where
   /-- curried tensor product of objects -/
   tensorObj : C β†’ C β†’ C
   /-- left whiskering for morphisms -/
@@ -81,69 +68,119 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
   -- By default, it is defined in terms of whiskerings.
   tensorHom {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) : (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚) :=
     whiskerRight f Xβ‚‚ ≫ whiskerLeft Y₁ g
+  /-- The tensor unity in the monoidal structure `πŸ™_ C` -/
+  tensorUnit : C
+  /-- The associator isomorphism `(X βŠ— Y) βŠ— Z ≃ X βŠ— (Y βŠ— Z)` -/
+  associator : βˆ€ X Y Z : C, tensorObj (tensorObj X Y) Z β‰… tensorObj X (tensorObj Y Z)
+  /-- The left unitor: `πŸ™_ C βŠ— X ≃ X` -/
+  leftUnitor : βˆ€ X : C, tensorObj tensorUnit X β‰… X
+  /-- The right unitor: `X βŠ— πŸ™_ C ≃ X` -/
+  rightUnitor : βˆ€ X : C, tensorObj X tensorUnit β‰… X
+
+namespace MonoidalCategory
+
+export MonoidalCategoryStruct
+  (tensorObj whiskerLeft whiskerRight tensorHom tensorUnit associator leftUnitor rightUnitor)
+
+end MonoidalCategory
+
+namespace MonoidalCategory
+
+/-- Notation for `tensorObj`, the tensor product of objects in a monoidal category -/
+scoped infixr:70 " βŠ— " => MonoidalCategoryStruct.tensorObj
+
+/-- Notation for the `whiskerLeft` operator of monoidal categories -/
+scoped infixr:81 " ◁ " => MonoidalCategoryStruct.whiskerLeft
+
+/-- Notation for the `whiskerRight` operator of monoidal categories -/
+scoped infixl:81 " β–· " => MonoidalCategoryStruct.whiskerRight
+
+/-- Notation for `tensorHom`, the tensor product of morphisms in a monoidal category -/
+scoped infixr:70 " βŠ— " => MonoidalCategoryStruct.tensorHom
+
+/-- Notation for `tensorUnit`, the two-sided identity of `βŠ—` -/
+scoped notation "πŸ™_ " C:max => (MonoidalCategoryStruct.tensorUnit : C)
+
+open Lean PrettyPrinter.Delaborator SubExpr in
+/-- Used to ensure that `πŸ™_` notation is used, as the ascription makes this not automatic. -/
+@[delab app.CategoryTheory.MonoidalCategoryStruct.tensorUnit]
+def delabTensorUnit : Delab := whenPPOption getPPNotation do
+  let e ← getExpr
+  guard <| e.isAppOfArity ``MonoidalCategoryStruct.tensorUnit 3
+  let C ← withNaryArg 0 delab
+  `(πŸ™_ $C)
+
+/-- Notation for the monoidal `associator`: `(X βŠ— Y) βŠ— Z) ≃ X βŠ— (Y βŠ— Z)` -/
+scoped notation "Ξ±_" => MonoidalCategoryStruct.associator
+
+/-- Notation for the `leftUnitor`: `πŸ™_C βŠ— X ≃ X` -/
+scoped notation "Ξ»_" => MonoidalCategoryStruct.leftUnitor
+
+/-- Notation for the `rightUnitor`: `X βŠ— πŸ™_C ≃ X` -/
+scoped notation "ρ_" => MonoidalCategoryStruct.rightUnitor
+
+end MonoidalCategory
+
+open MonoidalCategory
+
+/--
+In a monoidal category, we can take the tensor product of objects, `X βŠ— Y` and of morphisms `f βŠ— g`.
+Tensor product does not need to be strictly associative on objects, but there is a
+specified associator, `Ξ±_ X Y Z : (X βŠ— Y) βŠ— Z β‰… X βŠ— (Y βŠ— Z)`. There is a tensor unit `πŸ™_ C`,
+with specified left and right unitor isomorphisms `Ξ»_ X : πŸ™_ C βŠ— X β‰… X` and `ρ_ X : X βŠ— πŸ™_ C β‰… X`.
+These associators and unitors satisfy the pentagon and triangle equations.
+
+See <https://stacks.math.columbia.edu/tag/0FFK>.
+-/
+-- Porting note: The Mathport did not translate the temporary notation
+class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] extends MonoidalCategoryStruct C where
   tensorHom_def {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) :
-    tensorHom f g = whiskerRight f Xβ‚‚ ≫ whiskerLeft Y₁ g := by
+    f βŠ— g = (f β–· Xβ‚‚) ≫ (Y₁ ◁ g) := by
       aesop_cat
   /-- Tensor product of identity maps is the identity: `(πŸ™ X₁ βŠ— πŸ™ Xβ‚‚) = πŸ™ (X₁ βŠ— Xβ‚‚)` -/
-  tensor_id : βˆ€ X₁ Xβ‚‚ : C, tensorHom (πŸ™ X₁) (πŸ™ Xβ‚‚) = πŸ™ (tensorObj X₁ Xβ‚‚) := by aesop_cat
+  tensor_id : βˆ€ X₁ Xβ‚‚ : C, πŸ™ X₁ βŠ— πŸ™ Xβ‚‚ = πŸ™ (X₁ βŠ— Xβ‚‚) := by aesop_cat
   /--
   Composition of tensor products is tensor product of compositions:
   `(f₁ βŠ— g₁) ∘ (fβ‚‚ βŠ— gβ‚‚) = (f₁ ∘ fβ‚‚) βŠ— (g₁ βŠ— gβ‚‚)`
   -/
   tensor_comp :
     βˆ€ {X₁ Y₁ Z₁ Xβ‚‚ Yβ‚‚ Zβ‚‚ : C} (f₁ : X₁ ⟢ Y₁) (fβ‚‚ : Xβ‚‚ ⟢ Yβ‚‚) (g₁ : Y₁ ⟢ Z₁) (gβ‚‚ : Yβ‚‚ ⟢ Zβ‚‚),
-      tensorHom (f₁ ≫ g₁) (fβ‚‚ ≫ gβ‚‚) = tensorHom f₁ fβ‚‚ ≫ tensorHom g₁ gβ‚‚ := by
+      (f₁ ≫ g₁) βŠ— (fβ‚‚ ≫ gβ‚‚) = (f₁ βŠ— fβ‚‚) ≫ (g₁ βŠ— gβ‚‚) := by
     aesop_cat
-  -- Porting note: Adding a prime here, so I can later define `tensorUnit` unprimed with explicit
-  --               argument `C`
-  /-- The tensor unity in the monoidal structure `πŸ™_ C` -/
-  tensorUnit' : C
-  /-- The associator isomorphism `(X βŠ— Y) βŠ— Z ≃ X βŠ— (Y βŠ— Z)` -/
-  associator : βˆ€ X Y Z : C, tensorObj (tensorObj X Y) Z β‰… tensorObj X (tensorObj Y Z)
-  whiskerLeft_id : βˆ€ (X Y : C), whiskerLeft X (πŸ™ Y) = πŸ™ (tensorObj X Y) := by
+  whiskerLeft_id : βˆ€ (X Y : C), X ◁ πŸ™ Y = πŸ™ (X βŠ— Y) := by
     aesop_cat
-  id_whiskerRight : βˆ€ (X Y : C), whiskerRight (πŸ™ X) Y = πŸ™ (tensorObj X Y) := by
+  id_whiskerRight : βˆ€ (X Y : C), πŸ™ X β–· Y = πŸ™ (X βŠ— Y) := by
     aesop_cat
   /-- Naturality of the associator isomorphism: `(f₁ βŠ— fβ‚‚) βŠ— f₃ ≃ f₁ βŠ— (fβ‚‚ βŠ— f₃)` -/
   associator_naturality :
     βˆ€ {X₁ Xβ‚‚ X₃ Y₁ Yβ‚‚ Y₃ : C} (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
+      ((f₁ βŠ— fβ‚‚) βŠ— f₃) ≫ (Ξ±_ Y₁ Yβ‚‚ Y₃).hom = (Ξ±_ X₁ Xβ‚‚ X₃).hom ≫ (f₁ βŠ— (fβ‚‚ βŠ— f₃)) := by
     aesop_cat
-  /-- The left unitor: `πŸ™_ C βŠ— X ≃ X` -/
-  leftUnitor : βˆ€ X : C, tensorObj tensorUnit' X β‰… X
   /--
   Naturality of the left unitor, commutativity of `πŸ™_ C βŠ— X ⟢ πŸ™_ C βŠ— Y ⟢ Y` and `πŸ™_ C βŠ— X ⟢ X ⟢ Y`
   -/
   leftUnitor_naturality :
-    βˆ€ {X Y : C} (f : X ⟢ Y),
-      tensorHom (πŸ™ tensorUnit') f ≫ (leftUnitor Y).hom = (leftUnitor X).hom ≫ f := by
+    βˆ€ {X Y : C} (f : X ⟢ Y), (πŸ™ (πŸ™_ _) βŠ— f) ≫ (Ξ»_ Y).hom = (Ξ»_ X).hom ≫ f := by
     aesop_cat
-  /-- The right unitor: `X βŠ— πŸ™_ C ≃ X` -/
-  rightUnitor : βˆ€ X : C, tensorObj X tensorUnit' β‰… X
   /--
   Naturality of the right unitor: commutativity of `X βŠ— πŸ™_ C ⟢ Y βŠ— πŸ™_ C ⟢ Y` and `X βŠ— πŸ™_ C ⟢ X ⟢ Y`
   -/
   rightUnitor_naturality :
-    βˆ€ {X Y : C} (f : X ⟢ Y),
-      tensorHom f (πŸ™ tensorUnit') ≫ (rightUnitor Y).hom = (rightUnitor X).hom ≫ f := by
+    βˆ€ {X Y : C} (f : X ⟢ Y), (f βŠ— πŸ™ (πŸ™_ _)) ≫ (ρ_ Y).hom = (ρ_ X).hom ≫ f := by
     aesop_cat
   /--
   The pentagon identity relating the isomorphism between `X βŠ— (Y βŠ— (Z βŠ— W))` and `((X βŠ— Y) βŠ— Z) βŠ— W`
   -/
   pentagon :
     βˆ€ W X Y Z : C,
-      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
+      ((Ξ±_ W X Y).hom βŠ— πŸ™ Z) ≫ (Ξ±_ W (X βŠ— Y) Z).hom ≫ (πŸ™ W βŠ— (Ξ±_ X Y Z).hom) =
+        (Ξ±_ (W βŠ— X) Y Z).hom ≫ (Ξ±_ W X (Y βŠ— Z)).hom := by
     aesop_cat
   /--
   The identity relating the isomorphisms between `X βŠ— (πŸ™_C βŠ— Y)`, `(X βŠ— πŸ™_C) βŠ— Y` and `X βŠ— Y`
   -/
   triangle :
-    βˆ€ X Y : C,
-      (associator X tensorUnit' Y).hom ≫ tensorHom (πŸ™ X) (leftUnitor Y).hom =
-        tensorHom (rightUnitor X).hom (πŸ™ Y) := by
+    βˆ€ X Y : C, (Ξ±_ X (πŸ™_ _) Y).hom ≫ (πŸ™ X βŠ— (Ξ»_ Y).hom) = ((ρ_ X).hom βŠ— πŸ™ Y) := by
     aesop_cat
 #align category_theory.monoidal_category CategoryTheory.MonoidalCategory
 
@@ -159,39 +196,8 @@ attribute [reassoc] MonoidalCategory.rightUnitor_naturality
 attribute [reassoc] MonoidalCategory.pentagon
 attribute [reassoc (attr := simp)] MonoidalCategory.triangle
 
--- Porting Note: This is here to make `tensorUnit` explicitly depend on `C`, which was done in
---               Lean 3 using the `[]` notation in the `tensorUnit'` field.
-open CategoryTheory.MonoidalCategory in
-/-- The tensor unity in the monoidal structure `πŸ™_ C` -/
-abbrev MonoidalCategory.tensorUnit (C : Type u) [Category.{v} C] [MonoidalCategory C] : C :=
-  tensorUnit' (C := C)
-
 namespace MonoidalCategory
 
-/-- Notation for `tensorObj`, the tensor product of objects in a monoidal category -/
-scoped infixr:70 " βŠ— " => tensorObj
-
-/-- Notation for the `whiskerLeft` operator of monoidal categories -/
-scoped infixr:81 " ◁ " => whiskerLeft
-
-/-- Notation for the `whiskerRight` operator of monoidal categories -/
-scoped infixl:81 " β–· " => whiskerRight
-
-/-- Notation for `tensorHom`, the tensor product of morphisms in a monoidal category -/
-scoped infixr:70 " βŠ— " => tensorHom
-
-/-- Notation for `tensorUnit`, the two-sided identity of `βŠ—` -/
-scoped notation "πŸ™_" => tensorUnit
-
-/-- Notation for the monoidal `associator`: `(X βŠ— Y) βŠ— Z) ≃ X βŠ— (Y βŠ— Z)` -/
-scoped notation "Ξ±_" => associator
-
-/-- Notation for the `leftUnitor`: `πŸ™_C βŠ— X ≃ X` -/
-scoped notation "Ξ»_" => leftUnitor
-
-/-- Notation for the `rightUnitor`: `X βŠ— πŸ™_C ≃ X` -/
-scoped notation "ρ_" => rightUnitor
-
 variable {C : Type u} [π’ž : Category.{v} C] [MonoidalCategory C]
 
 theorem id_tensorHom (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) :
@@ -440,13 +446,7 @@ theorem tensor_inv_hom_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
 A constructor for monoidal categories that requires `tensorHom` instead of `whiskerLeft` and
 `whiskerRight`.
 -/
-def ofTensorHom
-    (tensorObj : C β†’ C β†’ C)
-    (tensorHom : βˆ€ {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C}, (X₁ ⟢ Y₁) β†’ (Xβ‚‚ ⟢ Yβ‚‚) β†’ (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚))
-    (whiskerLeft : βˆ€ (X : C) {Y₁ Yβ‚‚ : C}  (_f : Y₁ ⟢ Yβ‚‚), tensorObj X Y₁ ⟢ tensorObj X Yβ‚‚ :=
-      fun X _ _ f ↦ tensorHom (πŸ™ X) f)
-    (whiskerRight : βˆ€ {X₁ Xβ‚‚ : C} (_f : X₁ ⟢ Xβ‚‚) (Y : C), tensorObj X₁ Y ⟢ tensorObj Xβ‚‚ Y :=
-      fun f Y ↦ tensorHom f (πŸ™ Y))
+abbrev ofTensorHom [MonoidalCategoryStruct C]
     (tensor_id : βˆ€ X₁ Xβ‚‚ : C, tensorHom (πŸ™ X₁) (πŸ™ Xβ‚‚) = πŸ™ (tensorObj X₁ Xβ‚‚) := by
       aesop_cat)
     (id_tensorHom : βˆ€ (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚), tensorHom (πŸ™ X) f = whiskerLeft X f := by
@@ -457,22 +457,18 @@ def ofTensorHom
       βˆ€ {X₁ Y₁ Z₁ Xβ‚‚ Yβ‚‚ Zβ‚‚ : C} (f₁ : X₁ ⟢ Y₁) (fβ‚‚ : Xβ‚‚ ⟢ Yβ‚‚) (g₁ : Y₁ ⟢ Z₁) (gβ‚‚ : Yβ‚‚ ⟢ Zβ‚‚),
         tensorHom (f₁ ≫ g₁) (fβ‚‚ ≫ gβ‚‚) = tensorHom f₁ fβ‚‚ ≫ tensorHom g₁ gβ‚‚ := by
           aesop_cat)
-    (tensorUnit' : C)
-    (associator : βˆ€ X Y Z : C, tensorObj (tensorObj X Y) Z β‰… tensorObj X (tensorObj Y Z))
     (associator_naturality :
       βˆ€ {X₁ Xβ‚‚ X₃ Y₁ Yβ‚‚ Y₃ : C} (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
             aesop_cat)
-    (leftUnitor : βˆ€ X : C, tensorObj tensorUnit' X β‰… X)
     (leftUnitor_naturality :
       βˆ€ {X Y : C} (f : X ⟢ Y),
-        tensorHom (πŸ™ tensorUnit') f ≫ (leftUnitor Y).hom = (leftUnitor X).hom ≫ f := by
+        tensorHom (πŸ™ tensorUnit) f ≫ (leftUnitor Y).hom = (leftUnitor X).hom ≫ f := by
           aesop_cat)
-    (rightUnitor : βˆ€ X : C, tensorObj X tensorUnit' β‰… X)
     (rightUnitor_naturality :
       βˆ€ {X Y : C} (f : X ⟢ Y),
-        tensorHom f (πŸ™ tensorUnit') ≫ (rightUnitor Y).hom = (rightUnitor X).hom ≫ f := by
+        tensorHom f (πŸ™ tensorUnit) ≫ (rightUnitor Y).hom = (rightUnitor X).hom ≫ f := by
           aesop_cat)
     (pentagon :
       βˆ€ W X Y Z : C,
@@ -482,23 +478,15 @@ def ofTensorHom
             aesop_cat)
     (triangle :
       βˆ€ X Y : C,
-        (associator X tensorUnit' Y).hom ≫ tensorHom (πŸ™ X) (leftUnitor Y).hom =
+        (associator X tensorUnit Y).hom ≫ tensorHom (πŸ™ X) (leftUnitor Y).hom =
           tensorHom (rightUnitor X).hom (πŸ™ Y) := by
             aesop_cat) :
       MonoidalCategory C where
-  tensorObj := tensorObj
-  tensorHom := tensorHom
-  whiskerLeft X _ _ f := whiskerLeft X f
-  whiskerRight f X := whiskerRight f X
   tensorHom_def := by intros; simp [← id_tensorHom, ←tensorHom_id, ← tensor_comp]
-  tensorUnit' := tensorUnit'
-  leftUnitor := leftUnitor
-  rightUnitor := rightUnitor
-  associator := associator
   whiskerLeft_id := by intros; simp [← id_tensorHom, ← tensor_id]
   id_whiskerRight := by intros; simp [← tensorHom_id, tensor_id]
-  pentagon := by intros; simp [← id_tensorHom, ← tensorHom_id, pentagon]
-  triangle := by intros; simp [← id_tensorHom, ← tensorHom_id, triangle]
+  pentagon := pentagon
+  triangle := triangle
 
 end
 
@@ -713,14 +701,14 @@ variable (Cβ‚‚ : Type uβ‚‚) [Category.{vβ‚‚} Cβ‚‚] [MonoidalCategory.{vβ‚‚} Cβ‚‚
 
 attribute [local simp] associator_naturality leftUnitor_naturality rightUnitor_naturality pentagon
 
-@[simps! tensorObj tensorHom tensorUnit' associator]
+@[simps! tensorObj tensorHom tensorUnit associator]
 instance prodMonoidal : MonoidalCategory (C₁ Γ— Cβ‚‚) where
   tensorObj X Y := (X.1 βŠ— Y.1, X.2 βŠ— Y.2)
   tensorHom f g := (f.1 βŠ— g.1, f.2 βŠ— g.2)
   whiskerLeft X _ _ f := (whiskerLeft X.1 f.1, whiskerLeft X.2 f.2)
   whiskerRight f X := (whiskerRight f.1 X.1, whiskerRight f.2 X.2)
   tensorHom_def := by simp [tensorHom_def]
-  tensorUnit' := (πŸ™_ C₁, πŸ™_ Cβ‚‚)
+  tensorUnit := (πŸ™_ C₁, πŸ™_ Cβ‚‚)
   associator X Y Z := (Ξ±_ X.1 Y.1 Z.1).prod (Ξ±_ X.2 Y.2 Z.2)
   leftUnitor := fun ⟨X₁, Xβ‚‚βŸ© => (Ξ»_ X₁).prod (Ξ»_ Xβ‚‚)
   rightUnitor := fun ⟨X₁, Xβ‚‚βŸ© => (ρ_ X₁).prod (ρ_ Xβ‚‚)
refactor: purge aesop_cat_nonterminal (#7505)

aesop_cat_nonterminal is a non-terminal variant of aesop. It's not supposed to be used in production code since it's even worse than non-terminal simp. However, there were a few occurrences left (presumably from the port), which this PR removes.

The only nontrivial change is that I add mathlib's rfl tactic to the CategoryTheory Aesop rule set.

Diff
@@ -244,8 +244,7 @@ instance tensor_isIso {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso
 @[simp]
 theorem inv_tensor {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso g] :
     inv (f βŠ— g) = inv f βŠ— inv g := by
-  -- Porting note: Replaced `ext` with `aesop_cat_nonterminal`
-  aesop_cat_nonterminal
+  apply IsIso.inv_eq_of_hom_inv_id
   simp [← tensor_comp]
 #align category_theory.monoidal_category.inv_tensor CategoryTheory.MonoidalCategory.inv_tensor
 
chore: only four spaces for subsequent lines (#7286)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -203,7 +203,7 @@ theorem tensorHom_id {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) :
   simp [tensorHom_def]
 
 theorem whisker_exchange {W X Y Z : C} (f : W ⟢ X) (g : Y ⟢ Z) :
-     W ◁ g ≫ f β–· Z = f β–· Y ≫ X ◁ g := by
+    W ◁ g ≫ f β–· Z = f β–· Y ≫ X ◁ g := by
   simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
 
 @[reassoc]
style: a linter for colons (#6761)

A linter that throws on seeing a colon at the start of a line, according to the style guideline that says these operators should go before linebreaks.

Diff
@@ -292,8 +292,9 @@ theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
 #align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
 
 @[simp]
-theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv
-  := by rw [← leftUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
+theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
+    πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv := by
+  rw [← leftUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
 #align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
 
 @[reassoc]
feat(CategoryTheory/Monoidal): define whiskering operators (#6420)

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

Diff
@@ -21,25 +21,25 @@ The tensor product can be expressed as a functor via `tensor : C Γ— C β₯€ C`.
 The unitors and associator are gathered together as natural
 isomorphisms in `leftUnitor_nat_iso`, `rightUnitor_nat_iso` and `associator_nat_iso`.
 
-Some consequences of the definition are proved in other files,
-e.g. `(Ξ»_ (πŸ™_ C)).hom = (ρ_ (πŸ™_ C)).hom` in `CategoryTheory.Monoidal.UnitorsEqual`.
+Some consequences of the definition are proved in other files after proving the coherence theorem,
+e.g. `(Ξ»_ (πŸ™_ C)).hom = (ρ_ (πŸ™_ C)).hom` in `CategoryTheory.Monoidal.CoherenceLemmas`.
 
-## Implementation
-Dealing with unitors and associators is painful, and at this stage we do not have a useful
-implementation of coherence for monoidal categories.
+## Implementation notes
 
-In an effort to lessen the pain, we put some effort into choosing the right `simp` lemmas.
-Generally, the rule is that the component index of a natural transformation "weighs more"
-in considering the complexity of an expression than does a structural isomorphism (associator, etc).
+In the definition of monoidal categories, we also provide the whiskering operators:
+* `whiskerLeft (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) : X βŠ— Y₁ ⟢ X βŠ— Yβ‚‚`, denoted by `X ◁ f`,
+* `whiskerRight {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) : X₁ βŠ— Y ⟢ Xβ‚‚ βŠ— Y`, denoted by `f β–· Y`.
+These are products of an object and a morphism (the terminology "whiskering"
+is borrowed from 2-category theory). The tensor product of morphisms `tensorHom` can be defined
+in terms of the whiskerings. There are two possible such definitions, which are related by
+the exchange property of the whiskerings. These two definitions are accessed by `tensorHom_def`
+and `tensorHom_def'`. By default, `tensorHom` is defined so that `tensorHom_def` holds
+definitionally.
 
-As an example when we prove Proposition 2.2.4 of
-<http://www-math.mit.edu/~etingof/egnobookfinal.pdf>
-we state it as a `@[simp]` lemma as
-```
-(Ξ»_ (X βŠ— Y)).hom = (Ξ±_ (πŸ™_ C) X Y).inv ≫ (Ξ»_ X).hom βŠ— (πŸ™ Y)
-```
+If you want to provide `tensorHom` and define `whiskerLeft` and `whiskerRight` in terms of it,
+you can use the alternative constructor `CategoryTheory.MonoidalCategory.ofTensorHom`.
 
-This is far from completely effective, but seems to prove a useful principle.
+The whiskerings are useful when considering simp-normal forms of morphisms in monoidal categories.
 
 ## References
 * Tensor categories, Etingof, Gelaki, Nikshych, Ostrik,
@@ -73,8 +73,17 @@ See <https://stacks.math.columbia.edu/tag/0FFK>.
 class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
   /-- curried tensor product of objects -/
   tensorObj : C β†’ C β†’ C
-  /-- curried tensor product of morphisms -/
-  tensorHom : βˆ€ {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C}, (X₁ ⟢ Y₁) β†’ (Xβ‚‚ ⟢ Yβ‚‚) β†’ (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚)
+  /-- left whiskering for morphisms -/
+  whiskerLeft (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) : tensorObj X Y₁ ⟢ tensorObj X Yβ‚‚
+  /-- right whiskering for morphisms -/
+  whiskerRight {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) : tensorObj X₁ Y ⟢ tensorObj Xβ‚‚ Y
+  /-- Tensor product of identity maps is the identity: `(πŸ™ X₁ βŠ— πŸ™ Xβ‚‚) = πŸ™ (X₁ βŠ— Xβ‚‚)` -/
+  -- By default, it is defined in terms of whiskerings.
+  tensorHom {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) : (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚) :=
+    whiskerRight f Xβ‚‚ ≫ whiskerLeft Y₁ g
+  tensorHom_def {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) :
+    tensorHom f g = whiskerRight f Xβ‚‚ ≫ whiskerLeft Y₁ g := by
+      aesop_cat
   /-- Tensor product of identity maps is the identity: `(πŸ™ X₁ βŠ— πŸ™ Xβ‚‚) = πŸ™ (X₁ βŠ— Xβ‚‚)` -/
   tensor_id : βˆ€ X₁ Xβ‚‚ : C, tensorHom (πŸ™ X₁) (πŸ™ Xβ‚‚) = πŸ™ (tensorObj X₁ Xβ‚‚) := by aesop_cat
   /--
@@ -87,29 +96,33 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
     aesop_cat
   -- Porting note: Adding a prime here, so I can later define `tensorUnit` unprimed with explicit
   --               argument `C`
-  /-- The tensor unity in the monoidal structure `πŸ™_C` -/
+  /-- The tensor unity in the monoidal structure `πŸ™_ C` -/
   tensorUnit' : C
   /-- The associator isomorphism `(X βŠ— Y) βŠ— Z ≃ X βŠ— (Y βŠ— Z)` -/
   associator : βˆ€ X Y Z : C, tensorObj (tensorObj X Y) Z β‰… tensorObj X (tensorObj Y Z)
+  whiskerLeft_id : βˆ€ (X Y : C), whiskerLeft X (πŸ™ Y) = πŸ™ (tensorObj X Y) := by
+    aesop_cat
+  id_whiskerRight : βˆ€ (X Y : C), whiskerRight (πŸ™ X) Y = πŸ™ (tensorObj X Y) := by
+    aesop_cat
   /-- Naturality of the associator isomorphism: `(f₁ βŠ— fβ‚‚) βŠ— f₃ ≃ f₁ βŠ— (fβ‚‚ βŠ— f₃)` -/
   associator_naturality :
     βˆ€ {X₁ Xβ‚‚ X₃ Y₁ Yβ‚‚ Y₃ : C} (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
     aesop_cat
-  /-- The left unitor: `πŸ™_C βŠ— X ≃ X` -/
+  /-- The left unitor: `πŸ™_ C βŠ— X ≃ X` -/
   leftUnitor : βˆ€ X : C, tensorObj tensorUnit' X β‰… X
   /--
-  Naturality of the left unitor, commutativity of `πŸ™_C βŠ— X ⟢ πŸ™_C βŠ— Y ⟢ Y` and `πŸ™_C βŠ— X ⟢ X ⟢ Y`
+  Naturality of the left unitor, commutativity of `πŸ™_ C βŠ— X ⟢ πŸ™_ C βŠ— Y ⟢ Y` and `πŸ™_ C βŠ— X ⟢ X ⟢ Y`
   -/
   leftUnitor_naturality :
     βˆ€ {X Y : C} (f : X ⟢ Y),
       tensorHom (πŸ™ tensorUnit') f ≫ (leftUnitor Y).hom = (leftUnitor X).hom ≫ f := by
     aesop_cat
-  /-- The right unitor: `X βŠ— πŸ™_C ≃ X` -/
+  /-- The right unitor: `X βŠ— πŸ™_ C ≃ X` -/
   rightUnitor : βˆ€ X : C, tensorObj X tensorUnit' β‰… X
   /--
-  Naturality of the right unitor: commutativity of `X βŠ— πŸ™_C ⟢ Y βŠ— πŸ™_C ⟢ Y` and `X βŠ— πŸ™_C ⟢ X ⟢ Y`
+  Naturality of the right unitor: commutativity of `X βŠ— πŸ™_ C ⟢ Y βŠ— πŸ™_ C ⟢ Y` and `X βŠ— πŸ™_ C ⟢ X ⟢ Y`
   -/
   rightUnitor_naturality :
     βˆ€ {X Y : C} (f : X ⟢ Y),
@@ -134,6 +147,9 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
     aesop_cat
 #align category_theory.monoidal_category CategoryTheory.MonoidalCategory
 
+attribute [reassoc] MonoidalCategory.tensorHom_def
+attribute [reassoc, simp] MonoidalCategory.whiskerLeft_id
+attribute [reassoc, simp] MonoidalCategory.id_whiskerRight
 attribute [simp] MonoidalCategory.tensor_id
 attribute [reassoc] MonoidalCategory.tensor_comp
 attribute [simp] MonoidalCategory.tensor_comp
@@ -146,7 +162,7 @@ attribute [reassoc (attr := simp)] MonoidalCategory.triangle
 -- Porting Note: This is here to make `tensorUnit` explicitly depend on `C`, which was done in
 --               Lean 3 using the `[]` notation in the `tensorUnit'` field.
 open CategoryTheory.MonoidalCategory in
-/-- The tensor unity in the monoidal structure `πŸ™_C` -/
+/-- The tensor unity in the monoidal structure `πŸ™_ C` -/
 abbrev MonoidalCategory.tensorUnit (C : Type u) [Category.{v} C] [MonoidalCategory C] : C :=
   tensorUnit' (C := C)
 
@@ -155,6 +171,12 @@ namespace MonoidalCategory
 /-- Notation for `tensorObj`, the tensor product of objects in a monoidal category -/
 scoped infixr:70 " βŠ— " => tensorObj
 
+/-- Notation for the `whiskerLeft` operator of monoidal categories -/
+scoped infixr:81 " ◁ " => whiskerLeft
+
+/-- Notation for the `whiskerRight` operator of monoidal categories -/
+scoped infixl:81 " β–· " => whiskerRight
+
 /-- Notation for `tensorHom`, the tensor product of morphisms in a monoidal category -/
 scoped infixr:70 " βŠ— " => tensorHom
 
@@ -170,6 +192,25 @@ scoped notation "Ξ»_" => leftUnitor
 /-- Notation for the `rightUnitor`: `X βŠ— πŸ™_C ≃ X` -/
 scoped notation "ρ_" => rightUnitor
 
+variable {C : Type u} [π’ž : Category.{v} C] [MonoidalCategory C]
+
+theorem id_tensorHom (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚) :
+    (πŸ™ X) βŠ— f = X ◁ f := by
+  simp [tensorHom_def]
+
+theorem tensorHom_id {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C) :
+    f βŠ— (πŸ™ Y) = f β–· Y := by
+  simp [tensorHom_def]
+
+theorem whisker_exchange {W X Y Z : C} (f : W ⟢ X) (g : Y ⟢ Z) :
+     W ◁ g ≫ f β–· Z = f β–· Y ≫ X ◁ g := by
+  simp [← id_tensorHom, ← tensorHom_id, ← tensor_comp]
+
+@[reassoc]
+theorem tensorHom_def' {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C} (f : X₁ ⟢ Y₁) (g: Xβ‚‚ ⟢ Yβ‚‚) :
+    f βŠ— g = X₁ ◁ g ≫ f β–· Yβ‚‚ :=
+  whisker_exchange f g β–Έ tensorHom_def f g
+
 end MonoidalCategory
 
 open scoped MonoidalCategory
@@ -395,6 +436,70 @@ theorem tensor_inv_hom_id' {V W X Y Z : C} (f : V ⟢ W) [IsIso f] (g : X ⟢ Y)
   rw [← tensor_comp, IsIso.inv_hom_id, comp_tensor_id]
 #align category_theory.monoidal_category.tensor_inv_hom_id' CategoryTheory.MonoidalCategory.tensor_inv_hom_id'
 
+/--
+A constructor for monoidal categories that requires `tensorHom` instead of `whiskerLeft` and
+`whiskerRight`.
+-/
+def ofTensorHom
+    (tensorObj : C β†’ C β†’ C)
+    (tensorHom : βˆ€ {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C}, (X₁ ⟢ Y₁) β†’ (Xβ‚‚ ⟢ Yβ‚‚) β†’ (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚))
+    (whiskerLeft : βˆ€ (X : C) {Y₁ Yβ‚‚ : C}  (_f : Y₁ ⟢ Yβ‚‚), tensorObj X Y₁ ⟢ tensorObj X Yβ‚‚ :=
+      fun X _ _ f ↦ tensorHom (πŸ™ X) f)
+    (whiskerRight : βˆ€ {X₁ Xβ‚‚ : C} (_f : X₁ ⟢ Xβ‚‚) (Y : C), tensorObj X₁ Y ⟢ tensorObj Xβ‚‚ Y :=
+      fun f Y ↦ tensorHom f (πŸ™ Y))
+    (tensor_id : βˆ€ X₁ Xβ‚‚ : C, tensorHom (πŸ™ X₁) (πŸ™ Xβ‚‚) = πŸ™ (tensorObj X₁ Xβ‚‚) := by
+      aesop_cat)
+    (id_tensorHom : βˆ€ (X : C) {Y₁ Yβ‚‚ : C} (f : Y₁ ⟢ Yβ‚‚), tensorHom (πŸ™ X) f = whiskerLeft X f := by
+      aesop_cat)
+    (tensorHom_id : βˆ€ {X₁ Xβ‚‚ : C} (f : X₁ ⟢ Xβ‚‚) (Y : C), tensorHom f (πŸ™ Y) = whiskerRight f Y := by
+      aesop_cat)
+    (tensor_comp :
+      βˆ€ {X₁ Y₁ Z₁ Xβ‚‚ Yβ‚‚ Zβ‚‚ : C} (f₁ : X₁ ⟢ Y₁) (fβ‚‚ : Xβ‚‚ ⟢ Yβ‚‚) (g₁ : Y₁ ⟢ Z₁) (gβ‚‚ : Yβ‚‚ ⟢ Zβ‚‚),
+        tensorHom (f₁ ≫ g₁) (fβ‚‚ ≫ gβ‚‚) = tensorHom f₁ fβ‚‚ ≫ tensorHom g₁ gβ‚‚ := by
+          aesop_cat)
+    (tensorUnit' : C)
+    (associator : βˆ€ X Y Z : C, tensorObj (tensorObj X Y) Z β‰… tensorObj X (tensorObj Y Z))
+    (associator_naturality :
+      βˆ€ {X₁ Xβ‚‚ X₃ Y₁ Yβ‚‚ Y₃ : C} (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
+            aesop_cat)
+    (leftUnitor : βˆ€ X : C, tensorObj tensorUnit' X β‰… X)
+    (leftUnitor_naturality :
+      βˆ€ {X Y : C} (f : X ⟢ Y),
+        tensorHom (πŸ™ tensorUnit') f ≫ (leftUnitor Y).hom = (leftUnitor X).hom ≫ f := by
+          aesop_cat)
+    (rightUnitor : βˆ€ X : C, tensorObj X tensorUnit' β‰… X)
+    (rightUnitor_naturality :
+      βˆ€ {X Y : C} (f : X ⟢ Y),
+        tensorHom f (πŸ™ tensorUnit') ≫ (rightUnitor Y).hom = (rightUnitor X).hom ≫ f := by
+          aesop_cat)
+    (pentagon :
+      βˆ€ W X Y Z : C,
+        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
+            aesop_cat)
+    (triangle :
+      βˆ€ X Y : C,
+        (associator X tensorUnit' Y).hom ≫ tensorHom (πŸ™ X) (leftUnitor Y).hom =
+          tensorHom (rightUnitor X).hom (πŸ™ Y) := by
+            aesop_cat) :
+      MonoidalCategory C where
+  tensorObj := tensorObj
+  tensorHom := tensorHom
+  whiskerLeft X _ _ f := whiskerLeft X f
+  whiskerRight f X := whiskerRight f X
+  tensorHom_def := by intros; simp [← id_tensorHom, ←tensorHom_id, ← tensor_comp]
+  tensorUnit' := tensorUnit'
+  leftUnitor := leftUnitor
+  rightUnitor := rightUnitor
+  associator := associator
+  whiskerLeft_id := by intros; simp [← id_tensorHom, ← tensor_id]
+  id_whiskerRight := by intros; simp [← tensorHom_id, tensor_id]
+  pentagon := by intros; simp [← id_tensorHom, ← tensorHom_id, pentagon]
+  triangle := by intros; simp [← id_tensorHom, ← tensorHom_id, triangle]
+
 end
 
 section
@@ -612,6 +717,9 @@ attribute [local simp] associator_naturality leftUnitor_naturality rightUnitor_n
 instance prodMonoidal : MonoidalCategory (C₁ Γ— Cβ‚‚) where
   tensorObj X Y := (X.1 βŠ— Y.1, X.2 βŠ— Y.2)
   tensorHom f g := (f.1 βŠ— g.1, f.2 βŠ— g.2)
+  whiskerLeft X _ _ f := (whiskerLeft X.1 f.1, whiskerLeft X.2 f.2)
+  whiskerRight f X := (whiskerRight f.1 X.1, whiskerRight f.2 X.2)
+  tensorHom_def := by simp [tensorHom_def]
   tensorUnit' := (πŸ™_ C₁, πŸ™_ Cβ‚‚)
   associator X Y Z := (Ξ±_ X.1 Y.1 Z.1).prod (Ξ±_ X.2 Y.2 Z.2)
   leftUnitor := fun ⟨X₁, Xβ‚‚βŸ© => (Ξ»_ X₁).prod (Ξ»_ Xβ‚‚)
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,14 +2,11 @@
 Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison, Bhavik Mehta, Jakob von Raumer
-
-! This file was ported from Lean 3 source module category_theory.monoidal.category
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Products.Basic
 
+#align_import category_theory.monoidal.category from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
+
 /-!
 # Monoidal categories
 
chore: convert lambda in docs to fun (#5045)

Found with git grep -n "Ξ» [a-zA-Z_ ]*,"

Diff
@@ -445,13 +445,13 @@ theorem rightAssocTensor_map {X Y} (f : X ⟢ Y) : (rightAssocTensor C).map f =
   rfl
 #align category_theory.monoidal_category.right_assoc_tensor_map CategoryTheory.MonoidalCategory.rightAssocTensor_map
 
-/-- The functor `Ξ» X, πŸ™_ C βŠ— X`. -/
+/-- The functor `fun X ↦ πŸ™_ C βŠ— X`. -/
 def tensorUnitLeft : C β₯€ C where
   obj X := πŸ™_ C βŠ— X
   map {X Y : C} (f : X ⟢ Y) := πŸ™ (πŸ™_ C) βŠ— f
 #align category_theory.monoidal_category.tensor_unit_left CategoryTheory.MonoidalCategory.tensorUnitLeft
 
-/-- The functor `Ξ» X, X βŠ— πŸ™_ C`. -/
+/-- The functor `fun X ↦ X βŠ— πŸ™_ C`. -/
 def tensorUnitRight : C β₯€ C where
   obj X := X βŠ— πŸ™_ C
   map {X Y : C} (f : X ⟢ Y) := f βŠ— πŸ™ (πŸ™_ C)
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -543,7 +543,7 @@ variable (C : Type u) [Category.{v} C] [MonoidalCategory.{v} C]
 
 /-- Tensoring on the left, as a functor from `C` into endofunctors of `C`.
 
-TODO: show this is a op-monoidal functor.
+TODO: show this is an op-monoidal functor.
 -/
 @[simps]
 def tensoringLeft : C β₯€ C β₯€ C where
feat: port CategoryTheory.Bicategory.CoherenceTactic (#4610)

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

Diff
@@ -137,42 +137,13 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
     aesop_cat
 #align category_theory.monoidal_category CategoryTheory.MonoidalCategory
 
--- Porting Note: `restate_axiom` doesn't seem to be necessary in Lean 4
--- restate_axiom MonoidalCategory.tensor_id'
-
 attribute [simp] MonoidalCategory.tensor_id
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.tensor_comp'
-
 attribute [reassoc] MonoidalCategory.tensor_comp
-
--- This would be redundant in the simp set.
 attribute [simp] MonoidalCategory.tensor_comp
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.associator_naturality'
-
 attribute [reassoc] MonoidalCategory.associator_naturality
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.leftUnitor_naturality'
-
 attribute [reassoc] MonoidalCategory.leftUnitor_naturality
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.rightUnitor_naturality'
-
 attribute [reassoc] MonoidalCategory.rightUnitor_naturality
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.pentagon'
-
--- Porting Note: same as above
--- restate_axiom MonoidalCategory.triangle'
-
 attribute [reassoc] MonoidalCategory.pentagon
-
 attribute [reassoc (attr := simp)] MonoidalCategory.triangle
 
 -- Porting Note: This is here to make `tensorUnit` explicitly depend on `C`, which was done in
@@ -182,31 +153,30 @@ open CategoryTheory.MonoidalCategory in
 abbrev MonoidalCategory.tensorUnit (C : Type u) [Category.{v} C] [MonoidalCategory C] : C :=
   tensorUnit' (C := C)
 
-open MonoidalCategory
+namespace MonoidalCategory
 
--- mathport name: tensor_obj
 /-- Notation for `tensorObj`, the tensor product of objects in a monoidal category -/
-infixr:70 " βŠ— " => tensorObj
+scoped infixr:70 " βŠ— " => tensorObj
 
--- mathport name: tensor_hom
 /-- Notation for `tensorHom`, the tensor product of morphisms in a monoidal category -/
-infixr:70 " βŠ— " => tensorHom
+scoped infixr:70 " βŠ— " => tensorHom
 
--- mathport name: Β«exprπŸ™_Β»
 /-- Notation for `tensorUnit`, the two-sided identity of `βŠ—` -/
-notation "πŸ™_" => tensorUnit
+scoped notation "πŸ™_" => tensorUnit
 
--- mathport name: exprΞ±_
 /-- Notation for the monoidal `associator`: `(X βŠ— Y) βŠ— Z) ≃ X βŠ— (Y βŠ— Z)` -/
-notation "Ξ±_" => associator
+scoped notation "Ξ±_" => associator
 
--- mathport name: Β«exprΞ»_Β»
 /-- Notation for the `leftUnitor`: `πŸ™_C βŠ— X ≃ X` -/
-notation "Ξ»_" => leftUnitor
+scoped notation "Ξ»_" => leftUnitor
 
--- mathport name: exprρ_
 /-- Notation for the `rightUnitor`: `X βŠ— πŸ™_C ≃ X` -/
-notation "ρ_" => rightUnitor
+scoped notation "ρ_" => rightUnitor
+
+end MonoidalCategory
+
+open scoped MonoidalCategory
+open MonoidalCategory
 
 variable (C : Type u) [π’ž : Category.{v} C] [MonoidalCategory C]
 
@@ -220,7 +190,6 @@ def tensorIso {C : Type u} {X Y X' Y' : C} [Category.{v} C] [MonoidalCategory.{v
   inv_hom_id := by rw [← tensor_comp, Iso.inv_hom_id, Iso.inv_hom_id, ← tensor_id]
 #align category_theory.tensor_iso CategoryTheory.tensorIso
 
--- mathport name: tensor_iso
 /-- Notation for `tensorIso`, the tensor product of isomorphisms -/
 infixr:70 " βŠ— " => tensorIso
 
chore: fix typos (#4518)

I ran codespell Mathlib and got tired halfway through the suggestions.

Diff
@@ -78,7 +78,7 @@ class MonoidalCategory (C : Type u) [π’ž : Category.{v} C] where
   tensorObj : C β†’ C β†’ C
   /-- curried tensor product of morphisms -/
   tensorHom : βˆ€ {X₁ Y₁ Xβ‚‚ Yβ‚‚ : C}, (X₁ ⟢ Y₁) β†’ (Xβ‚‚ ⟢ Yβ‚‚) β†’ (tensorObj X₁ Xβ‚‚ ⟢ tensorObj Y₁ Yβ‚‚)
-  /-- Tensor product of identiy maps is the identity: `(πŸ™ X₁ βŠ— πŸ™ Xβ‚‚) = πŸ™ (X₁ βŠ— Xβ‚‚)` -/
+  /-- Tensor product of identity maps is the identity: `(πŸ™ X₁ βŠ— πŸ™ Xβ‚‚) = πŸ™ (X₁ βŠ— Xβ‚‚)` -/
   tensor_id : βˆ€ X₁ Xβ‚‚ : C, tensorHom (πŸ™ X₁) (πŸ™ Xβ‚‚) = πŸ™ (tensorObj X₁ Xβ‚‚) := by aesop_cat
   /--
   Composition of tensor products is tensor product of compositions:
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -255,29 +255,25 @@ theorem dite_tensor {P : Prop} [Decidable P] {W X Y Z : C} (f : W ⟢ X) (g : P
 #align category_theory.monoidal_category.dite_tensor CategoryTheory.MonoidalCategory.dite_tensor
 
 @[reassoc, simp]
-theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) :=
-  by
+theorem comp_tensor_id (f : W ⟢ X) (g : X ⟢ Y) : f ≫ g βŠ— πŸ™ Z = (f βŠ— πŸ™ Z) ≫ (g βŠ— πŸ™ Z) := by
   rw [← tensor_comp]
   simp
 #align category_theory.monoidal_category.comp_tensor_id CategoryTheory.MonoidalCategory.comp_tensor_id
 
 @[reassoc, simp]
-theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) :=
-  by
+theorem id_tensor_comp (f : W ⟢ X) (g : X ⟢ Y) : πŸ™ Z βŠ— f ≫ g = (πŸ™ Z βŠ— f) ≫ (πŸ™ Z βŠ— g) := by
   rw [← tensor_comp]
   simp
 #align category_theory.monoidal_category.id_tensor_comp CategoryTheory.MonoidalCategory.id_tensor_comp
 
 @[reassoc (attr := simp)]
-theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f :=
-  by
+theorem id_tensor_comp_tensor_id (f : W ⟢ X) (g : Y ⟢ Z) : (πŸ™ Y βŠ— f) ≫ (g βŠ— πŸ™ X) = g βŠ— f := by
   rw [← tensor_comp]
   simp
 #align category_theory.monoidal_category.id_tensor_comp_tensor_id CategoryTheory.MonoidalCategory.id_tensor_comp_tensor_id
 
 @[reassoc (attr := simp)]
-theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f :=
-  by
+theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) ≫ (πŸ™ Z βŠ— f) = g βŠ— f := by
   rw [← tensor_comp]
   simp
 #align category_theory.monoidal_category.tensor_id_comp_id_tensor CategoryTheory.MonoidalCategory.tensor_id_comp_id_tensor
@@ -344,8 +340,7 @@ theorem triangle_assoc_comp_right (X Y : C) :
 
 @[reassoc (attr := simp)]
 theorem triangle_assoc_comp_left_inv (X Y : C) :
-    (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y :=
-  by
+    (πŸ™ X βŠ— (Ξ»_ Y).inv) ≫ (Ξ±_ X (πŸ™_ C) Y).inv = (ρ_ X).inv βŠ— πŸ™ Y := by
   apply (cancel_mono ((ρ_ X).hom βŠ— πŸ™ Y)).1
   simp only [triangle_assoc_comp_right, assoc]
   rw [← id_tensor_comp, Iso.inv_hom_id, ← comp_tensor_id, Iso.inv_hom_id]
@@ -355,8 +350,7 @@ end
 
 @[reassoc]
 theorem associator_inv_naturality {X Y Z X' Y' Z' : C} (f : X ⟢ X') (g : Y ⟢ Y') (h : Z ⟢ Z') :
-    (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) :=
-  by
+    (f βŠ— g βŠ— h) ≫ (Ξ±_ X' Y' Z').inv = (Ξ±_ X Y Z).inv ≫ ((f βŠ— g) βŠ— h) := by
   rw [comp_inv_eq, assoc, associator_naturality]
   simp
 #align category_theory.monoidal_category.associator_inv_naturality CategoryTheory.MonoidalCategory.associator_inv_naturality
@@ -551,8 +545,7 @@ def tensorLeft (X : C) : C β₯€ C where
 tensoring on the left with `Y`, and then again with `X`.
 -/
 def tensorLeftTensor (X Y : C) : tensorLeft (X βŠ— Y) β‰… tensorLeft Y β‹™ tensorLeft X :=
-  NatIso.ofComponents (associator _ _) fun {Z} {Z'} f =>
-    by
+  NatIso.ofComponents (associator _ _) fun {Z} {Z'} f => by
     dsimp
     rw [← tensor_id]
     apply associator_naturality
@@ -618,8 +611,7 @@ variable {C : Type u} [Category.{v} C] [MonoidalCategory.{v} C]
 tensoring on the right with `X`, and then again with `Y`.
 -/
 def tensorRightTensor (X Y : C) : tensorRight (X βŠ— Y) β‰… tensorRight X β‹™ tensorRight Y :=
-  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun {Z} {Z'} f =>
-    by
+  NatIso.ofComponents (fun Z => (associator Z X Y).symm) fun {Z} {Z'} f => by
     dsimp
     rw [← tensor_id]
     apply associator_inv_naturality
@@ -662,64 +654,56 @@ instance prodMonoidal : MonoidalCategory (C₁ Γ— Cβ‚‚) where
 
 @[simp]
 theorem prodMonoidal_leftUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).hom : πŸ™_ _ βŠ— X ⟢ X).1 = (Ξ»_ X.1).hom :=
-  by
+    ((Ξ»_ X).hom : πŸ™_ _ βŠ— X ⟢ X).1 = (Ξ»_ X.1).hom := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_hom_fst CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_fst
 
 @[simp]
 theorem prodMonoidal_leftUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).hom : πŸ™_ _ βŠ— X ⟢ X).2 = (Ξ»_ X.2).hom :=
-  by
+    ((Ξ»_ X).hom : πŸ™_ _ βŠ— X ⟢ X).2 = (Ξ»_ X.2).hom := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_hom_snd CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_snd
 
 @[simp]
 theorem prodMonoidal_leftUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).1 = (Ξ»_ X.1).inv :=
-  by
+    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).1 = (Ξ»_ X.1).inv := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_inv_fst CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_fst
 
 @[simp]
 theorem prodMonoidal_leftUnitor_inv_snd (X : C₁ Γ— Cβ‚‚) :
-    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).2 = (Ξ»_ X.2).inv :=
-  by
+    ((Ξ»_ X).inv : X ⟢ πŸ™_ _ βŠ— X).2 = (Ξ»_ X.2).inv := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_left_unitor_inv_snd CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_inv_snd
 
 @[simp]
 theorem prodMonoidal_rightUnitor_hom_fst (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).hom : X βŠ— πŸ™_ _ ⟢ X).1 = (ρ_ X.1).hom :=
-  by
+    ((ρ_ X).hom : X βŠ— πŸ™_ _ ⟢ X).1 = (ρ_ X.1).hom := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_hom_fst CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_fst
 
 @[simp]
 theorem prodMonoidal_rightUnitor_hom_snd (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).hom : X βŠ— πŸ™_ _ ⟢ X).2 = (ρ_ X.2).hom :=
-  by
+    ((ρ_ X).hom : X βŠ— πŸ™_ _ ⟢ X).2 = (ρ_ X.2).hom := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_hom_snd CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_hom_snd
 
 @[simp]
 theorem prodMonoidal_rightUnitor_inv_fst (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).1 = (ρ_ X.1).inv :=
-  by
+    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).1 = (ρ_ X.1).inv := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_inv_fst CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_fst
 
 @[simp]
 theorem prodMonoidal_rightUnitor_inv_snd (X : C₁ Γ— Cβ‚‚) :
-    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).2 = (ρ_ X.2).inv :=
-  by
+    ((ρ_ X).inv : X ⟢ X βŠ— πŸ™_ _).2 = (ρ_ X.2).inv := by
   cases X
   rfl
 #align category_theory.monoidal_category.prod_monoidal_right_unitor_inv_snd CategoryTheory.MonoidalCategory.prodMonoidal_rightUnitor_inv_snd
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -286,13 +286,11 @@ theorem tensor_id_comp_id_tensor (f : W ⟢ X) (g : Y ⟢ Z) : (g βŠ— πŸ™ W) 
 theorem rightUnitor_conjugation {X Y : C} (f : X ⟢ Y) :
     f βŠ— πŸ™ (πŸ™_ C) = (ρ_ X).hom ≫ f ≫ (ρ_ Y).inv := by
   rw [← rightUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
-
 #align category_theory.monoidal_category.right_unitor_conjugation CategoryTheory.MonoidalCategory.rightUnitor_conjugation
 
 @[simp]
 theorem leftUnitor_conjugation {X Y : C} (f : X ⟢ Y) : πŸ™ (πŸ™_ C) βŠ— f = (Ξ»_ X).hom ≫ f ≫ (Ξ»_ Y).inv
   := by rw [← leftUnitor_naturality_assoc, Iso.hom_inv_id, Category.comp_id]
-
 #align category_theory.monoidal_category.left_unitor_conjugation CategoryTheory.MonoidalCategory.leftUnitor_conjugation
 
 @[reassoc]
fix: do not use nonterminal Aesop for auto-params (#2527)

This commit makes aesop_cat and aesop_graph terminal (i.e. they either solve the goal or fail). This appears to solve issues where non-terminal tactics, when used as auto-params, introduce unknown universe variables. See

https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Goal.20state.20not.20updating.2C.20bugs.2C.20etc.2E

Since there are some intended nonterminal uses of aesop_cat, we introduce aesop_cat_nonterminal as the nonterminal equivalent of aesop_cat.

Diff
@@ -237,8 +237,8 @@ instance tensor_isIso {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso
 @[simp]
 theorem inv_tensor {W X Y Z : C} (f : W ⟢ X) [IsIso f] (g : Y ⟢ Z) [IsIso g] :
     inv (f βŠ— g) = inv f βŠ— inv g := by
-  -- Porting note: Replaced `ext` with `aesop_cat`
-  aesop_cat
+  -- Porting note: Replaced `ext` with `aesop_cat_nonterminal`
+  aesop_cat_nonterminal
   simp [← tensor_comp]
 #align category_theory.monoidal_category.inv_tensor CategoryTheory.MonoidalCategory.inv_tensor
 
feat: port CategoryTheory.Monoidal.Category (#2318)

Dependencies 15

16 files ported (100.0%)
4509 lines ported (100.0%)

All dependencies are ported!