-- Lean 4 proof step from Mathlib.CategoryTheory.Monoidal.Functor (goal)
Goal:
C : Type u₁
inst : Category.{v₁, u₁} C
inst_1 : MonoidalCategory.{v₁, u₁} C
D : Type u₂
inst_2 : Category.{v₂, u₂} D
inst_3 : MonoidalCategory.{v₂, u₂} D
E : Type u₃
inst_4 : Category.{v₃, u₃} E
inst_5 : MonoidalCategory.{v₃, u₃} E
C' : Type u₁'
inst_6 : Category.{v₁', u₁'} C'
F : Functor.{v₁, v₂, u₁, u₂} C D
G : Functor.{v₂, v₃, u₂, u₃} D E
inst_7 : F.LaxMonoidal
inst_8 : G.LaxMonoidal
X Y x : C
x_1 : X ⟶ Y
simp_rw :
  Eq (α :=
    tensorObj.{v₃, u₃} (𝒞 := inst_4) (G.obj (F.obj x)) (G.obj (F.obj X)) ⟶
      G.obj (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)))
    (G.obj (F.obj x) ◁ (F ⋙ G).map x_1 ≫
      CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) (μ G (F.obj x) (F.obj Y))
        (G.map (μ F x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
        (G.map (μ F x X)) ≫
      (F ⋙ G).map (x ◁ x_1))
simp_rw₁ :
  Eq (α :=
    tensorObj.{v₃, u₃} (𝒞 := inst_4) (G.obj (F.obj x)) (G.obj (F.obj X)) ⟶
      G.obj (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)))
    (G.obj (F.obj x) ◁ G.map (F.map x_1) ≫
      CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) (μ G (F.obj x) (F.obj Y))
        (G.map (μ F x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
        (G.map (μ F x X)) ≫
      G.map (F.map (x ◁ x_1)))
simp_rw₂ :
  Eq (α :=
    tensorObj.{v₃, u₃} (𝒞 := inst_4) (G.obj (F.obj x)) (G.obj (F.obj X)) ⟶
      G.obj (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
      (G.map (F.obj x ◁ F.map x_1) ≫ G.map (μ F x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
        (G.map (μ F x X)) ≫
      G.map (F.map (x ◁ x_1)))
simp_rw₃ :
  Eq (α :=
    tensorObj.{v₃, u₃} (𝒞 := inst_4) (G.obj (F.obj x)) (G.obj (F.obj X)) ⟶
      G.obj (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
      (G.map (F.obj x ◁ F.map x_1) ≫ G.map (μ F x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
      (G.map (μ F x X) ≫ G.map (F.map (x ◁ x_1))))
⊢ Eq (α :=
    tensorObj.{v₃, u₃} (𝒞 := inst_4) ((F ⋙ G).obj x) ((F ⋙ G).obj X) ⟶ (F ⋙ G).obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y))
    ((F ⋙ G).obj x ◁ (F ⋙ G).map x_1 ≫
      CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) (μ G (F.obj x) (F.obj Y))
        (G.map (μ F x Y)))
    (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
        (G.map (μ F x X)) ≫
      (F ⋙ G).map (x ◁ x_1))
have simp_rw₄ : Eq (α :=
  tensorObj.{v₃, u₃} (𝒞 := inst_4) (G.obj (F.obj x)) (G.obj (F.obj X)) ⟶
    G.obj (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)))
  (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
    (G.map (F.obj x ◁ F.map x_1 ≫ μ F x Y)))
  (CategoryStruct.comp (Y := G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) (μ G (F.obj x) (F.obj X))
    (G.map (μ F x X ≫ F.map (x ◁ x_1))))
Tactic: simp_rw [comp_obj, F.comp_map, μ_natural_right_assoc, assoc, ← G.map_comp, μ_natural_right]