-- Lean 4 proof step from Mathlib.RingTheory.LocalRing.Module (goal)
Goal:
R : Type u_1
inst : CommRing R
M₁ : Type u_5
M₂ : Type u_6
M₃ : Type u_7
N₁ : Type u_8
N₂ : Type u_9
N₃ : Type u_10
inst_1 : AddCommGroup M₁
inst_2 : Module R M₁
inst_3 : AddCommGroup M₂
inst_4 : Module R M₂
inst_5 : AddCommGroup M₃
inst_6 : Module R M₃
inst_7 : AddCommGroup N₁
inst_8 : Module R N₁
inst_9 : AddCommGroup N₂
inst_10 : Module R N₂
inst_11 : AddCommGroup N₃
inst_12 : Module R N₃
f₁ : M₁ →ₗ[R] M₂
f₂ : M₂ →ₗ[R] M₃
g₁ : N₁ →ₗ[R] N₂
g₂ : N₂ →ₗ[R] N₃
hfexact : Exact.{u_5, u_6, u_7} (M := M₁) (N := M₂) (P := M₃) (⇑f₁ : (a : M₁) → M₂) (⇑f₂ : (a : M₂) → M₃)
hfsurj : Surjective.{u_6 + 1, u_7 + 1} (α := M₂) (β := M₃) (⇑f₂ : (a : M₂) → M₃)
hgexact : Exact.{u_8, u_9, u_10} (M := N₁) (N := N₂) (P := N₃) (⇑g₁ : (a : N₁) → N₂) (⇑g₂ : (a : N₂) → N₃)
hgsurj : Surjective.{u_9 + 1, u_10 + 1} (α := N₂) (β := N₃) (⇑g₂ : (a : N₂) → N₃)
hfinj :
  Function.Injective (α := M₁ ⊗[R] N₃) (β := M₂ ⊗[R] N₃) (⇑(LinearMap.rTensor N₃ f₁) : (a : M₁ ⊗[R] N₃) → M₂ ⊗[R] N₃)
hginj :
  Function.Injective (α := M₂ ⊗[R] N₁) (β := M₂ ⊗[R] N₂) (⇑(LinearMap.lTensor M₂ g₁) : (a : M₂ ⊗[R] N₁) → M₂ ⊗[R] N₂)
x : M₂ ⊗[R] N₁
hx :
  Eq (α := M₃ ⊗[R] N₂)
    ((LinearMap.lTensor M₃ g₁ : (a : M₃ ⊗[R] N₁) → M₃ ⊗[R] N₂)
        ((LinearMap.rTensor N₁ f₂ : (a : M₂ ⊗[R] N₁) → M₃ ⊗[R] N₁) x) :
      M₃ ⊗[R] N₂)
    (0 : M₃ ⊗[R] N₂)
this :
  Eq (α := M₃ ⊗[R] N₂)
    ((LinearMap.rTensor N₂ f₂ : (a : M₂ ⊗[R] N₂) → M₃ ⊗[R] N₂)
        ((LinearMap.lTensor M₂ g₁ : (a : M₂ ⊗[R] N₁) → M₂ ⊗[R] N₂) x) :
      M₃ ⊗[R] N₂)
    (0 : M₃ ⊗[R] N₂)
y : M₁ ⊗[R] N₂
hy :
  Eq (α := M₂ ⊗[R] N₂) ((LinearMap.rTensor N₂ f₁ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₂) y : M₂ ⊗[R] N₂)
    ((LinearMap.lTensor M₂ g₁ : (a : M₂ ⊗[R] N₁) → M₂ ⊗[R] N₂) x : M₂ ⊗[R] N₂)
rw :
  Eq (α := M₂ ⊗[R] N₃)
    ((LinearMap.rTensor N₃ f₁ : (a : M₁ ⊗[R] N₃) → M₂ ⊗[R] N₃)
        ((LinearMap.lTensor M₁ g₂ : (a : M₁ ⊗[R] N₂) → M₁ ⊗[R] N₃) y) :
      M₂ ⊗[R] N₃)
    ((LinearMap.lTensor M₂ g₂ : (a : M₂ ⊗[R] N₂) → M₂ ⊗[R] N₃)
        ((LinearMap.rTensor N₂ f₁ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₂) y) :
      M₂ ⊗[R] N₃)
rw₁ :
  Eq (α := M₂ ⊗[R] N₃)
    ((LinearMap.rTensor N₃ f₁ ∘ₗ LinearMap.lTensor M₁ g₂ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₃) y : M₂ ⊗[R] N₃)
    ((LinearMap.lTensor M₂ g₂ : (a : M₂ ⊗[R] N₂) → M₂ ⊗[R] N₃)
        ((LinearMap.rTensor N₂ f₁ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₂) y) :
      M₂ ⊗[R] N₃)
rw₂ :
  Eq (α := M₂ ⊗[R] N₃)
    ((LinearMap.rTensor N₃ f₁ ∘ₗ LinearMap.lTensor M₁ g₂ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₃) y : M₂ ⊗[R] N₃)
    ((LinearMap.lTensor M₂ g₂ ∘ₗ LinearMap.rTensor N₂ f₁ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₃) y : M₂ ⊗[R] N₃)
⊢ Eq (α := M₂ ⊗[R] N₃)
    ((LinearMap.rTensor N₃ f₁ : (a : M₁ ⊗[R] N₃) → M₂ ⊗[R] N₃)
        ((LinearMap.lTensor M₁ g₂ : (a : M₁ ⊗[R] N₂) → M₁ ⊗[R] N₃) y) :
      M₂ ⊗[R] N₃)
    ((LinearMap.lTensor M₂ g₂ : (a : M₂ ⊗[R] N₂) → M₂ ⊗[R] N₃)
        ((LinearMap.lTensor M₂ g₁ : (a : M₂ ⊗[R] N₁) → M₂ ⊗[R] N₂) x) :
      M₂ ⊗[R] N₃)
have rw₃ : Eq (α := M₂ ⊗[R] N₃) ((map f₁ g₂ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₃) y : M₂ ⊗[R] N₃)
  ((LinearMap.lTensor M₂ g₂ ∘ₗ LinearMap.rTensor N₂ f₁ : (a : M₁ ⊗[R] N₂) → M₂ ⊗[R] N₃) y : M₂ ⊗[R] N₃)
Tactic: rw [← hy, ← LinearMap.comp_apply, ← LinearMap.comp_apply, LinearMap.rTensor_comp_lTensor,
        LinearMap.lTensor_comp_rTensor]