Loogle!
Result
Found 269 declarations mentioning WeierstrassCurve.Jacobian. Of these, only the first 200 are shown.
- WeierstrassCurve.Jacobian π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
(R : Type r) : Type r - WeierstrassCurve.toJacobian π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} (W : WeierstrassCurve R) : WeierstrassCurve.Jacobian R - WeierstrassCurve.Jacobian.toAffine π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} (W' : WeierstrassCurve.Jacobian R) : WeierstrassCurve.Affine R - WeierstrassCurve.Jacobian.NonsingularLift π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : WeierstrassCurve.Jacobian.PointClass R) : Prop - WeierstrassCurve.Jacobian.Equation π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : Prop - WeierstrassCurve.Jacobian.Nonsingular π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : Prop - WeierstrassCurve.Jacobian.polynomial π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Jacobian.polynomialX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Jacobian.polynomialY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Jacobian.polynomialZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Jacobian.baseChange π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (S : Type s) [CommRing S] [Algebra R S] : WeierstrassCurve.Jacobian S - WeierstrassCurve.Jacobian.map π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] (f : R β+* S) : WeierstrassCurve.Jacobian S - WeierstrassCurve.Jacobian.equation_of_equiv π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (h : P β Q) : W'.Equation P β W'.Equation Q - WeierstrassCurve.Jacobian.nonsingular_of_equiv π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (h : P β Q) : W'.Nonsingular P β W'.Nonsingular Q - WeierstrassCurve.Jacobian.equation_some π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (a b : R) : W'.Equation ![a, b, 1] β W'.toAffine.Equation a b - WeierstrassCurve.Jacobian.nonsingular_some π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (a b : R) : W'.Nonsingular ![a, b, 1] β W'.toAffine.Nonsingular a b - WeierstrassCurve.Jacobian.equation_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) {u : R} (hu : IsUnit u) : W'.Equation (u β’ P) β W'.Equation P - WeierstrassCurve.Jacobian.nonsingular_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) {u : R} (hu : IsUnit u) : W'.Nonsingular (u β’ P) β W'.Nonsingular P - WeierstrassCurve.Jacobian.equation_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} : W'.Equation ![1, 1, 0] - WeierstrassCurve.Jacobian.nonsingularLift_iff π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.NonsingularLift β¦Pβ§ β W'.Nonsingular P - WeierstrassCurve.Jacobian.nonsingular_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [Nontrivial R] : W'.Nonsingular ![1, 1, 0] - WeierstrassCurve.Jacobian.isUnit_X_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hP : W.Nonsingular P) (hPz : P 2 = 0) : IsUnit (P 0) - WeierstrassCurve.Jacobian.isUnit_Y_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hP : W.Nonsingular P) (hPz : P 2 = 0) : IsUnit (P 1) - WeierstrassCurve.Jacobian.Equation.map π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {S : Type s} [CommRing S] (f : R β+* S) {P : Fin 3 β R} (h : W'.Equation P) : (W'.map f).Equation (βf β P) - WeierstrassCurve.Jacobian.nonsingularLift_some π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (a b : R) : W'.NonsingularLift β¦![a, b, 1]β§ β W'.toAffine.Nonsingular a b - WeierstrassCurve.Jacobian.X_ne_zero_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P : Fin 3 β R} (hP : W'.Nonsingular P) (hPz : P 2 = 0) : P 0 β 0 - WeierstrassCurve.Jacobian.Y_ne_zero_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P : Fin 3 β R} (hP : W'.Nonsingular P) (hPz : P 2 = 0) : P 1 β 0 - WeierstrassCurve.Jacobian.nonsingularLift_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [Nontrivial R] : W'.NonsingularLift β¦![1, 1, 0]β§ - WeierstrassCurve.Jacobian.equiv_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Nonsingular P) (hQ : W.Nonsingular Q) (hPz : P 2 = 0) (hQz : Q 2 = 0) : P β Q - WeierstrassCurve.Jacobian.map_equation π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {f : R β+* S} (hf : Function.Injective βf) (P : Fin 3 β R) : (W'.map f).Equation (βf β P) β W'.Equation P - WeierstrassCurve.Jacobian.map_nonsingular π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {f : R β+* S} (hf : Function.Injective βf) (P : Fin 3 β R) : (W'.map f).Nonsingular (βf β P) β W'.Nonsingular P - WeierstrassCurve.Jacobian.equation_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hPz : P 2 = 0) : W'.Equation P β P 1 ^ 2 = P 0 ^ 3 - WeierstrassCurve.Jacobian.equiv_zero_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hP : W.Nonsingular P) (hPz : P 2 = 0) : P β ![1, 1, 0] - WeierstrassCurve.Jacobian.comp_equiv_comp π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {K : Type v} [Field K] (f : F β+* K) {P Q : Fin 3 β F} (hP : W.Nonsingular P) (hQ : W.Nonsingular Q) : βf β P β βf β Q β P β Q - WeierstrassCurve.Jacobian.equation_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : W.Equation P β W.toAffine.Equation (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) - WeierstrassCurve.Jacobian.nonsingular_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : W.Nonsingular P β W.toAffine.Nonsingular (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) - WeierstrassCurve.Jacobian.Equation.baseChange π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) {P : Fin 3 β A} (h : (W'.baseChange A).Equation P) : (W'.baseChange B).Equation (βf β P) - WeierstrassCurve.Jacobian.map_polynomial π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] (f : R β+* S) : (W'.map f).polynomial = (MvPolynomial.map f) W'.polynomial - WeierstrassCurve.Jacobian.map_polynomialX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] (f : R β+* S) : (W'.map f).polynomialX = (MvPolynomial.map f) W'.polynomialX - WeierstrassCurve.Jacobian.map_polynomialY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] (f : R β+* S) : (W'.map f).polynomialY = (MvPolynomial.map f) W'.polynomialY - WeierstrassCurve.Jacobian.map_polynomialZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] (f : R β+* S) : (W'.map f).polynomialZ = (MvPolynomial.map f) W'.polynomialZ - WeierstrassCurve.Jacobian.baseChange_equation π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] {f : A ββ[S] B} (hf : Function.Injective βf) (P : Fin 3 β A) : (W'.baseChange B).Equation (βf β P) β (W'.baseChange A).Equation P - WeierstrassCurve.Jacobian.baseChange_nonsingular π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] {f : A ββ[S] B} (hf : Function.Injective βf) (P : Fin 3 β A) : (W'.baseChange B).Nonsingular (βf β P) β (W'.baseChange A).Nonsingular P - WeierstrassCurve.Jacobian.map_baseChange π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) : (W'.baseChange A).map βf = W'.baseChange B - WeierstrassCurve.Jacobian.nonsingular_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hPz : P 2 = 0) : W'.Nonsingular P β W'.Equation P β§ (3 * P 0 ^ 2 β 0 β¨ 2 * P 1 β 0 β¨ W'.aβ * P 0 * P 1 β 0) - WeierstrassCurve.Jacobian.eval_polynomialY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : (MvPolynomial.eval P) W'.polynomialY = 2 * P 1 + W'.aβ * P 0 * P 2 + W'.aβ * P 2 ^ 3 - WeierstrassCurve.Jacobian.nonsingular_iff_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : W.Nonsingular P β W.Equation P β§ ((MvPolynomial.eval P) W.polynomialX β 0 β¨ (MvPolynomial.eval P) W.polynomialY β 0) - WeierstrassCurve.Jacobian.eval_polynomialX_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : (MvPolynomial.eval P) W.polynomialX / P 2 ^ 4 = Polynomial.evalEval (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) W.toAffine.polynomialX - WeierstrassCurve.Jacobian.eval_polynomialY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : (MvPolynomial.eval P) W.polynomialY / P 2 ^ 3 = Polynomial.evalEval (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) W.toAffine.polynomialY - WeierstrassCurve.Jacobian.eval_polynomial_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : (MvPolynomial.eval P) W.polynomial / P 2 ^ 6 = Polynomial.evalEval (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) W.toAffine.polynomial - WeierstrassCurve.Jacobian.baseChange_polynomial π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) : (W'.baseChange B).polynomial = (MvPolynomial.map βf) (W'.baseChange A).polynomial - WeierstrassCurve.Jacobian.baseChange_polynomialX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) : (W'.baseChange B).polynomialX = (MvPolynomial.map βf) (W'.baseChange A).polynomialX - WeierstrassCurve.Jacobian.baseChange_polynomialY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) : (W'.baseChange B).polynomialY = (MvPolynomial.map βf) (W'.baseChange A).polynomialY - WeierstrassCurve.Jacobian.baseChange_polynomialZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) {S : Type s} [CommRing S] {A : Type u} [CommRing A] {B : Type v} [CommRing B] [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) : (W'.baseChange B).polynomialZ = (MvPolynomial.map βf) (W'.baseChange A).polynomialZ - WeierstrassCurve.Jacobian.eval_polynomialX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : (MvPolynomial.eval P) W'.polynomialX = W'.aβ * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W'.aβ * P 0 * P 2 ^ 2 + W'.aβ * P 2 ^ 4) - WeierstrassCurve.Jacobian.equation_iff π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.Equation P β P 1 ^ 2 + W'.aβ * P 0 * P 1 * P 2 + W'.aβ * P 1 * P 2 ^ 3 - (P 0 ^ 3 + W'.aβ * P 0 ^ 2 * P 2 ^ 2 + W'.aβ * P 0 * P 2 ^ 4 + W'.aβ * P 2 ^ 6) = 0 - WeierstrassCurve.Jacobian.eval_polynomialZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : (MvPolynomial.eval P) W'.polynomialZ = W'.aβ * P 0 * P 1 + 3 * W'.aβ * P 1 * P 2 ^ 2 - (2 * W'.aβ * P 0 ^ 2 * P 2 + 4 * W'.aβ * P 0 * P 2 ^ 3 + 6 * W'.aβ * P 2 ^ 5) - WeierstrassCurve.Jacobian.polynomial_relation π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : 6 * (MvPolynomial.eval P) W'.polynomial = 2 * P 0 * (MvPolynomial.eval P) W'.polynomialX + 3 * P 1 * (MvPolynomial.eval P) W'.polynomialY + P 2 * (MvPolynomial.eval P) W'.polynomialZ - WeierstrassCurve.Jacobian.eval_polynomial π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : (MvPolynomial.eval P) W'.polynomial = P 1 ^ 2 + W'.aβ * P 0 * P 1 * P 2 + W'.aβ * P 1 * P 2 ^ 3 - (P 0 ^ 3 + W'.aβ * P 0 ^ 2 * P 2 ^ 2 + W'.aβ * P 0 * P 2 ^ 4 + W'.aβ * P 2 ^ 6) - WeierstrassCurve.Jacobian.polynomialY_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} : W'.polynomialY = MvPolynomial.C 2 * MvPolynomial.X 1 + MvPolynomial.C W'.aβ * MvPolynomial.X 0 * MvPolynomial.X 2 + MvPolynomial.C W'.aβ * MvPolynomial.X 2 ^ 3 - WeierstrassCurve.Jacobian.nonsingular_iff π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.Nonsingular P β W'.Equation P β§ (W'.aβ * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W'.aβ * P 0 * P 2 ^ 2 + W'.aβ * P 2 ^ 4) β 0 β¨ 2 * P 1 + W'.aβ * P 0 * P 2 + W'.aβ * P 2 ^ 3 β 0 β¨ W'.aβ * P 0 * P 1 + 3 * W'.aβ * P 1 * P 2 ^ 2 - (2 * W'.aβ * P 0 ^ 2 * P 2 + 4 * W'.aβ * P 0 * P 2 ^ 3 + 6 * W'.aβ * P 2 ^ 5) β 0) - WeierstrassCurve.Jacobian.polynomialX_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} : W'.polynomialX = MvPolynomial.C W'.aβ * MvPolynomial.X 1 * MvPolynomial.X 2 - (MvPolynomial.C 3 * MvPolynomial.X 0 ^ 2 + MvPolynomial.C (2 * W'.aβ) * MvPolynomial.X 0 * MvPolynomial.X 2 ^ 2 + MvPolynomial.C W'.aβ * MvPolynomial.X 2 ^ 4) - WeierstrassCurve.Jacobian.polynomialZ_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} : W'.polynomialZ = MvPolynomial.C W'.aβ * MvPolynomial.X 0 * MvPolynomial.X 1 + MvPolynomial.C (3 * W'.aβ) * MvPolynomial.X 1 * MvPolynomial.X 2 ^ 2 - (MvPolynomial.C (2 * W'.aβ) * MvPolynomial.X 0 ^ 2 * MvPolynomial.X 2 + MvPolynomial.C (4 * W'.aβ) * MvPolynomial.X 0 * MvPolynomial.X 2 ^ 3 + MvPolynomial.C (6 * W'.aβ) * MvPolynomial.X 2 ^ 5) - WeierstrassCurve.Jacobian.dblU π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.dblX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.dblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.dblZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.negDblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : R - WeierstrassCurve.Jacobian.dblXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : Fin 3 β R - WeierstrassCurve.Jacobian.addX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : Fin 3 β R) : R - WeierstrassCurve.Jacobian.addY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : Fin 3 β R) : R - WeierstrassCurve.Jacobian.negAddY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : Fin 3 β R) : R - WeierstrassCurve.Jacobian.addXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : Fin 3 β R) : Fin 3 β R - WeierstrassCurve.Jacobian.negAddY_self π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.negAddY P P = 0 - WeierstrassCurve.Jacobian.addX_self π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) : W'.addX P P = 0 - WeierstrassCurve.Jacobian.addY_self π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) : W'.addY P P = 0 - WeierstrassCurve.Jacobian.dblXYZ_X π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.dblXYZ P 0 = W'.dblX P - WeierstrassCurve.Jacobian.dblXYZ_Y π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.dblXYZ P 1 = W'.dblY P - WeierstrassCurve.Jacobian.dblXYZ_Z π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.dblXYZ P 2 = W'.dblZ P - WeierstrassCurve.Jacobian.addXYZ_Z π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) : W'.addXYZ P Q 2 = WeierstrassCurve.Jacobian.addZ P Q - WeierstrassCurve.Jacobian.addXYZ_X π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) : W'.addXYZ P Q 0 = W'.addX P Q - WeierstrassCurve.Jacobian.addXYZ_Y π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) : W'.addXYZ P Q 1 = W'.addY P Q - WeierstrassCurve.Jacobian.dblZ_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hPz : P 2 = 0) : W'.dblZ P = 0 - WeierstrassCurve.Jacobian.dblU_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.dblU (u β’ P) = u ^ 4 * W'.dblU P - WeierstrassCurve.Jacobian.dblZ_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.dblZ (u β’ P) = u ^ 4 * W'.dblZ P - WeierstrassCurve.Jacobian.negY_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.negY (u β’ P) = u ^ 3 * W'.negY P - WeierstrassCurve.Jacobian.negY_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hPz : P 2 = 0) : W'.negY P = -P 1 - WeierstrassCurve.Jacobian.addXYZ_self π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) : W'.addXYZ P P = ![0, 0, 0] - WeierstrassCurve.Jacobian.dblXYZ_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.dblXYZ (u β’ P) = u ^ 4 β’ W'.dblXYZ P - WeierstrassCurve.Jacobian.dblX_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.dblX (u β’ P) = (u ^ 4) ^ 2 * W'.dblX P - WeierstrassCurve.Jacobian.dblY_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.dblY (u β’ P) = (u ^ 4) ^ 3 * W'.dblY P - WeierstrassCurve.Jacobian.negDblY_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) (u : R) : W'.negDblY (u β’ P) = (u ^ 4) ^ 3 * W'.negDblY P - WeierstrassCurve.Jacobian.dblX_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblX P = (P 0 ^ 2) ^ 2 - WeierstrassCurve.Jacobian.dblY_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblY P = (P 0 ^ 2) ^ 3 - WeierstrassCurve.Jacobian.map_dblU π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).dblU (βf β P) = f (W'.dblU P) - WeierstrassCurve.Jacobian.map_dblX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).dblX (βf β P) = f (W'.dblX P) - WeierstrassCurve.Jacobian.map_dblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).dblY (βf β P) = f (W'.dblY P) - WeierstrassCurve.Jacobian.map_dblZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).dblZ (βf β P) = f (W'.dblZ P) - WeierstrassCurve.Jacobian.map_negDblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).negDblY (βf β P) = f (W'.negDblY P) - WeierstrassCurve.Jacobian.map_negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).negY (βf β P) = f (W'.negY P) - WeierstrassCurve.Jacobian.negDblY_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.negDblY P = -(P 0 ^ 2) ^ 3 - WeierstrassCurve.Jacobian.map_dblXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P : Fin 3 β R) : (W'.map f).dblXYZ (βf β P) = βf β W'.dblXYZ P - WeierstrassCurve.Jacobian.dblU_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hPz : P 2 = 0) : W'.dblU P = -3 * P 0 ^ 2 - WeierstrassCurve.Jacobian.addXYZ_of_Z_eq_zero_left π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addXYZ P Q = (P 0 * Q 2) β’ Q - WeierstrassCurve.Jacobian.addXYZ_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) (u v : R) : W'.addXYZ (u β’ P) (v β’ Q) = (u * v) ^ 2 β’ W'.addXYZ P Q - WeierstrassCurve.Jacobian.negY_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (X Y Z : R) : W'.negY ![X, Y, Z] = -Y - W'.aβ * X * Z - W'.aβ * Z ^ 3 - WeierstrassCurve.Jacobian.addX_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) (u v : R) : W'.addX (u β’ P) (v β’ Q) = ((u * v) ^ 2) ^ 2 * W'.addX P Q - WeierstrassCurve.Jacobian.addY_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) (u v : R) : W'.addY (u β’ P) (v β’ Q) = ((u * v) ^ 2) ^ 3 * W'.addY P Q - WeierstrassCurve.Jacobian.negAddY_smul π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) (u v : R) : W'.negAddY (u β’ P) (v β’ Q) = ((u * v) ^ 2) ^ 3 * W'.negAddY P Q - WeierstrassCurve.Jacobian.negAddY_of_Z_eq_zero_left π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.negAddY P Q = (P 0 * Q 2) ^ 3 * W'.negY Q - WeierstrassCurve.Jacobian.addXYZ_of_Z_eq_zero_right π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addXYZ P Q = -(Q 0 * P 2) β’ P - WeierstrassCurve.Jacobian.addX_of_Z_eq_zero_left π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hPz : P 2 = 0) : W'.addX P Q = (P 0 * Q 2) ^ 2 * Q 0 - WeierstrassCurve.Jacobian.addY_of_Z_eq_zero_left π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addY P Q = (P 0 * Q 2) ^ 3 * Q 1 - WeierstrassCurve.Jacobian.negAddY_of_Z_eq_zero_right π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.negAddY P Q = (-(Q 0 * P 2)) ^ 3 * W'.negY P - WeierstrassCurve.Jacobian.map_addX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P Q : Fin 3 β R) : (W'.map f).addX (βf β P) (βf β Q) = f (W'.addX P Q) - WeierstrassCurve.Jacobian.map_addY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P Q : Fin 3 β R) : (W'.map f).addY (βf β P) (βf β Q) = f (W'.addY P Q) - WeierstrassCurve.Jacobian.map_negAddY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P Q : Fin 3 β R) : (W'.map f).negAddY (βf β P) (βf β Q) = f (W'.negAddY P Q) - WeierstrassCurve.Jacobian.addX_of_Z_eq_zero_right π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hQz : Q 2 = 0) : W'.addX P Q = (-(Q 0 * P 2)) ^ 2 * P 0 - WeierstrassCurve.Jacobian.addY_of_Z_eq_zero_right π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addY P Q = (-(Q 0 * P 2)) ^ 3 * P 1 - WeierstrassCurve.Jacobian.map_addXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Jacobian R} (f : R β+* S) (P Q : Fin 3 β R) : (W'.map f).addXYZ (βf β P) (βf β Q) = βf β W'.addXYZ P Q - WeierstrassCurve.Jacobian.dblXYZ_of_Z_eq_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : Fin 3 β R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblXYZ P = P 0 ^ 2 β’ ![1, 1, 0] - WeierstrassCurve.Jacobian.nonsingular_iff_of_Y_eq_negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) (hy : P 1 = W.negY P) : W.Nonsingular P β W.Equation P β§ (MvPolynomial.eval P) W.polynomialX β 0 - WeierstrassCurve.Jacobian.negY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hPz : P 2 β 0) : W.negY P / P 2 ^ 3 = W.toAffine.negY (P 0 / P 2 ^ 2) (P 1 / P 2 ^ 3) - WeierstrassCurve.Jacobian.baseChange_dblU π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).dblU (βf β P) = f ((W'.baseChange A).dblU P) - WeierstrassCurve.Jacobian.baseChange_dblX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).dblX (βf β P) = f ((W'.baseChange A).dblX P) - WeierstrassCurve.Jacobian.baseChange_dblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).dblY (βf β P) = f ((W'.baseChange A).dblY P) - WeierstrassCurve.Jacobian.baseChange_dblZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).dblZ (βf β P) = f ((W'.baseChange A).dblZ P) - WeierstrassCurve.Jacobian.baseChange_negDblY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).negDblY (βf β P) = f ((W'.baseChange A).negDblY P) - WeierstrassCurve.Jacobian.baseChange_negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).negY (βf β P) = f ((W'.baseChange A).negY P) - WeierstrassCurve.Jacobian.baseChange_dblXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P : Fin 3 β A) : (W'.baseChange B).dblXYZ (βf β P) = βf β (W'.baseChange A).dblXYZ P - WeierstrassCurve.Jacobian.addX_of_X_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W.addX P Q = WeierstrassCurve.Jacobian.addU P Q ^ 2 - WeierstrassCurve.Jacobian.addY_of_X_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W.addY P Q = WeierstrassCurve.Jacobian.addU P Q ^ 3 - WeierstrassCurve.Jacobian.negAddY_of_X_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W.negAddY P Q = (-WeierstrassCurve.Jacobian.addU P Q) ^ 3 - WeierstrassCurve.Jacobian.baseChange_addX π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P Q : Fin 3 β A) : (W'.baseChange B).addX (βf β P) (βf β Q) = f ((W'.baseChange A).addX P Q) - WeierstrassCurve.Jacobian.baseChange_addY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P Q : Fin 3 β A) : (W'.baseChange B).addY (βf β P) (βf β Q) = f ((W'.baseChange A).addY P Q) - WeierstrassCurve.Jacobian.baseChange_negAddY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P Q : Fin 3 β A) : (W'.baseChange B).negAddY (βf β P) (βf β Q) = f ((W'.baseChange A).negAddY P Q) - WeierstrassCurve.Jacobian.baseChange_addXYZ π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Jacobian R} [Algebra R S] [Algebra R A] [Algebra S A] [IsScalarTower R S A] [Algebra R B] [Algebra S B] [IsScalarTower R S B] (f : A ββ[S] B) (P Q : Fin 3 β A) : (W'.baseChange B).addXYZ (βf β P) (βf β Q) = βf β (W'.baseChange A).addXYZ P Q - WeierstrassCurve.Jacobian.Y_ne_negY_of_Y_ne' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W'.negY Q * P 2 ^ 3) : P 1 β W'.negY P - WeierstrassCurve.Jacobian.Y_ne_negY_of_Y_ne π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β Q 1 * P 2 ^ 3) : P 1 β W'.negY P - WeierstrassCurve.Jacobian.addXYZ_of_X_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W.addXYZ P Q = WeierstrassCurve.Jacobian.addU P Q β’ ![1, 1, 0] - WeierstrassCurve.Jacobian.dblZ_ne_zero_of_Y_ne' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W'.negY Q * P 2 ^ 3) : W'.dblZ P β 0 - WeierstrassCurve.Jacobian.isUnit_dblZ_of_Y_ne' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W.negY Q * P 2 ^ 3) : IsUnit (W.dblZ P) - WeierstrassCurve.Jacobian.dblU_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.dblU P = W'.aβ * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W'.aβ * P 0 * P 2 ^ 2 + W'.aβ * P 2 ^ 4) - WeierstrassCurve.Jacobian.isUnit_dblZ_of_Y_ne π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β Q 1 * P 2 ^ 3) : IsUnit (W.dblZ P) - WeierstrassCurve.Jacobian.dblZ_ne_zero_of_Y_ne π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β Q 1 * P 2 ^ 3) : W'.dblZ P β 0 - WeierstrassCurve.Jacobian.addX_of_X_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W'.addX P Q * (P 2 * Q 2) ^ 2 = (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) ^ 2 - WeierstrassCurve.Jacobian.negAddY_of_X_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W'.negAddY P Q * (P 2 * Q 2) ^ 3 = (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) ^ 3 - WeierstrassCurve.Jacobian.Y_eq_iff' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hPz : P 2 β 0) (hQz : Q 2 β 0) : P 1 * Q 2 ^ 3 = W.negY Q * P 2 ^ 3 β P 1 / P 2 ^ 3 = W.toAffine.negY (Q 0 / Q 2 ^ 2) (Q 1 / Q 2 ^ 3) - WeierstrassCurve.Jacobian.addY_of_X_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : W'.addY P Q * (P 2 * Q 2) ^ 3 = (-(P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3)) ^ 3 - WeierstrassCurve.Jacobian.Y_eq_of_Y_ne π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β Q 1 * P 2 ^ 3) : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3 - WeierstrassCurve.Jacobian.Y_eq_of_Y_ne' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W'.negY Q * P 2 ^ 3) : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3 - WeierstrassCurve.Jacobian.Y_sub_Y_mul_Y_sub_negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) * (P 1 * Q 2 ^ 3 - W'.negY Q * P 2 ^ 3) = 0 - WeierstrassCurve.Jacobian.dblZ_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : W'.dblZ P = 0 - WeierstrassCurve.Jacobian.Y_eq_negY_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : P 1 = W'.negY P - WeierstrassCurve.Jacobian.dblX_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : W'.dblX P = W'.dblU P ^ 2 - WeierstrassCurve.Jacobian.dblY_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : W'.dblY P = W'.dblU P ^ 3 - WeierstrassCurve.Jacobian.negDblY_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : W'.negDblY P = (-W'.dblU P) ^ 3 - WeierstrassCurve.Jacobian.isUnit_dblU_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Nonsingular P) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W.negY Q * P 2 ^ 3) : IsUnit (W.dblU P) - WeierstrassCurve.Jacobian.dblU_ne_zero_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Nonsingular P) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W.negY Q * P 2 ^ 3) : W.dblU P β 0 - WeierstrassCurve.Jacobian.Y_sub_Y_add_Y_sub_negY π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) : P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3 + (P 1 * Q 2 ^ 3 - W'.negY Q * P 2 ^ 3) = (P 1 - W'.negY P) * Q 2 ^ 3 - WeierstrassCurve.Jacobian.dblXYZ_of_Y_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [NoZeroDivisors R] {P Q : Fin 3 β R} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W'.negY Q * P 2 ^ 3) : W'.dblXYZ P = ![W'.dblU P ^ 2, W'.dblU P ^ 3, 0] - WeierstrassCurve.Jacobian.dblXYZ_of_Y_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 = Q 1 * P 2 ^ 3) (hy' : P 1 * Q 2 ^ 3 = W.negY Q * P 2 ^ 3) : W.dblXYZ P = W.dblU P β’ ![1, 1, 0] - WeierstrassCurve.Jacobian.negAddY_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P Q : Fin 3 β R) : W'.negAddY P Q * (P 2 * Q 2) ^ 3 = (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) * (W'.addX P Q * (P 2 * Q 2) ^ 2 - P 0 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2) + P 1 * Q 2 ^ 3 * WeierstrassCurve.Jacobian.addZ P Q ^ 3 - WeierstrassCurve.Jacobian.negAddY_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hPz : P 2 β 0) (hQz : Q 2 β 0) : W.negAddY P Q = ((P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) * (W.addX P Q * (P 2 * Q 2) ^ 2 - P 0 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2) + P 1 * Q 2 ^ 3 * WeierstrassCurve.Jacobian.addZ P Q ^ 3) / (P 2 * Q 2) ^ 3 - WeierstrassCurve.Jacobian.addX_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 β Q 0 * P 2 ^ 2) : W.addX P Q / WeierstrassCurve.Jacobian.addZ P Q ^ 2 = W.toAffine.addX (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.addY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 β Q 0 * P 2 ^ 2) : W.addY P Q / WeierstrassCurve.Jacobian.addZ P Q ^ 3 = W.toAffine.addY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.negAddY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 β Q 0 * P 2 ^ 2) : W.negAddY P Q / WeierstrassCurve.Jacobian.addZ P Q ^ 3 = W.toAffine.negAddY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.dblX_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W.negY Q * P 2 ^ 3) : W.dblX P / W.dblZ P ^ 2 = W.toAffine.addX (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.dblY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W.negY Q * P 2 ^ 3) : W.dblY P / W.dblZ P ^ 3 = W.toAffine.addY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.negDblY_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W.negY Q * P 2 ^ 3) : W.negDblY P / W.dblZ P ^ 3 = W.toAffine.negAddY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)) - WeierstrassCurve.Jacobian.addX_eq' π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P Q : Fin 3 β R} (hP : W'.Equation P) (hQ : W'.Equation Q) : W'.addX P Q * (P 2 * Q 2) ^ 2 = (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) ^ 2 + W'.aβ * (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) * P 2 * Q 2 * WeierstrassCurve.Jacobian.addZ P Q - W'.aβ * P 2 ^ 2 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2 - P 0 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2 - Q 0 * P 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2 - WeierstrassCurve.Jacobian.addX_eq π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) : W.addX P Q = ((P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) ^ 2 + W.aβ * (P 1 * Q 2 ^ 3 - Q 1 * P 2 ^ 3) * P 2 * Q 2 * WeierstrassCurve.Jacobian.addZ P Q - W.aβ * P 2 ^ 2 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2 - P 0 * Q 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2 - Q 0 * P 2 ^ 2 * WeierstrassCurve.Jacobian.addZ P Q ^ 2) / (P 2 * Q 2) ^ 2 - WeierstrassCurve.Jacobian.addXYZ_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 β Q 0 * P 2 ^ 2) : W.addXYZ P Q = WeierstrassCurve.Jacobian.addZ P Q β’ ![W.toAffine.addX (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)), W.toAffine.addY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)), 1] - WeierstrassCurve.Jacobian.dblXYZ_of_Z_ne_zero π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} [DecidableEq F] {P Q : Fin 3 β F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 β 0) (hQz : Q 2 β 0) (hx : P 0 * Q 2 ^ 2 = Q 0 * P 2 ^ 2) (hy : P 1 * Q 2 ^ 3 β W.negY Q * P 2 ^ 3) : W.dblXYZ P = W.dblZ P β’ ![W.toAffine.addX (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)), W.toAffine.addY (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (W.toAffine.slope (P 0 / P 2 ^ 2) (Q 0 / Q 2 ^ 2) (P 1 / P 2 ^ 3) (Q 1 / Q 2 ^ 3)), 1] - WeierstrassCurve.Jacobian.Point π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) : Type r - WeierstrassCurve.Jacobian.negMap π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : WeierstrassCurve.Jacobian.PointClass R) : WeierstrassCurve.Jacobian.PointClass R - WeierstrassCurve.Jacobian.Point.instAdd π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} : Add W.Point - WeierstrassCurve.Jacobian.Point.instAddCommGroup π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} : AddCommGroup W.Point - WeierstrassCurve.Jacobian.Point.instNeg π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} : Neg W.Point - WeierstrassCurve.Jacobian.Point.instZeroOfNontrivial π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [Nontrivial R] : Zero W'.Point - WeierstrassCurve.Jacobian.Point.point π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (self : W'.Point) : WeierstrassCurve.Jacobian.PointClass R - WeierstrassCurve.Jacobian.addMap π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : WeierstrassCurve.Jacobian.PointClass R) : WeierstrassCurve.Jacobian.PointClass R - WeierstrassCurve.Jacobian.Point.fromAffine π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} [Nontrivial R] : W'.toAffine.Point β W'.Point - WeierstrassCurve.Jacobian.Point.mk π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {point : WeierstrassCurve.Jacobian.PointClass R} (nonsingular : W'.NonsingularLift point) : W'.Point - WeierstrassCurve.Jacobian.Point.neg π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} (P : W.Point) : W.Point - WeierstrassCurve.Jacobian.Point.nonsingular π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (self : W'.Point) : W'.NonsingularLift self.point - WeierstrassCurve.Jacobian.neg π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P : Fin 3 β R) : Fin 3 β R - WeierstrassCurve.Jacobian.Point.toAffineLift π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} (P : W.Point) : W.toAffine.Point - WeierstrassCurve.Jacobian.Point.toAffine π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] (W : WeierstrassCurve.Jacobian F) (P : Fin 3 β F) : W.toAffine.Point - WeierstrassCurve.Jacobian.Point.add π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} (P Q : W.Point) : W.Point - WeierstrassCurve.Jacobian.add π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Jacobian R) (P Q : Fin 3 β R) : Fin 3 β R - WeierstrassCurve.Jacobian.Point.mk_point π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} {P : WeierstrassCurve.Jacobian.PointClass R} (h : W'.NonsingularLift P) : { point := P, nonsingular := h }.point = P - WeierstrassCurve.Jacobian.nonsingularLift_negMap π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : WeierstrassCurve.Jacobian.PointClass F} (hP : W.NonsingularLift P) : W.NonsingularLift (W.negMap P) - WeierstrassCurve.Jacobian.add_self π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Jacobian R} (P : Fin 3 β R) : W'.add P P = W'.dblXYZ P - WeierstrassCurve.Jacobian.nonsingular_neg π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} {P : Fin 3 β F} (hP : W.Nonsingular P) : W.Nonsingular (W.neg P) - WeierstrassCurve.Jacobian.Point.toAffineAddEquiv π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] (W : WeierstrassCurve.Jacobian F) [DecidableEq F] : W.Point β+ W.toAffine.Point - WeierstrassCurve.Jacobian.Point.ext π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} {instβ : CommRing R} {W' : WeierstrassCurve.Jacobian R} {x y : W'.Point} (point : x.point = y.point) : x = y - WeierstrassCurve.Jacobian.Point.ext_iff π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{R : Type r} {instβ : CommRing R} {W' : WeierstrassCurve.Jacobian R} {x y : W'.Point} : x = y β x.point = y.point - WeierstrassCurve.Jacobian.Point.neg_def π Mathlib.AlgebraicGeometry.EllipticCurve.Jacobian.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Jacobian F} (P : W.Point) : -P = P.neg
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
πReal.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
π"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
π_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
πReal.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
π(?a -> ?b) -> List ?a -> List ?b
πList ?a -> (?a -> ?b) -> List ?bBy main conclusion:
π|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of allβandβ) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
π|- _ < _ β tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.You can filter for definitions vs theorems: Using
β’ (_ : Type _)finds all definitions which provide data whileβ’ (_ : Prop)finds all theorems (and definitions of proofs).
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
π Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ β _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision ce5dd8c