-- Module: Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
Goal:
R : Type r
S : Type s
inst : CommRing R
inst_1 : CommRing S
W' : Jacobian R
f : R →+* S
P Q : Fin 3 → R
simp :
  -((⇑f : (a : R) → S) ∘ P) y * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) x) 3 *
                                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 3 +
                                          HMul.hMul (α := S) 2 (((⇑f : (a : R) → S) ∘ P) y) *
                                              HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) y) 2 *
                                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 3 -
                                        3 * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) x) 2 *
                                                ((⇑f : (a : R) → S) ∘ Q) x *
                                              ((⇑f : (a : R) → S) ∘ Q) y *
                                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 2 *
                                          ((⇑f : (a : R) → S) ∘ Q) z +
                                      HMul.hMul (α := S) 3 (((⇑f : (a : R) → S) ∘ P) x) * ((⇑f : (a : R) → S) ∘ P) y *
                                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) x) 2 *
                                          ((⇑f : (a : R) → S) ∘ P) z *
                                        HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 2 +
                                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) x) 3 *
                                        ((⇑f : (a : R) → S) ∘ Q) y *
                                      HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 3 -
                                  2 * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) y) 2 *
                                      ((⇑f : (a : R) → S) ∘ Q) y *
                                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 3 +
                                (W'.map f).a₁ * ((⇑f : (a : R) → S) ∘ P) x *
                                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) y) 2 *
                                  HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 4 +
                              (W'.map f).a₁ * ((⇑f : (a : R) → S) ∘ P) y * ((⇑f : (a : R) → S) ∘ Q) x *
                                    ((⇑f : (a : R) → S) ∘ Q) y *
                                  HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 3 *
                                ((⇑f : (a : R) → S) ∘ Q) z -
                            (W'.map f).a₁ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ P) y *
                                  ((⇑f : (a : R) → S) ∘ Q) y *
                                ((⇑f : (a : R) → S) ∘ P) z *
                              HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 3 -
                          (W'.map f).a₁ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) y) 2 *
                              ((⇑f : (a : R) → S) ∘ Q) x *
                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 4 -
                        2 * (W'.map f).a₂ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ Q) x *
                              ((⇑f : (a : R) → S) ∘ Q) y *
                            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 4 *
                          ((⇑f : (a : R) → S) ∘ Q) z +
                      2 * (W'.map f).a₂ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ P) y *
                            ((⇑f : (a : R) → S) ∘ Q) x *
                          ((⇑f : (a : R) → S) ∘ P) z *
                        HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 4 +
                    (W'.map f).a₃ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) y) 2 *
                      HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 6 -
                  (W'.map f).a₃ * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) y) 2 *
                    HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 6 -
                (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) 6 *
                  ((⇑f : (a : R) → S) ∘ Q) z -
              (W'.map f).a₄ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ Q) y *
                  HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 4 *
                HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 3 +
            (W'.map f).a₄ * ((⇑f : (a : R) → S) ∘ P) y * ((⇑f : (a : R) → S) ∘ Q) x *
                HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 3 *
              HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 4 +
          (W'.map f).a₄ * ((⇑f : (a : R) → S) ∘ P) x * ((⇑f : (a : R) → S) ∘ P) y * ((⇑f : (a : R) → S) ∘ P) z *
            HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 6 -
        2 * (W'.map f).a₆ * ((⇑f : (a : R) → S) ∘ Q) y * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 6 *
          HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 3 +
      2 * (W'.map f).a₆ * ((⇑f : (a : R) → S) ∘ P) y * HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ P) z) 3 *
        HPow.hPow (α := S) (β := ℕ) (((⇑f : (a : R) → S) ∘ Q) z) 6 =
    (f : (a : R) → S)
      (-P y * HPow.hPow (β := ℕ) (Q x) 3 * HPow.hPow (β := ℕ) (P z) 3 +
                                            2 * P y * HPow.hPow (β := ℕ) (Q y) 2 * HPow.hPow (β := ℕ) (P z) 3 -
                                          3 * HPow.hPow (β := ℕ) (P x) 2 * Q x * Q y * HPow.hPow (β := ℕ) (P z) 2 *
                                            Q z +
                                        3 * P x * P y * HPow.hPow (β := ℕ) (Q x) 2 * P z * HPow.hPow (β := ℕ) (Q z) 2 +
                                      HPow.hPow (β := ℕ) (P x) 3 * Q y * HPow.hPow (β := ℕ) (Q z) 3 -
                                    2 * HPow.hPow (β := ℕ) (P y) 2 * Q y * HPow.hPow (β := ℕ) (Q z) 3 +
                                  W'.a₁ * P x * HPow.hPow (β := ℕ) (Q y) 2 * HPow.hPow (β := ℕ) (P z) 4 +
                                W'.a₁ * P y * Q x * Q y * HPow.hPow (β := ℕ) (P z) 3 * Q z -
                              W'.a₁ * P x * P y * Q y * P z * HPow.hPow (β := ℕ) (Q z) 3 -
                            W'.a₁ * HPow.hPow (β := ℕ) (P y) 2 * Q x * HPow.hPow (β := ℕ) (Q z) 4 -
                          2 * W'.a₂ * P x * Q x * Q y * HPow.hPow (β := ℕ) (P z) 4 * Q z +
                        2 * W'.a₂ * P x * P y * Q x * P z * HPow.hPow (β := ℕ) (Q z) 4 +
                      W'.a₃ * HPow.hPow (β := ℕ) (Q y) 2 * HPow.hPow (β := ℕ) (P z) 6 -
                    W'.a₃ * HPow.hPow (β := ℕ) (P y) 2 * HPow.hPow (β := ℕ) (Q z) 6 -
                  W'.a₄ * Q x * Q y * HPow.hPow (β := ℕ) (P z) 6 * Q z -
                W'.a₄ * P x * Q y * HPow.hPow (β := ℕ) (P z) 4 * HPow.hPow (β := ℕ) (Q z) 3 +
              W'.a₄ * P y * Q x * HPow.hPow (β := ℕ) (P z) 3 * HPow.hPow (β := ℕ) (Q z) 4 +
            W'.a₄ * P x * P y * P z * HPow.hPow (β := ℕ) (Q z) 6 -
          2 * W'.a₆ * Q y * HPow.hPow (β := ℕ) (P z) 6 * HPow.hPow (β := ℕ) (Q z) 3 +
        2 * W'.a₆ * P y * HPow.hPow (β := ℕ) (P z) 3 * HPow.hPow (β := ℕ) (Q z) 6)
⊢ (W'.map f).negAddY ((⇑f : (a : R) → S) ∘ P) ((⇑f : (a : R) → S) ∘ Q) = (f : (a : R) → S) (W'.negAddY P Q)

Tactic:
simp only [negAddY]

Premises used: WeierstrassCurve.Jacobian.negAddY