-- Lean 4 proof step from Mathlib.Algebra.Jordan.Basic (goal)
Goal:
A : Type u_1
inst : NonUnitalNonAssocCommRing A
a b c : A
⊢ ⁅HAdd.hAdd (β := AddMonoid.End A)
        (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A) ((L : (a : A) → AddMonoid.End A) a : AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) b : AddMonoid.End A))
        ((L : (a : A) → AddMonoid.End A) c : AddMonoid.End A),
      HAdd.hAdd (β := AddMonoid.End A)
            (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (a * a) : AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A))
            ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A) +
          HAdd.hAdd (β := AddMonoid.End A)
            (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (b * b) : AddMonoid.End A))
            ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A) +
        HAdd.hAdd (β := AddMonoid.End A)
          (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A))
          ((L : (a : A) → AddMonoid.End A) (c * c) : AddMonoid.End A)⁆ =
    ⁅HAdd.hAdd (β := AddMonoid.End A)
        (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A) ((L : (a : A) → AddMonoid.End A) a : AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) b : AddMonoid.End A))
        ((L : (a : A) → AddMonoid.End A) c : AddMonoid.End A),
      HAdd.hAdd (β := AddMonoid.End A)
              (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
                ((L : (a : A) → AddMonoid.End A) (a * a) : AddMonoid.End A)
                ((L : (a : A) → AddMonoid.End A) (b * b) : AddMonoid.End A))
              ((L : (a : A) → AddMonoid.End A) (c * c) : AddMonoid.End A) +
            HSMul.hSMul (α := ℕ) (β := AddMonoid.End A) 2 ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A) +
          HSMul.hSMul (α := ℕ) (β := AddMonoid.End A) 2 ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A) +
        HSMul.hSMul (α := ℕ) (β := AddMonoid.End A) 2 ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A)⁆
have iterate : ⁅HAdd.hAdd (β := AddMonoid.End A)
      (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A) ((L : (a : A) → AddMonoid.End A) a : AddMonoid.End A)
        ((L : (a : A) → AddMonoid.End A) b : AddMonoid.End A))
      ((L : (a : A) → AddMonoid.End A) c : AddMonoid.End A),
    HAdd.hAdd (β := AddMonoid.End A)
          (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * a) : AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A))
          ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A) +
        HAdd.hAdd (β := AddMonoid.End A)
          (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (b * b) : AddMonoid.End A))
          ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A) +
      HAdd.hAdd (β := AddMonoid.End A)
        (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A))
        ((L : (a : A) → AddMonoid.End A) (c * c) : AddMonoid.End A)⁆ =
  ⁅HAdd.hAdd (β := AddMonoid.End A)
      (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A) ((L : (a : A) → AddMonoid.End A) a : AddMonoid.End A)
        ((L : (a : A) → AddMonoid.End A) b : AddMonoid.End A))
      ((L : (a : A) → AddMonoid.End A) c : AddMonoid.End A),
    HAdd.hAdd (β := AddMonoid.End A)
            (HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (a * a) : AddMonoid.End A)
              ((L : (a : A) → AddMonoid.End A) (b * b) : AddMonoid.End A))
            ((L : (a : A) → AddMonoid.End A) (c * c) : AddMonoid.End A) +
          HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A)
            ((L : (a : A) → AddMonoid.End A) (a * b) : AddMonoid.End A) +
        HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A)
          ((L : (a : A) → AddMonoid.End A) (a * c) : AddMonoid.End A) +
      HAdd.hAdd (α := AddMonoid.End A) (β := AddMonoid.End A)
        ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A)
        ((L : (a : A) → AddMonoid.End A) (b * c) : AddMonoid.End A)⁆
Tactic: iterate 3 rw [two_smul]