Theorem: CategoryTheory.MonoidalNatTrans.hcomp_toNatTrans
File: Mathlib/CategoryTheory/Monoidal/NaturalTransformation.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
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
⊢ (F ⊗⋙ H).ε ≫ __src✝.app (𝟙_ C) = (G ⊗⋙ K).ε
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
⊢ (H.ε ≫ H.map F.ε) ≫ β.app (F.obj (𝟙_ C)) ≫ K.map (α.app (𝟙_ C)) = K.ε ≫ K.map G.ε
tactic: dsimp
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
⊢ (H.ε ≫ H.map F.ε) ≫ β.app (F.obj (𝟙_ C)) ≫ K.map (α.app (𝟙_ C)) = K.ε ≫ K.map G.ε
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
⊢ K.ε ≫ K.map F.ε ≫ K.map (α.app (𝟙_ C)) = K.ε ≫ K.map G.ε
tactic: simp
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
⊢ K.ε ≫ K.map F.ε ≫ K.map (α.app (𝟙_ C)) = K.ε ≫ K.map G.ε
state_after: no goals
tactic: conv_lhs => rw [← K.toFunctor.map_comp, α.unit]
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
X Y : C
⊢ (F ⊗⋙ H).μ X Y ≫ __src✝.app (X ⊗ Y) = (__src✝.app X ⊗ __src✝.app Y) ≫ (G ⊗⋙ K).μ X Y
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
X Y : C
⊢ (H.μ (F.obj X) (F.obj Y) ≫ H.map (F.μ X Y)) ≫ β.app (F.obj (X ⊗ Y)) ≫ K.map (α.app (X ⊗ Y)) =
    (β.app (F.obj X) ≫ K.map (α.app X) ⊗ β.app (F.obj Y) ≫ K.map (α.app Y)) ≫ K.μ (G.obj X) (G.obj Y) ≫ K.map (G.μ X Y)
tactic: dsimp
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
X Y : C
⊢ (H.μ (F.obj X) (F.obj Y) ≫ H.map (F.μ X Y)) ≫ β.app (F.obj (X ⊗ Y)) ≫ K.map (α.app (X ⊗ Y)) =
    (β.app (F.obj X) ≫ K.map (α.app X) ⊗ β.app (F.obj Y) ≫ K.map (α.app Y)) ≫ K.μ (G.obj X) (G.obj Y) ≫ K.map (G.μ X Y)
state_after: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
X Y : C
⊢ (β.app (F.obj X) ⊗ β.app (F.obj Y)) ≫ K.μ (F.obj X) (F.obj Y) ≫ K.map (F.μ X Y) ≫ K.map (α.app (X ⊗ Y)) =
    (β.app (F.obj X) ⊗ β.app (F.obj Y)) ≫ K.μ (F.obj X) (F.obj Y) ≫ K.map (α.app X ⊗ α.app Y) ≫ K.map (G.μ X Y)
tactic: simp
state_before: C : Type u₁
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : MonoidalCategory C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : MonoidalCategory D
E : Type u₃
inst✝¹ : Category.{v₃, u₃} E
inst✝ : MonoidalCategory E
F G : LaxMonoidalFunctor C D
H K : LaxMonoidalFunctor D E
α : MonoidalNatTrans F G
β : MonoidalNatTrans H K
X Y : C
⊢ (β.app (F.obj X) ⊗ β.app (F.obj Y)) ≫ K.μ (F.obj X) (F.obj Y) ≫ K.map (F.μ X Y) ≫ K.map (α.app (X ⊗ Y)) =
    (β.app (F.obj X) ⊗ β.app (F.obj Y)) ≫ K.μ (F.obj X) (F.obj Y) ≫ K.map (α.app X ⊗ α.app Y) ≫ K.map (G.μ X Y)
state_after: no goals
tactic: conv_lhs => rw [← K.toFunctor.map_comp, α.tensor, K.toFunctor.map_comp]