-- Lean 4 proof step from Mathlib.RingTheory.Polynomial.Chebyshev (goal)
Goal:
R : Type u_1
inst : CommRing R
n : ℕ
ih1 :
  (derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) =
    HMul.hMul (α := R[X]) (↑(HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) : R[X]) (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1))
ih2 :
  (derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) =
    HMul.hMul (α := R[X]) (↑(↑n : ℤ) : R[X]) (U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1))
h₂ :
  U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1) = HMul.hMul (α := R[X]) 2 X * U R (↑n : ℤ) - U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)
h₃ :
  T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) =
    U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) - HMul.hMul (α := R[X]) X (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1))
h₁ :
  (derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2)) =
    HSub.hSub (β := R[X])
      ((HMul.hMul (α := R[X]) 0 X + HMul.hMul (α := R[X]) 2 1) * T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) +
        HMul.hMul (β := R[X]) (HMul.hMul (α := R[X]) 2 X)
          ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) : R[X]))
      ((derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) : R[X])
⊢ HAdd.hAdd (α := R[X]) ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2)) : R[X])
        (HAdd.hAdd (β := R[X])
                (HSub.hSub (β := R[X])
                  ((HMul.hMul (α := R[X]) 0 X + HMul.hMul (α := R[X]) 2 1) * T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) +
                    HMul.hMul (β := R[X]) (HMul.hMul (α := R[X]) 2 X)
                      ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) : R[X]))
                  ((derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) : R[X]))
                ((derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) : R[X]) +
              HMul.hMul (α := R[X]) 2 X *
                HMul.hMul (α := R[X]) (↑(HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) : R[X])
                  (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1)) +
            2 *
              (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) -
                HMul.hMul (α := R[X]) X (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1))) +
          HMul.hMul (α := R[X]) (↑n : R[X]) (U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1))) -
      (HMul.hMul (α := R[X]) (↑(HAdd.hAdd (α := ℤ) (↑n : ℤ) 2) : R[X]) (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2 - 1)) +
        (HAdd.hAdd (α := R[X]) ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2)) : R[X])
                (HMul.hMul (α := R[X]) (↑(↑n : ℤ) : R[X]) (U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1))) +
              HMul.hMul (β := R[X]) (HMul.hMul (α := R[X]) 2 X)
                ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) : R[X]) +
            HMul.hMul (α := R[X]) 2 (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) +
          (↑n : R[X]) * (HMul.hMul (α := R[X]) 2 X * U R (↑n : ℤ) - U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)))) =
    0
have a : HAdd.hAdd (α := R[X]) ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2)) : R[X])
      (HAdd.hAdd (β := R[X])
              (HSub.hSub (β := R[X])
                ((HMul.hMul (α := R[X]) 0 X + HMul.hMul (α := R[X]) 2 1) * T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) +
                  HMul.hMul (β := R[X]) (HMul.hMul (α := R[X]) 2 X)
                    ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) : R[X]))
                ((derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) : R[X]))
              ((derivative : (a : R[X]) → R[X]) (T R (↑n : ℤ)) : R[X]) +
            HMul.hMul (α := R[X]) 2 X *
              (HAdd.hAdd (α := R[X]) (↑n : R[X]) 1 * U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1)) +
          2 *
            (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1) - HMul.hMul (α := R[X]) X (U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1 - 1))) +
        HMul.hMul (α := R[X]) (↑n : R[X]) (U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1))) -
    (HAdd.hAdd (α := R[X]) (↑n : R[X]) 2 * U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2 - 1) +
      (HAdd.hAdd (α := R[X]) ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 2)) : R[X])
              (HMul.hMul (α := R[X]) (↑n : R[X]) (U R (HSub.hSub (α := ℤ) (↑n : ℤ) 1))) +
            HMul.hMul (β := R[X]) (HMul.hMul (α := R[X]) 2 X)
              ((derivative : (a : R[X]) → R[X]) (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) : R[X]) +
          HMul.hMul (α := R[X]) 2 (T R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)) +
        (↑n : R[X]) * (HMul.hMul (α := R[X]) 2 X * U R (↑n : ℤ) - U R (HAdd.hAdd (α := ℤ) (↑n : ℤ) 1)))) =
  0
Tactic: push_cast