-- Lean 4 proof step from Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula (goal)
Goal:
R : Type r
S : Type s
inst : CommRing R
inst_1 : CommRing S
W' : Projective R
f : R →+* S
P Q : Fin 3 → R
⊢ (W'.map f).addX ((⇑f : (a : R) → S) ∘ P) ((⇑f : (a : R) → S) ∘ Q) = (f : (a : R) → S) (W'.addX P Q)
have simp : -((⇑f : (a : R) → S) ∘ P) x * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) y) 2 * ((⇑f : (a : R) → S) ∘ P) z +
                                ((⇑f : (a : R) → S) ∘ Q) x *
                                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) y) 2 *
                                  ((⇑f : (a : R) → S) ∘ Q) z -
                              HMul.hMul (α := S) 2 (((⇑f : (a : R) → S) ∘ P) x) * ((⇑f : (a : R) → S) ∘ P) y *
                                  ((⇑f : (a : R) → S) ∘ Q) y *
                                ((⇑f : (a : R) → S) ∘ Q) z +
                            HMul.hMul (α := S) 2 (((⇑f : (a : R) → S) ∘ Q) x) * ((⇑f : (a : R) → S) ∘ P) y *
                                ((⇑f : (a : R) → S) ∘ Q) y *
                              ((⇑f : (a : R) → S) ∘ P) z -
                          (W'.map f).a₁ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) x) 2 *
                              ((⇑f : (a : R) → S) ∘ Q) y *
                            ((⇑f : (a : R) → S) ∘ Q) z +
                        (W'.map f).a₁ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) x) 2 *
                            ((⇑f : (a : R) → S) ∘ P) y *
                          ((⇑f : (a : R) → S) ∘ P) z +
                      (W'.map f).a₂ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) x) 2 *
                          ((⇑f : (a : R) → S) ∘ Q) x *
                        ((⇑f : (a : R) → S) ∘ Q) z -
                    (W'.map f).a₂ * ((⇑f : (a : R) → S) ∘ P) x *
                        HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) x) 2 *
                      ((⇑f : (a : R) → S) ∘ P) z -
                  (W'.map f).a₃ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ P) y *
                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 2 +
                (W'.map f).a₃ * ((⇑f : (a : R) → S) ∘ Q) x * ((⇑f : (a : R) → S) ∘ Q) y *
                  HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 2 -
              2 * (W'.map f).a₃ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ Q) y * ((⇑f : (a : R) → S) ∘ P) z *
                ((⇑f : (a : R) → S) ∘ Q) z +
            2 * (W'.map f).a₃ * ((⇑f : (a : R) → S) ∘ Q) x * ((⇑f : (a : R) → S) ∘ P) y * ((⇑f : (a : R) → S) ∘ P) z *
              ((⇑f : (a : R) → S) ∘ Q) z +
          (W'.map f).a₄ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) x) 2 *
            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 2 -
        (W'.map f).a₄ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) x) 2 *
          HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 2 +
      3 * (W'.map f).a₆ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ P) z *
        HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 2 -
    3 * (W'.map f).a₆ * ((⇑f : (a : R) → S) ∘ Q) x * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 2 *
      ((⇑f : (a : R) → S) ∘ Q) z =
  (f : (a : R) → S)
    (-P x * HPow.hPow (β := ℕ) (Q y) 2 * P z + Q x * HPow.hPow (β := ℕ) (P y) 2 * Q z - 2 * P x * P y * Q y * Q z +
                              2 * Q x * P y * Q y * P z -
                            W'.a₁ * HPow.hPow (β := ℕ) (P x) 2 * Q y * Q z +
                          W'.a₁ * HPow.hPow (β := ℕ) (Q x) 2 * P y * P z +
                        W'.a₂ * HPow.hPow (β := ℕ) (P x) 2 * Q x * Q z -
                      W'.a₂ * P x * HPow.hPow (β := ℕ) (Q x) 2 * P z -
                    W'.a₃ * P x * P y * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₃ * Q x * Q y * HPow.hPow (β := ℕ) (P z) 2 -
                2 * W'.a₃ * P x * Q y * P z * Q z +
              2 * W'.a₃ * Q x * P y * P z * Q z +
            W'.a₄ * HPow.hPow (β := ℕ) (P x) 2 * HPow.hPow (β := ℕ) (Q z) 2 -
          W'.a₄ * HPow.hPow (β := ℕ) (Q x) 2 * HPow.hPow (β := ℕ) (P z) 2 +
        3 * W'.a₆ * P x * P z * HPow.hPow (β := ℕ) (Q z) 2 -
      3 * W'.a₆ * Q x * HPow.hPow (β := ℕ) (P z) 2 * Q z)
Tactic: simp only [addX]