-- 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 C
adj : F ⊣ G
inst_7 : G.LaxMonoidal
X Y x : C
x_1 : X ⟶ Y
⊢ Eq.{v₂ + 1} (α := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
    (((Equiv.symm
                (adj.homEquiv (tensorObj.{v₁, u₁} (𝒞 := inst) x X)
                  (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) :
              Equiv.{v₁ + 1, v₂ + 1}
                (tensorObj.{v₁, u₁} (𝒞 := inst) x X ⟶ G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X)))
                (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj X))) :
            (a : x ⊗ X ⟶ G.obj (F.obj x ⊗ F.obj X)) → F.obj (x ⊗ X) ⟶ F.obj x ⊗ F.obj X)
          ((adj.unit.app x ⊗ₘ adj.unit.app X) ≫ μ G (F.obj x) (F.obj X)) ≫
        F.obj x ◁ F.map x_1 :
      F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
    (F.map (x ◁ x_1) ≫
        ((Equiv.symm
                (adj.homEquiv (tensorObj.{v₁, u₁} (𝒞 := inst) x Y)
                  (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
              Equiv.{v₁ + 1, v₂ + 1}
                (tensorObj.{v₁, u₁} (𝒞 := inst) x Y ⟶ G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y)))
                (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x Y) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
            (a : x ⊗ Y ⟶ G.obj (F.obj x ⊗ F.obj Y)) → F.obj (x ⊗ Y) ⟶ F.obj x ⊗ F.obj Y)
          ((adj.unit.app x ⊗ₘ adj.unit.app Y) ≫ μ G (F.obj x) (F.obj Y)) :
      F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
have rw : Eq.{v₂ + 1} (α := F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
  (((Equiv.symm
            (adj.homEquiv (tensorObj.{v₁, u₁} (𝒞 := inst) x X) (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
          Equiv.{v₁ + 1, v₂ + 1}
            (tensorObj.{v₁, u₁} (𝒞 := inst) x X ⟶ G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y)))
            (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
        (a : x ⊗ X ⟶ G.obj (F.obj x ⊗ F.obj Y)) → F.obj (x ⊗ X) ⟶ F.obj x ⊗ F.obj Y)
      ((adj.unit.app x ⊗ₘ adj.unit.app X) ≫ G.obj (F.obj x) ◁ G.map (F.map x_1) ≫ μ G (F.obj x) (F.obj Y)) :
    F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
  (((Equiv.symm
            (adj.homEquiv (tensorObj.{v₁, u₁} (𝒞 := inst) x X) (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
          Equiv.{v₁ + 1, v₂ + 1}
            (tensorObj.{v₁, u₁} (𝒞 := inst) x X ⟶ G.obj (tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y)))
            (F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))) :
        (a : x ⊗ X ⟶ G.obj (F.obj x ⊗ F.obj Y)) → F.obj (x ⊗ X) ⟶ F.obj x ⊗ F.obj Y)
      (x ◁ x_1 ≫ (adj.unit.app x ⊗ₘ adj.unit.app Y) ≫ μ G (F.obj x) (F.obj Y)) :
    F.obj (tensorObj.{v₁, u₁} (𝒞 := inst) x X) ⟶ tensorObj.{v₂, u₂} (𝒞 := inst_2) (F.obj x) (F.obj Y))
Tactic: rw [← Adjunction.homEquiv_naturality_right_symm,
      ← Adjunction.homEquiv_naturality_left_symm, assoc, ← μ_natural_right]