-- Module: Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
Goal:
R : Type r
inst : CommRing R
W' : Projective R
P Q : Fin 3 → R
hP : W'.Equation P
hQ : W'.Equation Q
hx : P x * Q z = Q x * P z
a :
  P z * Q z * (P y * Q z - Q y * P z) * (P y * Q z - (-Q y - W'.a₁ * Q x - W'.a₃ * Q z) * P z) +
        (HPow.hPow (β := ℕ) (Q z) 3 * 0 +
            HPow.hPow (β := ℕ) (P z) 3 *
              (HPow.hPow (β := ℕ) (Q y) 2 * Q z + W'.a₁ * Q x * Q y * Q z + W'.a₃ * Q y * HPow.hPow (β := ℕ) (Q z) 2 -
                (HPow.hPow (β := ℕ) (Q x) 3 + W'.a₂ * HPow.hPow (β := ℕ) (Q x) 2 * Q z +
                    W'.a₄ * Q x * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₆ * HPow.hPow (β := ℕ) (Q z) 3)) +
          (HPow.hPow (β := ℕ) (P x) 2 * HPow.hPow (β := ℕ) (Q z) 2 + P x * Q x * P z * Q z +
                      HPow.hPow (β := ℕ) (Q x) 2 * HPow.hPow (β := ℕ) (P z) 2 -
                    W'.a₁ * P y * P z * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₂ * P x * HPow.hPow (β := ℕ) (Q z) 2 * P z +
                W'.a₂ * Q x * HPow.hPow (β := ℕ) (P z) 2 * Q z +
              W'.a₄ * HPow.hPow (β := ℕ) (P z) 2 * HPow.hPow (β := ℕ) (Q z) 2) *
            (Q x * P z)) -
      (0 +
        (HPow.hPow (β := ℕ) (Q z) 3 *
              (HPow.hPow (β := ℕ) (P y) 2 * P z + W'.a₁ * P x * P y * P z + W'.a₃ * P y * HPow.hPow (β := ℕ) (P z) 2 -
                (HPow.hPow (β := ℕ) (P x) 3 + W'.a₂ * HPow.hPow (β := ℕ) (P x) 2 * P z +
                    W'.a₄ * P x * HPow.hPow (β := ℕ) (P z) 2 +
                  W'.a₆ * HPow.hPow (β := ℕ) (P z) 3)) +
            HPow.hPow (β := ℕ) (P z) 3 * 0 +
          (HPow.hPow (β := ℕ) (P x) 2 * HPow.hPow (β := ℕ) (Q z) 2 + P x * Q x * P z * Q z +
                      HPow.hPow (β := ℕ) (Q x) 2 * HPow.hPow (β := ℕ) (P z) 2 -
                    W'.a₁ * P y * P z * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₂ * P x * HPow.hPow (β := ℕ) (Q z) 2 * P z +
                W'.a₂ * Q x * HPow.hPow (β := ℕ) (P z) 2 * Q z +
              W'.a₄ * HPow.hPow (β := ℕ) (P z) 2 * HPow.hPow (β := ℕ) (Q z) 2) *
            (P x * Q z))) =
    0
⊢ P z * Q z * (P y * Q z - Q y * P z) * (P y * Q z - W'.negY Q * P z) +
        (HPow.hPow (β := ℕ) (Q z) 3 * 0 +
            HPow.hPow (β := ℕ) (P z) 3 *
              (HPow.hPow (β := ℕ) (Q y) 2 * Q z + W'.a₁ * Q x * Q y * Q z + W'.a₃ * Q y * HPow.hPow (β := ℕ) (Q z) 2 -
                (HPow.hPow (β := ℕ) (Q x) 3 + W'.a₂ * HPow.hPow (β := ℕ) (Q x) 2 * Q z +
                    W'.a₄ * Q x * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₆ * HPow.hPow (β := ℕ) (Q z) 3)) +
          (HPow.hPow (β := ℕ) (P x) 2 * HPow.hPow (β := ℕ) (Q z) 2 + P x * Q x * P z * Q z +
                      HPow.hPow (β := ℕ) (Q x) 2 * HPow.hPow (β := ℕ) (P z) 2 -
                    W'.a₁ * P y * P z * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₂ * P x * HPow.hPow (β := ℕ) (Q z) 2 * P z +
                W'.a₂ * Q x * HPow.hPow (β := ℕ) (P z) 2 * Q z +
              W'.a₄ * HPow.hPow (β := ℕ) (P z) 2 * HPow.hPow (β := ℕ) (Q z) 2) *
            (Q x * P z)) -
      (0 +
        (HPow.hPow (β := ℕ) (Q z) 3 *
              (HPow.hPow (β := ℕ) (P y) 2 * P z + W'.a₁ * P x * P y * P z + W'.a₃ * P y * HPow.hPow (β := ℕ) (P z) 2 -
                (HPow.hPow (β := ℕ) (P x) 3 + W'.a₂ * HPow.hPow (β := ℕ) (P x) 2 * P z +
                    W'.a₄ * P x * HPow.hPow (β := ℕ) (P z) 2 +
                  W'.a₆ * HPow.hPow (β := ℕ) (P z) 3)) +
            HPow.hPow (β := ℕ) (P z) 3 * 0 +
          (HPow.hPow (β := ℕ) (P x) 2 * HPow.hPow (β := ℕ) (Q z) 2 + P x * Q x * P z * Q z +
                      HPow.hPow (β := ℕ) (Q x) 2 * HPow.hPow (β := ℕ) (P z) 2 -
                    W'.a₁ * P y * P z * HPow.hPow (β := ℕ) (Q z) 2 +
                  W'.a₂ * P x * HPow.hPow (β := ℕ) (Q z) 2 * P z +
                W'.a₂ * Q x * HPow.hPow (β := ℕ) (P z) 2 * Q z +
              W'.a₄ * HPow.hPow (β := ℕ) (P z) 2 * HPow.hPow (β := ℕ) (Q z) 2) *
            (P x * Q z))) =
    0

Tactic:
rw [negY]

Premises used: WeierstrassCurve.Projective.negY