File: Mathlib/Tactic/CategoryTheory/MonoidalComp.lean

full_name: CategoryTheory.MonoidalCoherence.hom
code: /--
A typeclass carrying a choice of monoidal structural isomorphism between two objects.
Used by the `⊗≫` monoidal composition operator, and the `coherence` tactic.
-/
-- We could likely turn this into a `Prop` valued existential if that proves useful.
class MonoidalCoherence (X Y : C) where
  /-- A monoidal structural isomorphism between two objects. -/
  hom : X ⟶ Y
  [isIso : IsIso hom]
goal: X ⟶ Y

full_name: CategoryTheory.MonoidalCoherence
code: /--
A typeclass carrying a choice of monoidal structural isomorphism between two objects.
Used by the `⊗≫` monoidal composition operator, and the `coherence` tactic.
-/
-- We could likely turn this into a `Prop` valued existential if that proves useful.
class MonoidalCoherence (X Y : C) where
  /-- A monoidal structural isomorphism between two objects. -/
  hom : X ⟶ Y
  [isIso : IsIso hom]
goal: Type v

full_name: CategoryTheory.MonoidalCoherence.isIso
code: /--
A typeclass carrying a choice of monoidal structural isomorphism between two objects.
Used by the `⊗≫` monoidal composition operator, and the `coherence` tactic.
-/
-- We could likely turn this into a `Prop` valued existential if that proves useful.
class MonoidalCoherence (X Y : C) where
  /-- A monoidal structural isomorphism between two objects. -/
  hom : X ⟶ Y
  [isIso : IsIso hom]
goal: CategoryTheory.IsIso ⊗𝟙

full_name: CategoryTheory.MonoidalCategory._aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___unexpand_CategoryTheory_MonoidalCoherence_hom_1
code: /-- Notation for identities up to unitors and associators. -/
scoped[CategoryTheory.MonoidalCategory] notation " ⊗𝟙 " =>
  MonoidalCoherence.hom
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.MonoidalCategory.«_aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___macroRules_CategoryTheory_MonoidalCategory_term⊗𝟙_1»
code: /-- Notation for identities up to unitors and associators. -/
scoped[CategoryTheory.MonoidalCategory] notation " ⊗𝟙 " =>
  MonoidalCoherence.hom
goal: Lean.Macro

full_name: CategoryTheory.monoidalIso
code: /-- Construct an isomorphism between two objects in a monoidal category
out of unitors and associators. -/
def monoidalIso (X Y : C) [MonoidalCoherence X Y] : X ≅ Y 
goal: X ≅ Y

full_name: CategoryTheory.monoidalComp
code: /-- Compose two morphisms in a monoidal category,
inserting unitors and associators between as necessary. -/
def monoidalComp {W X Y Z : C} [MonoidalCoherence X Y] (f : W ⟶ X) (g : Y ⟶ Z) : W ⟶ Z 
goal: W ⟶ Z

full_name: CategoryTheory.MonoidalCategory.«_aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___macroRules_CategoryTheory_MonoidalCategory_term_⊗≫__1»
code: @[inherit_doc monoidalComp]
scoped[CategoryTheory.MonoidalCategory] infixr:80 " ⊗≫ " =>
  monoidalComp
goal: Lean.Macro

full_name: CategoryTheory.MonoidalCategory._aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___unexpand_CategoryTheory_monoidalComp_1
code: @[inherit_doc monoidalComp]
scoped[CategoryTheory.MonoidalCategory] infixr:80 " ⊗≫ " =>
  monoidalComp
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.monoidalIsoComp
code: /-- Compose two isomorphisms in a monoidal category,
inserting unitors and associators between as necessary. -/
def monoidalIsoComp {W X Y Z : C} [MonoidalCoherence X Y] (f : W ≅ X) (g : Y ≅ Z) : W ≅ Z 
goal: W ≅ Z

full_name: CategoryTheory.MonoidalCategory._aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___unexpand_CategoryTheory_monoidalIsoComp_1
code: @[inherit_doc monoidalIsoComp]
scoped[CategoryTheory.MonoidalCategory] infixr:80 " ≪⊗≫ " =>
  monoidalIsoComp
goal: Lean.PrettyPrinter.Unexpander

full_name: CategoryTheory.MonoidalCategory.«_aux_Mathlib_Tactic_CategoryTheory_MonoidalComp___macroRules_CategoryTheory_MonoidalCategory_term_≪⊗≫__1»
code: @[inherit_doc monoidalIsoComp]
scoped[CategoryTheory.MonoidalCategory] infixr:80 " ≪⊗≫ " =>
  monoidalIsoComp
goal: Lean.Macro

full_name: CategoryTheory.MonoidalCoherence.refl
code: @[simps]
instance refl (X : C) : MonoidalCoherence X X 
goal: CategoryTheory.MonoidalCoherence X X

full_name: CategoryTheory.MonoidalCoherence.refl_hom
code: @[simps]
instance refl (X : C) : MonoidalCoherence X X 
goal:  ⊗𝟙 = 𝟙 X

full_name: CategoryTheory.MonoidalCoherence.whiskerLeft
code: @[simps]
instance whiskerLeft (X Y Z : C) [MonoidalCoherence Y Z] :
    MonoidalCoherence (X ⊗ Y) (X ⊗ Z) 
goal: CategoryTheory.MonoidalCoherence (X ⊗ Y) (X ⊗ Z)

full_name: CategoryTheory.MonoidalCoherence.whiskerLeft_hom
code: @[simps]
instance whiskerLeft (X Y Z : C) [MonoidalCoherence Y Z] :
    MonoidalCoherence (X ⊗ Y) (X ⊗ Z) 
goal:  ⊗𝟙 = X ◁ ⊗𝟙

full_name: CategoryTheory.MonoidalCoherence.whiskerRight_hom
code: @[simps]
instance whiskerRight (X Y Z : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (X ⊗ Z) (Y ⊗ Z) 
goal:  ⊗𝟙 = ⊗𝟙 ▷ Z

full_name: CategoryTheory.MonoidalCoherence.whiskerRight
code: @[simps]
instance whiskerRight (X Y Z : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (X ⊗ Z) (Y ⊗ Z) 
goal: CategoryTheory.MonoidalCoherence (X ⊗ Z) (Y ⊗ Z)

full_name: CategoryTheory.MonoidalCoherence.tensor_right
code: @[simps]
instance tensor_right (X Y : C) [MonoidalCoherence (𝟙_ C) Y] :
    MonoidalCoherence X (X ⊗ Y) 
goal: CategoryTheory.MonoidalCoherence X (X ⊗ Y)

full_name: CategoryTheory.MonoidalCoherence.tensor_right_hom
code: @[simps]
instance tensor_right (X Y : C) [MonoidalCoherence (𝟙_ C) Y] :
    MonoidalCoherence X (X ⊗ Y) 
goal:  ⊗𝟙 = (ρ_ X).inv ≫ X ◁ ⊗𝟙

full_name: CategoryTheory.MonoidalCoherence.tensor_right'_hom
code: @[simps]
instance tensor_right' (X Y : C) [MonoidalCoherence Y (𝟙_ C)] :
    MonoidalCoherence (X ⊗ Y) X 
goal:  ⊗𝟙 = X ◁ ⊗𝟙 ≫ (ρ_ X).hom

full_name: CategoryTheory.MonoidalCoherence.tensor_right'
code: @[simps]
instance tensor_right' (X Y : C) [MonoidalCoherence Y (𝟙_ C)] :
    MonoidalCoherence (X ⊗ Y) X 
goal: CategoryTheory.MonoidalCoherence (X ⊗ Y) X

full_name: CategoryTheory.MonoidalCoherence.left
code: @[simps]
instance left (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (𝟙_ C ⊗ X) Y 
goal: CategoryTheory.MonoidalCoherence (𝟙_ C ⊗ X) Y

full_name: CategoryTheory.MonoidalCoherence.left_hom
code: @[simps]
instance left (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (𝟙_ C ⊗ X) Y 
goal:  ⊗𝟙 = (λ_ X).hom ≫ ⊗𝟙

full_name: CategoryTheory.MonoidalCoherence.left'_hom
code: @[simps]
instance left' (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence X (𝟙_ C ⊗ Y) 
goal:  ⊗𝟙 = ⊗𝟙 ≫ (λ_ Y).inv

full_name: CategoryTheory.MonoidalCoherence.left'
code: @[simps]
instance left' (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence X (𝟙_ C ⊗ Y) 
goal: CategoryTheory.MonoidalCoherence X (𝟙_ C ⊗ Y)

full_name: CategoryTheory.MonoidalCoherence.right
code: @[simps]
instance right (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (X ⊗ 𝟙_ C) Y 
goal: CategoryTheory.MonoidalCoherence (X ⊗ 𝟙_ C) Y

full_name: CategoryTheory.MonoidalCoherence.right_hom
code: @[simps]
instance right (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence (X ⊗ 𝟙_ C) Y 
goal:  ⊗𝟙 = (ρ_ X).hom ≫ ⊗𝟙

full_name: CategoryTheory.MonoidalCoherence.right'
code: @[simps]
instance right' (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence X (Y ⊗ 𝟙_ C) 
goal: CategoryTheory.MonoidalCoherence X (Y ⊗ 𝟙_ C)

full_name: CategoryTheory.MonoidalCoherence.right'_hom
code: @[simps]
instance right' (X Y : C) [MonoidalCoherence X Y] :
    MonoidalCoherence X (Y ⊗ 𝟙_ C) 
goal:  ⊗𝟙 = ⊗𝟙 ≫ (ρ_ Y).inv

full_name: CategoryTheory.MonoidalCoherence.assoc
code: @[simps]
instance assoc (X Y Z W : C) [MonoidalCoherence (X ⊗ (Y ⊗ Z)) W] :
    MonoidalCoherence ((X ⊗ Y) ⊗ Z) W 
goal: CategoryTheory.MonoidalCoherence ((X ⊗ Y) ⊗ Z) W

full_name: CategoryTheory.MonoidalCoherence.assoc_hom
code: @[simps]
instance assoc (X Y Z W : C) [MonoidalCoherence (X ⊗ (Y ⊗ Z)) W] :
    MonoidalCoherence ((X ⊗ Y) ⊗ Z) W 
goal:  ⊗𝟙 = (α_ X Y Z).hom ≫ ⊗𝟙

full_name: CategoryTheory.MonoidalCoherence.assoc'
code: @[simps]
instance assoc' (W X Y Z : C) [MonoidalCoherence W (X ⊗ (Y ⊗ Z))] :
    MonoidalCoherence W ((X ⊗ Y) ⊗ Z) 
goal: CategoryTheory.MonoidalCoherence W ((X ⊗ Y) ⊗ Z)

full_name: CategoryTheory.MonoidalCoherence.assoc'_hom
code: @[simps]
instance assoc' (W X Y Z : C) [MonoidalCoherence W (X ⊗ (Y ⊗ Z))] :
    MonoidalCoherence W ((X ⊗ Y) ⊗ Z) 
goal:  ⊗𝟙 = ⊗𝟙 ≫ (α_ X Y Z).inv

full_name: CategoryTheory.monoidalComp_refl
code: @[simp] lemma monoidalComp_refl {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) :
    f ⊗≫ g = f ≫ g 
goal: f ⊗≫ g = f ≫ g