-- Mathlib/Algebra/Lie/BaseChange.lean
theorem bracket_leibniz_lie (x y : A ⊗[R] L) (z : A ⊗[R] M) :
    ⁅x, ⁅y, z⁆⁆ = ⁅⁅x, y⁆, z⁆ + ⁅y, ⁅x, z⁆⁆

Proof state:
case refine_2.refine_2
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
a₁ : A
l₁ : L
a₂ : A
l₂ : L
⊢ ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
      (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) z) =
    ((LieAlgebra.ExtendScalars.bracket' R A L M)
          (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
        z +
      ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
        (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) z)

Tactic:
refine z.induction_on ?_ ?_ ?_

Result:
case refine_2.refine_2.refine_1
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
a₁ : A
l₁ : L
a₂ : A
l₂ : L
⊢ ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
      (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) 0) =
    ((LieAlgebra.ExtendScalars.bracket' R A L M)
          (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
        0 +
      ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
        (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) 0)

case refine_2.refine_2.refine_2
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
a₁ : A
l₁ : L
a₂ : A
l₂ : L
⊢ ∀ (x : A) (y : M),
    ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
        (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) (x ⊗ₜ[R] y)) =
      ((LieAlgebra.ExtendScalars.bracket' R A L M)
            (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
          (x ⊗ₜ[R] y) +
        ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
          (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) (x ⊗ₜ[R] y))

case refine_2.refine_2.refine_3
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
a₁ : A
l₁ : L
a₂ : A
l₂ : L
⊢ ∀ (x y : A ⊗[R] M),
    ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
          (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) x) =
        ((LieAlgebra.ExtendScalars.bracket' R A L M)
              (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
            x +
          ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
            (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) x) →
      ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
            (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) y) =
          ((LieAlgebra.ExtendScalars.bracket' R A L M)
                (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
              y +
            ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
              (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) y) →
        ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁))
            (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂)) (x + y)) =
          ((LieAlgebra.ExtendScalars.bracket' R A L M)
                (((LieAlgebra.ExtendScalars.bracket' R A L L) (a₁ ⊗ₜ[R] l₁)) (a₂ ⊗ₜ[R] l₂)))
              (x + y) +
            ((LieAlgebra.ExtendScalars.bracket' R A L M) (a₂ ⊗ₜ[R] l₂))
              (((LieAlgebra.ExtendScalars.bracket' R A L M) (a₁ ⊗ₜ[R] l₁)) (x + y))

Proof state:
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
⊢ ((LieAlgebra.ExtendScalars.bracket' R A L M) x) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
    ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) x) y)) z +
      ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) x) z)

Tactic:
refine x.induction_on ?_ ?_ ?_

Result:
case refine_1
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
⊢ ((LieAlgebra.ExtendScalars.bracket' R A L M) 0) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
    ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) 0) y)) z +
      ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) 0) z)

case refine_2
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
⊢ ∀ (x : A) (y_1 : L),
    ((LieAlgebra.ExtendScalars.bracket' R A L M) (x ⊗ₜ[R] y_1)) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
      ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) (x ⊗ₜ[R] y_1)) y)) z +
        ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) (x ⊗ₜ[R] y_1)) z)

case refine_3
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x y : A ⊗[R] L
z : A ⊗[R] M
⊢ ∀ (x y_1 : A ⊗[R] L),
    ((LieAlgebra.ExtendScalars.bracket' R A L M) x) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
        ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) x) y)) z +
          ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) x) z) →
      ((LieAlgebra.ExtendScalars.bracket' R A L M) y_1) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
          ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) y_1) y)) z +
            ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) y_1) z) →
        ((LieAlgebra.ExtendScalars.bracket' R A L M) (x + y_1)) (((LieAlgebra.ExtendScalars.bracket' R A L M) y) z) =
          ((LieAlgebra.ExtendScalars.bracket' R A L M) (((LieAlgebra.ExtendScalars.bracket' R A L L) (x + y_1)) y)) z +
            ((LieAlgebra.ExtendScalars.bracket' R A L M) y) (((LieAlgebra.ExtendScalars.bracket' R A L M) (x + y_1)) z)