Theorem: CategoryTheory.LaxMonoidalFunctor.ofTensorHom_ε
File: Mathlib/CategoryTheory/Monoidal/Functor.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : C ⥤ D
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
μ : (X Y : C) → F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
μ_natural :
  autoParam (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g)) _auto✝
associativity :
  autoParam
    (∀ (X Y Z : C),
      (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
        (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z))
    _auto✝
left_unitality : autoParam (∀ (X : C), (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom) _auto✝
right_unitality : autoParam (∀ (X : C), (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom) _auto✝
X✝ Y✝ : C
f : X✝ ⟶ Y✝
X' : C
⊢ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map f ▷
        { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X' ≫
      μ Y✝ X' =
    μ X✝ X' ≫ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map (f ▷ X')
state_after: no goals
tactic: simp_rw [← tensorHom_id, ← F.map_id, μ_natural]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : C ⥤ D
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
μ : (X Y : C) → F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
μ_natural :
  autoParam (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g)) _auto✝
associativity :
  autoParam
    (∀ (X Y Z : C),
      (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
        (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z))
    _auto✝
left_unitality : autoParam (∀ (X : C), (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom) _auto✝
right_unitality : autoParam (∀ (X : C), (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom) _auto✝
X✝ Y✝ X' : C
f : X✝ ⟶ Y✝
⊢ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X' ◁
        { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map f ≫
      μ X' Y✝ =
    μ X' X✝ ≫ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map (X' ◁ f)
state_after: no goals
tactic: simp_rw [← id_tensorHom, ← F.map_id, μ_natural]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : C ⥤ D
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
μ : (X Y : C) → F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
μ_natural :
  autoParam (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g)) _auto✝
associativity :
  autoParam
    (∀ (X Y Z : C),
      (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
        (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z))
    _auto✝
left_unitality : autoParam (∀ (X : C), (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom) _auto✝
right_unitality : autoParam (∀ (X : C), (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom) _auto✝
X Y Z : C
⊢ μ X Y ▷ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj Z ≫
      μ (X ⊗ Y) Z ≫ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map (α_ X Y Z).hom =
    (α_ ({ obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X)
          ({ obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj Y)
          ({ obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj Z)).hom ≫
      { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z)
state_after: no goals
tactic: simp_rw [← tensorHom_id, ← id_tensorHom, associativity]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : C ⥤ D
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
μ : (X Y : C) → F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
μ_natural :
  autoParam (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g)) _auto✝
associativity :
  autoParam
    (∀ (X Y Z : C),
      (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
        (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z))
    _auto✝
left_unitality : autoParam (∀ (X : C), (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom) _auto✝
right_unitality : autoParam (∀ (X : C), (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom) _auto✝
X : C
⊢ (λ_ ({ obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X)).hom =
    ε ▷ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X ≫
      μ (𝟙_ C) X ≫ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map (λ_ X).hom
state_after: no goals
tactic: simp_rw [← tensorHom_id, left_unitality]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : C ⥤ D
ε : 𝟙_ D ⟶ F.obj (𝟙_ C)
μ : (X Y : C) → F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y)
μ_natural :
  autoParam (∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'), (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g)) _auto✝
associativity :
  autoParam
    (∀ (X Y Z : C),
      (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
        (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z))
    _auto✝
left_unitality : autoParam (∀ (X : C), (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom) _auto✝
right_unitality : autoParam (∀ (X : C), (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom) _auto✝
X : C
⊢ (ρ_ ({ obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X)).hom =
    { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.obj X ◁ ε ≫
      μ X (𝟙_ C) ≫ { obj := F.obj, map := fun {X Y} => F.map, map_id := ⋯, map_comp := ⋯ }.map (ρ_ X).hom
state_after: no goals
tactic: simp_rw [← id_tensorHom, right_unitality]