Loogle!
Result
Found 282 declarations mentioning WeierstrassCurve.Projective. Of these, only the first 200 are shown.
- WeierstrassCurve.Projective š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
(R : Type r) : Type r - WeierstrassCurve.toProjective š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} (W : WeierstrassCurve R) : WeierstrassCurve.Projective R - WeierstrassCurve.Projective.toAffine š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} (W' : WeierstrassCurve.Projective R) : WeierstrassCurve.Affine R - WeierstrassCurve.Projective.NonsingularLift š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : WeierstrassCurve.Projective.PointClass R) : Prop - WeierstrassCurve.Projective.Equation š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : Prop - WeierstrassCurve.Projective.Nonsingular š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : Prop - WeierstrassCurve.Projective.polynomial š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Projective.polynomialX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Projective.polynomialY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Projective.polynomialZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) : MvPolynomial (Fin 3) R - WeierstrassCurve.Projective.baseChange š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (S : Type s) [CommRing S] [Algebra R S] : WeierstrassCurve.Projective S - WeierstrassCurve.Projective.map š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) {S : Type s} [CommRing S] (f : R ā+* S) : WeierstrassCurve.Projective S - WeierstrassCurve.Projective.equation_of_equiv š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (h : P ā Q) : W'.Equation P ā W'.Equation Q - WeierstrassCurve.Projective.nonsingular_of_equiv š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (h : P ā Q) : W'.Nonsingular P ā W'.Nonsingular Q - WeierstrassCurve.Projective.equation_some š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (a b : R) : W'.Equation ![a, b, 1] ā W'.toAffine.Equation a b - WeierstrassCurve.Projective.nonsingular_some š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (a b : R) : W'.Nonsingular ![a, b, 1] ā W'.toAffine.Nonsingular a b - WeierstrassCurve.Projective.equation_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} : W'.Equation ![0, 1, 0] - WeierstrassCurve.Projective.nonsingular_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [Nontrivial R] : W'.Nonsingular ![0, 1, 0] - WeierstrassCurve.Projective.equation_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) {u : R} (hu : IsUnit u) : W'.Equation (u ⢠P) ā W'.Equation P - WeierstrassCurve.Projective.nonsingular_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) {u : R} (hu : IsUnit u) : W'.Nonsingular (u ⢠P) ā W'.Nonsingular P - WeierstrassCurve.Projective.isUnit_Y_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hP : W.Nonsingular P) (hPz : P 2 = 0) : IsUnit (P 1) - WeierstrassCurve.Projective.Equation.map š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {S : Type s} [CommRing S] (f : R ā+* S) {P : Fin 3 ā R} (h : W'.Equation P) : (W'.map f).Equation (āf ā P) - WeierstrassCurve.Projective.nonsingularLift_iff š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.NonsingularLift ā¦Pā§ ā W'.Nonsingular P - WeierstrassCurve.Projective.X_eq_zero_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : P 0 = 0 - WeierstrassCurve.Projective.Y_ne_zero_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Nonsingular P) (hPz : P 2 = 0) : P 1 ā 0 - WeierstrassCurve.Projective.equation_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P : Fin 3 ā R} (hPz : P 2 = 0) : W'.Equation P ā P 0 ^ 3 = 0 - WeierstrassCurve.Projective.equiv_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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.Projective.map_equation š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.map_nonsingular š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.nonsingularLift_some š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (a b : R) : W'.NonsingularLift ā¦![a, b, 1]ā§ ā W'.toAffine.Nonsingular a b - WeierstrassCurve.Projective.equiv_zero_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hP : W.Nonsingular P) (hPz : P 2 = 0) : P ā ![0, 1, 0] - WeierstrassCurve.Projective.nonsingularLift_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [Nontrivial R] : W'.NonsingularLift ā¦![0, 1, 0]ā§ - WeierstrassCurve.Projective.equation_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : W.Equation P ā W.toAffine.Equation (P 0 / P 2) (P 1 / P 2) - WeierstrassCurve.Projective.nonsingular_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : W.Nonsingular P ā W.toAffine.Nonsingular (P 0 / P 2) (P 1 / P 2) - WeierstrassCurve.Projective.comp_equiv_comp š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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.Projective.Equation.baseChange š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective 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.Projective.map_polynomial š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) {S : Type s} [CommRing S] (f : R ā+* S) : (W'.map f).polynomial = (MvPolynomial.map f) W'.polynomial - WeierstrassCurve.Projective.map_polynomialX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) {S : Type s} [CommRing S] (f : R ā+* S) : (W'.map f).polynomialX = (MvPolynomial.map f) W'.polynomialX - WeierstrassCurve.Projective.map_polynomialY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) {S : Type s} [CommRing S] (f : R ā+* S) : (W'.map f).polynomialY = (MvPolynomial.map f) W'.polynomialY - WeierstrassCurve.Projective.map_polynomialZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) {S : Type s} [CommRing S] (f : R ā+* S) : (W'.map f).polynomialZ = (MvPolynomial.map f) W'.polynomialZ - WeierstrassCurve.Projective.baseChange_equation š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.baseChange_nonsingular š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.map_baseChange š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.nonsingular_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P : Fin 3 ā R} (hPz : P 2 = 0) : W'.Nonsingular P ā W'.Equation P ā§ (3 * P 0 ^ 2 ā 0 ⨠P 1 ^ 2 + W'.aā * P 0 * P 1 - W'.aā * P 0 ^ 2 ā 0) - WeierstrassCurve.Projective.eval_polynomialX_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : (MvPolynomial.eval P) W.polynomialX / P 2 ^ 2 = Polynomial.evalEval (P 0 / P 2) (P 1 / P 2) W.toAffine.polynomialX - WeierstrassCurve.Projective.eval_polynomialY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : (MvPolynomial.eval P) W.polynomialY / P 2 ^ 2 = Polynomial.evalEval (P 0 / P 2) (P 1 / P 2) W.toAffine.polynomialY - WeierstrassCurve.Projective.eval_polynomial_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : (MvPolynomial.eval P) W.polynomial / P 2 ^ 3 = Polynomial.evalEval (P 0 / P 2) (P 1 / P 2) W.toAffine.polynomial - WeierstrassCurve.Projective.nonsingular_iff_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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.Projective.eval_polynomialY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : (MvPolynomial.eval P) W'.polynomialY = 2 * P 1 * P 2 + W'.aā * P 0 * P 2 + W'.aā * P 2 ^ 2 - WeierstrassCurve.Projective.baseChange_polynomial š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.baseChange_polynomialX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.baseChange_polynomialY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.baseChange_polynomialZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective 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.Projective.eval_polynomialX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective 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 + W'.aā * P 2 ^ 2) - WeierstrassCurve.Projective.equation_iff š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.Equation P ā P 1 ^ 2 * P 2 + W'.aā * P 0 * P 1 * P 2 + W'.aā * P 1 * P 2 ^ 2 - (P 0 ^ 3 + W'.aā * P 0 ^ 2 * P 2 + W'.aā * P 0 * P 2 ^ 2 + W'.aā * P 2 ^ 3) = 0 - WeierstrassCurve.Projective.polynomial_relation š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : 3 * (MvPolynomial.eval P) W'.polynomial = P 0 * (MvPolynomial.eval P) W'.polynomialX + P 1 * (MvPolynomial.eval P) W'.polynomialY + P 2 * (MvPolynomial.eval P) W'.polynomialZ - WeierstrassCurve.Projective.eval_polynomialZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : (MvPolynomial.eval P) W'.polynomialZ = P 1 ^ 2 + W'.aā * P 0 * P 1 + 2 * W'.aā * P 1 * P 2 - (W'.aā * P 0 ^ 2 + 2 * W'.aā * P 0 * P 2 + 3 * W'.aā * P 2 ^ 2) - WeierstrassCurve.Projective.eval_polynomial š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : (MvPolynomial.eval P) W'.polynomial = P 1 ^ 2 * P 2 + W'.aā * P 0 * P 1 * P 2 + W'.aā * P 1 * P 2 ^ 2 - (P 0 ^ 3 + W'.aā * P 0 ^ 2 * P 2 + W'.aā * P 0 * P 2 ^ 2 + W'.aā * P 2 ^ 3) - WeierstrassCurve.Projective.polynomialY_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} : W'.polynomialY = MvPolynomial.C 2 * MvPolynomial.X 1 * MvPolynomial.X 2 + MvPolynomial.C W'.aā * MvPolynomial.X 0 * MvPolynomial.X 2 + MvPolynomial.C W'.aā * MvPolynomial.X 2 ^ 2 - WeierstrassCurve.Projective.nonsingular_iff š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective 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 + W'.aā * P 2 ^ 2) ā 0 ⨠2 * P 1 * P 2 + W'.aā * P 0 * P 2 + W'.aā * P 2 ^ 2 ā 0 ⨠P 1 ^ 2 + W'.aā * P 0 * P 1 + 2 * W'.aā * P 1 * P 2 - (W'.aā * P 0 ^ 2 + 2 * W'.aā * P 0 * P 2 + 3 * W'.aā * P 2 ^ 2) ā 0) - WeierstrassCurve.Projective.polynomialX_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective 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 + MvPolynomial.C W'.aā * MvPolynomial.X 2 ^ 2) - WeierstrassCurve.Projective.polynomialZ_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Basic
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} : W'.polynomialZ = MvPolynomial.X 1 ^ 2 + MvPolynomial.C W'.aā * MvPolynomial.X 0 * MvPolynomial.X 1 + MvPolynomial.C (2 * W'.aā) * MvPolynomial.X 1 * MvPolynomial.X 2 - (MvPolynomial.C W'.aā * MvPolynomial.X 0 ^ 2 + MvPolynomial.C (2 * W'.aā) * MvPolynomial.X 0 * MvPolynomial.X 2 + MvPolynomial.C (3 * W'.aā) * MvPolynomial.X 2 ^ 2) - WeierstrassCurve.Projective.dblU š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] (W : WeierstrassCurve.Projective F) (P : Fin 3 ā F) : F - WeierstrassCurve.Projective.dblX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : R - WeierstrassCurve.Projective.dblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : R - WeierstrassCurve.Projective.dblZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : R - WeierstrassCurve.Projective.negDblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : R - WeierstrassCurve.Projective.negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : R - WeierstrassCurve.Projective.dblXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : Fin 3 ā R) : Fin 3 ā R - WeierstrassCurve.Projective.addX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : Fin 3 ā R) : R - WeierstrassCurve.Projective.addY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : Fin 3 ā R) : R - WeierstrassCurve.Projective.addZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : Fin 3 ā R) : R - WeierstrassCurve.Projective.negAddY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : Fin 3 ā R) : R - WeierstrassCurve.Projective.addXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : Fin 3 ā R) : Fin 3 ā R - WeierstrassCurve.Projective.addX_self š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.addX P P = 0 - WeierstrassCurve.Projective.addY_self š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.addY P P = 0 - WeierstrassCurve.Projective.addZ_self š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.addZ P P = 0 - WeierstrassCurve.Projective.negAddY_self š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.negAddY P P = 0 - WeierstrassCurve.Projective.dblXYZ_X š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.dblXYZ P 0 = W'.dblX P - WeierstrassCurve.Projective.dblXYZ_Y š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.dblXYZ P 1 = W'.dblY P - WeierstrassCurve.Projective.dblXYZ_Z š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.dblXYZ P 2 = W'.dblZ P - WeierstrassCurve.Projective.addXYZ_X š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) : W'.addXYZ P Q 0 = W'.addX P Q - WeierstrassCurve.Projective.addXYZ_Y š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) : W'.addXYZ P Q 1 = W'.addY P Q - WeierstrassCurve.Projective.addXYZ_Z š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) : W'.addXYZ P Q 2 = W'.addZ P Q - WeierstrassCurve.Projective.dblZ_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P : Fin 3 ā R} (hPz : P 2 = 0) : W'.dblZ P = 0 - WeierstrassCurve.Projective.dblU_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 = 0) : W.dblU P = 0 - WeierstrassCurve.Projective.negY_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.negY (u ⢠P) = u * W'.negY P - WeierstrassCurve.Projective.addXYZ_self š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) : W'.addXYZ P P = ![0, 0, 0] - WeierstrassCurve.Projective.dblX_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblX P = 0 - WeierstrassCurve.Projective.dblX_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.dblX (u ⢠P) = u ^ 4 * W'.dblX P - WeierstrassCurve.Projective.dblY_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.dblY (u ⢠P) = u ^ 4 * W'.dblY P - WeierstrassCurve.Projective.dblZ_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.dblZ (u ⢠P) = u ^ 4 * W'.dblZ P - WeierstrassCurve.Projective.negDblY_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.negDblY (u ⢠P) = u ^ 4 * W'.negDblY P - WeierstrassCurve.Projective.dblU_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} (P : Fin 3 ā F) (u : F) : W.dblU (u ⢠P) = u ^ 4 * W.dblU P - WeierstrassCurve.Projective.negY_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.negY P = -P 1 - WeierstrassCurve.Projective.dblY_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblY P = P 1 ^ 4 - WeierstrassCurve.Projective.negY_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (X Y Z : R) : W'.negY ![X, Y, Z] = -Y - W'.aā * X - W'.aā * Z - WeierstrassCurve.Projective.map_dblX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).dblX (āf ā P) = f (W'.dblX P) - WeierstrassCurve.Projective.map_dblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).dblY (āf ā P) = f (W'.dblY P) - WeierstrassCurve.Projective.map_dblZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).dblZ (āf ā P) = f (W'.dblZ P) - WeierstrassCurve.Projective.map_negDblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).negDblY (āf ā P) = f (W'.negDblY P) - WeierstrassCurve.Projective.map_negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).negY (āf ā P) = f (W'.negY P) - WeierstrassCurve.Projective.negDblY_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.negDblY P = -P 1 ^ 4 - WeierstrassCurve.Projective.dblXYZ_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P : Fin 3 ā R) (u : R) : W'.dblXYZ (u ⢠P) = u ^ 4 ⢠W'.dblXYZ P - WeierstrassCurve.Projective.map_dblXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P : Fin 3 ā R) : (W'.map f).dblXYZ (āf ā P) = āf ā W'.dblXYZ P - WeierstrassCurve.Projective.map_dblU š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} {K : Type v} [Field F] [Field K] {W : WeierstrassCurve.Projective F} (f : F ā+* K) (P : Fin 3 ā F) : (W.map f).dblU (āf ā P) = f (W.dblU P) - WeierstrassCurve.Projective.isUnit_addZ_of_X_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hQ : W.Equation Q) (hx : P 0 * Q 2 ā Q 0 * P 2) : IsUnit (W.addZ P Q) - WeierstrassCurve.Projective.addX_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) (u v : R) : W'.addX (u ⢠P) (v ⢠Q) = (u * v) ^ 2 * W'.addX P Q - WeierstrassCurve.Projective.addY_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) (u v : R) : W'.addY (u ⢠P) (v ⢠Q) = (u * v) ^ 2 * W'.addY P Q - WeierstrassCurve.Projective.addZ_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) (u v : R) : W'.addZ (u ⢠P) (v ⢠Q) = (u * v) ^ 2 * W'.addZ P Q - WeierstrassCurve.Projective.negAddY_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) (u v : R) : W'.negAddY (u ⢠P) (v ⢠Q) = (u * v) ^ 2 * W'.negAddY P Q - WeierstrassCurve.Projective.addZ_ne_zero_of_X_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 ā Q 0 * P 2) : W'.addZ P Q ā 0 - WeierstrassCurve.Projective.negAddY_of_Z_eq_zero_left š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.negAddY P Q = P 1 ^ 2 * Q 2 * W'.negY Q - WeierstrassCurve.Projective.map_addX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P Q : Fin 3 ā R) : (W'.map f).addX (āf ā P) (āf ā Q) = f (W'.addX P Q) - WeierstrassCurve.Projective.map_addY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P Q : Fin 3 ā R) : (W'.map f).addY (āf ā P) (āf ā Q) = f (W'.addY P Q) - WeierstrassCurve.Projective.map_addZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P Q : Fin 3 ā R) : (W'.map f).addZ (āf ā P) (āf ā Q) = f (W'.addZ P Q) - WeierstrassCurve.Projective.map_negAddY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P Q : Fin 3 ā R) : (W'.map f).negAddY (āf ā P) (āf ā Q) = f (W'.negAddY P Q) - WeierstrassCurve.Projective.addX_of_Z_eq_zero_left š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addX P Q = P 1 ^ 2 * Q 2 * Q 0 - WeierstrassCurve.Projective.addY_of_Z_eq_zero_left š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addY P Q = P 1 ^ 2 * Q 2 * Q 1 - WeierstrassCurve.Projective.addZ_of_Z_eq_zero_left š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addZ P Q = P 1 ^ 2 * Q 2 * Q 2 - WeierstrassCurve.Projective.map_addXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} [CommRing R] [CommRing S] {W' : WeierstrassCurve.Projective R} (f : R ā+* S) (P Q : Fin 3 ā R) : (W'.map f).addXYZ (āf ā P) (āf ā Q) = āf ā W'.addXYZ P Q - WeierstrassCurve.Projective.negAddY_of_Z_eq_zero_right š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.negAddY P Q = -(Q 1 ^ 2 * P 2) * W'.negY P - WeierstrassCurve.Projective.addXYZ_smul š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (P Q : Fin 3 ā R) (u v : R) : W'.addXYZ (u ⢠P) (v ⢠Q) = (u * v) ^ 2 ⢠W'.addXYZ P Q - WeierstrassCurve.Projective.negY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hPz : P 2 ā 0) : W.negY P / P 2 = W.toAffine.negY (P 0 / P 2) (P 1 / P 2) - WeierstrassCurve.Projective.addXYZ_of_Z_eq_zero_left š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.addXYZ P Q = (P 1 ^ 2 * Q 2) ⢠Q - WeierstrassCurve.Projective.addX_of_Z_eq_zero_right š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addX P Q = -(Q 1 ^ 2 * P 2) * P 0 - WeierstrassCurve.Projective.addY_of_Z_eq_zero_right š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addY P Q = -(Q 1 ^ 2 * P 2) * P 1 - WeierstrassCurve.Projective.addZ_of_Z_eq_zero_right š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addZ P Q = -(Q 1 ^ 2 * P 2) * P 2 - WeierstrassCurve.Projective.addXYZ_of_Z_eq_zero_right š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQ : W'.Equation Q) (hQz : Q 2 = 0) : W'.addXYZ P Q = -(Q 1 ^ 2 * P 2) ⢠P - WeierstrassCurve.Projective.addY_of_X_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) : W.addY P Q = WeierstrassCurve.Projective.addU P Q - WeierstrassCurve.Projective.dblXYZ_of_Z_eq_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 = 0) : W'.dblXYZ P = P 1 ^ 4 ⢠![0, 1, 0] - WeierstrassCurve.Projective.addX_of_X_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) : W'.addX P Q = 0 - WeierstrassCurve.Projective.addZ_of_X_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) : W'.addZ P Q = 0 - WeierstrassCurve.Projective.addZ_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) : W'.addZ P Q * (P 2 * Q 2) = (P 0 * Q 2 - Q 0 * P 2) ^ 3 - WeierstrassCurve.Projective.negAddY_of_X_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) : W.negAddY P Q = -WeierstrassCurve.Projective.addU P Q - WeierstrassCurve.Projective.nonsingular_iff_of_Y_eq_negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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.Projective.baseChange_dblX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_dblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_dblZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_negDblY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_dblXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_dblU š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {F : Type u} {K : Type v} [CommRing R] [CommRing S] [Field F] [Field K] {W' : WeierstrassCurve.Projective R} [Algebra R S] [Algebra R F] [Algebra S F] [IsScalarTower R S F] [Algebra R K] [Algebra S K] [IsScalarTower R S K] (f : F āā[S] K) (P : Fin 3 ā F) : (W'.baseChange K).dblU (āf ā P) = f ((W'.baseChange F).dblU P) - WeierstrassCurve.Projective.baseChange_addX š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_addY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.baseChange_negAddY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.addZ_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) : W.addZ P Q = (P 0 * Q 2 - Q 0 * P 2) ^ 3 / (P 2 * Q 2) - WeierstrassCurve.Projective.isUnit_dblZ_of_Y_ne' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā W.negY Q * P 2) : IsUnit (W.dblZ P) - WeierstrassCurve.Projective.dblZ_ne_zero_of_Y_ne' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā W'.negY Q * P 2) : W'.dblZ P ā 0 - WeierstrassCurve.Projective.baseChange_addXYZ š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} {S : Type s} {A : Type u} {B : Type v} [CommRing R] [CommRing S] [CommRing A] [CommRing B] {W' : WeierstrassCurve.Projective 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.Projective.Y_ne_negY_of_Y_ne' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā W'.negY Q * P 2) : P 1 ā W'.negY P - WeierstrassCurve.Projective.isUnit_dblZ_of_Y_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā Q 1 * P 2) : IsUnit (W.dblZ P) - WeierstrassCurve.Projective.dblZ_ne_zero_of_Y_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā Q 1 * P 2) : W'.dblZ P ā 0 - WeierstrassCurve.Projective.addXYZ_of_X_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) : W.addXYZ P Q = WeierstrassCurve.Projective.addU P Q ⢠![0, 1, 0] - WeierstrassCurve.Projective.Y_eq_iff' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hPz : P 2 ā 0) (hQz : Q 2 ā 0) : P 1 * Q 2 = W.negY Q * P 2 ā P 1 / P 2 = W.toAffine.negY (Q 0 / Q 2) (Q 1 / Q 2) - WeierstrassCurve.Projective.Y_ne_negY_of_Y_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā Q 1 * P 2) : P 1 ā W'.negY P - WeierstrassCurve.Projective.dblZ_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W'.negY Q * P 2) : W'.dblZ P = 0 - WeierstrassCurve.Projective.Y_eq_negY_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W'.negY Q * P 2) : P 1 = W'.negY P - WeierstrassCurve.Projective.Y_eq_of_Y_ne š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā Q 1 * P 2) : P 1 * Q 2 = W'.negY Q * P 2 - WeierstrassCurve.Projective.Y_eq_of_Y_ne' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 ā W'.negY Q * P 2) : P 1 * Q 2 = Q 1 * P 2 - WeierstrassCurve.Projective.dblY_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W.negY Q * P 2) : W.dblY P = W.dblU P - WeierstrassCurve.Projective.isUnit_dblU_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Nonsingular P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W.negY Q * P 2) : IsUnit (W.dblU P) - WeierstrassCurve.Projective.dblX_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W'.negY Q * P 2) : W'.dblX P = 0 - WeierstrassCurve.Projective.dblU_ne_zero_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Nonsingular P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W.negY Q * P 2) : W.dblU P ā 0 - WeierstrassCurve.Projective.negAddY_of_X_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 = Q 0 * P 2) : W'.negAddY P Q * (P 2 * Q 2) ^ 2 = (P 1 * Q 2 - Q 1 * P 2) ^ 3 * (P 2 * Q 2) - WeierstrassCurve.Projective.Y_sub_Y_add_Y_sub_negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (hx : P 0 * Q 2 = Q 0 * P 2) : P 1 * Q 2 - Q 1 * P 2 + (P 1 * Q 2 - W'.negY Q * P 2) = (P 1 - W'.negY P) * Q 2 - WeierstrassCurve.Projective.negDblY_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W.negY Q * P 2) : W.negDblY P = -W.dblU P - WeierstrassCurve.Projective.Y_sub_Y_mul_Y_sub_negY š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hx : P 0 * Q 2 = Q 0 * P 2) : P 2 * Q 2 * (P 1 * Q 2 - Q 1 * P 2) * (P 1 * Q 2 - W'.negY Q * P 2) = 0 - WeierstrassCurve.Projective.dblU_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} (P : Fin 3 ā F) : W.dblU P = (W.aā * P 1 * P 2 - (3 * P 0 ^ 2 + 2 * W.aā * P 0 * P 2 + W.aā * P 2 ^ 2)) ^ 3 / P 2 ^ 2 - WeierstrassCurve.Projective.dblXYZ_of_Y_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W.negY Q * P 2) : W.dblXYZ P = W.dblU P ⢠![0, 1, 0] - WeierstrassCurve.Projective.addY_of_X_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) : W'.addY P Q * (P 2 * Q 2) ^ 3 = -(P 1 * Q 2 - Q 1 * P 2) ^ 3 * (P 2 * Q 2) ^ 2 - WeierstrassCurve.Projective.addX_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 ā Q 0 * P 2) : W.addX P Q / W.addZ P Q = W.toAffine.addX (P 0 / P 2) (Q 0 / Q 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.negDblY_of_Y_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W'.negY Q * P 2) : W'.negDblY P * P 2 ^ 2 = -(MvPolynomial.eval P) W'.polynomialX ^ 3 - WeierstrassCurve.Projective.addY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 ā Q 0 * P 2) : W.addY P Q / W.addZ P Q = W.toAffine.addY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.negAddY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 ā Q 0 * P 2) : W.negAddY P Q / W.addZ P Q = W.toAffine.negAddY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.dblY_of_Y_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [NoZeroDivisors R] {P Q : Fin 3 ā R} (hP : W'.Equation P) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) (hx : P 0 * Q 2 = Q 0 * P 2) (hy : P 1 * Q 2 = Q 1 * P 2) (hy' : P 1 * Q 2 = W'.negY Q * P 2) : W'.dblY P * P 2 ^ 2 = (MvPolynomial.eval P) W'.polynomialX ^ 3 - WeierstrassCurve.Projective.dblX_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā W.negY Q * P 2) : W.dblX P / W.dblZ P = W.toAffine.addX (P 0 / P 2) (Q 0 / Q 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.dblY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā W.negY Q * P 2) : W.dblY P / W.dblZ P = W.toAffine.addY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.negDblY_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā W.negY Q * P 2) : W.negDblY P / W.dblZ P = W.toAffine.negAddY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)) - WeierstrassCurve.Projective.dblX_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P : Fin 3 ā R} (hP : W'.Equation P) : W'.dblX P * P 2 = ((MvPolynomial.eval P) W'.polynomialX ^ 2 - W'.aā * (MvPolynomial.eval P) W'.polynomialX * P 2 * (P 1 - W'.negY P) - W'.aā * P 2 ^ 2 * (P 1 - W'.negY P) ^ 2 - 2 * P 0 * P 2 * (P 1 - W'.negY P) ^ 2) * (P 1 - W'.negY P) - WeierstrassCurve.Projective.dblX_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hP : W.Equation P) (hPz : P 2 ā 0) : W.dblX P = ((MvPolynomial.eval P) W.polynomialX ^ 2 - W.aā * (MvPolynomial.eval P) W.polynomialX * P 2 * (P 1 - W.negY P) - W.aā * P 2 ^ 2 * (P 1 - W.negY P) ^ 2 - 2 * P 0 * P 2 * (P 1 - W.negY P) ^ 2) * (P 1 - W.negY P) / P 2 - WeierstrassCurve.Projective.addXYZ_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 ā Q 0 * P 2) : W.addXYZ P Q = W.addZ P Q ⢠![W.toAffine.addX (P 0 / P 2) (Q 0 / Q 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)), W.toAffine.addY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)), 1] - WeierstrassCurve.Projective.dblXYZ_of_Z_ne_zero š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 = Q 0 * P 2) (hy : P 1 * Q 2 ā W.negY Q * P 2) : W.dblXYZ P = W.dblZ P ⢠![W.toAffine.addX (P 0 / P 2) (Q 0 / Q 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)), W.toAffine.addY (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (W.toAffine.slope (P 0 / P 2) (Q 0 / Q 2) (P 1 / P 2) (Q 1 / Q 2)), 1] - WeierstrassCurve.Projective.negDblY_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P : Fin 3 ā R} (hP : W'.Equation P) : W'.negDblY P * P 2 ^ 2 = -(MvPolynomial.eval P) W'.polynomialX * ((MvPolynomial.eval P) W'.polynomialX ^ 2 - W'.aā * (MvPolynomial.eval P) W'.polynomialX * P 2 * (P 1 - W'.negY P) - W'.aā * P 2 ^ 2 * (P 1 - W'.negY P) ^ 2 - 2 * P 0 * P 2 * (P 1 - W'.negY P) ^ 2 - P 0 * P 2 * (P 1 - W'.negY P) ^ 2) + P 1 * P 2 ^ 2 * (P 1 - W'.negY P) ^ 3 - WeierstrassCurve.Projective.negDblY_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P : Fin 3 ā F} (hP : W.Equation P) (hPz : P 2 ā 0) : W.negDblY P = (-(MvPolynomial.eval P) W.polynomialX * ((MvPolynomial.eval P) W.polynomialX ^ 2 - W.aā * (MvPolynomial.eval P) W.polynomialX * P 2 * (P 1 - W.negY P) - W.aā * P 2 ^ 2 * (P 1 - W.negY P) ^ 2 - 2 * P 0 * P 2 * (P 1 - W.negY P) ^ 2 - P 0 * P 2 * (P 1 - W.negY P) ^ 2) + P 1 * P 2 ^ 2 * (P 1 - W.negY P) ^ 3) / P 2 ^ 2 - WeierstrassCurve.Projective.addX_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective 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 - Q 1 * P 2) ^ 2 * P 2 * Q 2 + W'.aā * (P 1 * Q 2 - Q 1 * P 2) * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) - W'.aā * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - Q 0 * P 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2) * (P 0 * Q 2 - Q 0 * P 2) - WeierstrassCurve.Projective.addX_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective 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 - Q 1 * P 2) ^ 2 * P 2 * Q 2 + W.aā * (P 1 * Q 2 - Q 1 * P 2) * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) - W.aā * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - Q 0 * P 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2) * (P 0 * Q 2 - Q 0 * P 2) / (P 2 * Q 2) ^ 2 - WeierstrassCurve.Projective.negAddY_eq' š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {P Q : Fin 3 ā R} (hP : W'.Equation P) (hQ : W'.Equation Q) : W'.negAddY P Q * (P 2 * Q 2) ^ 2 = (P 1 * Q 2 - Q 1 * P 2) * ((P 1 * Q 2 - Q 1 * P 2) ^ 2 * P 2 * Q 2 + W'.aā * (P 1 * Q 2 - Q 1 * P 2) * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) - W'.aā * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - Q 0 * P 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2) + P 1 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 3 - WeierstrassCurve.Projective.negAddY_eq š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Formula
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} {P Q : Fin 3 ā F} (hP : W.Equation P) (hQ : W.Equation Q) (hPz : P 2 ā 0) (hQz : Q 2 ā 0) : W.negAddY P Q = ((P 1 * Q 2 - Q 1 * P 2) * ((P 1 * Q 2 - Q 1 * P 2) ^ 2 * P 2 * Q 2 + W.aā * (P 1 * Q 2 - Q 1 * P 2) * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) - W.aā * P 2 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - Q 0 * P 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2 - P 0 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 2) + P 1 * Q 2 * (P 0 * Q 2 - Q 0 * P 2) ^ 3) / (P 2 * Q 2) ^ 2 - WeierstrassCurve.Projective.Point š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) : Type r - WeierstrassCurve.Projective.negMap š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P : WeierstrassCurve.Projective.PointClass R) : WeierstrassCurve.Projective.PointClass R - WeierstrassCurve.Projective.Point.instAdd š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} : Add W.Point - WeierstrassCurve.Projective.Point.instAddCommGroup š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} : AddCommGroup W.Point - WeierstrassCurve.Projective.Point.instNeg š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} : Neg W.Point - WeierstrassCurve.Projective.Point.instZeroOfNontrivial š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [Nontrivial R] : Zero W'.Point - WeierstrassCurve.Projective.Point.point š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} (self : W'.Point) : WeierstrassCurve.Projective.PointClass R - WeierstrassCurve.Projective.addMap š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] (W' : WeierstrassCurve.Projective R) (P Q : WeierstrassCurve.Projective.PointClass R) : WeierstrassCurve.Projective.PointClass R - WeierstrassCurve.Projective.Point.fromAffine š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} [Nontrivial R] : W'.toAffine.Point ā W'.Point - WeierstrassCurve.Projective.Point.mk š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{R : Type r} [CommRing R] {W' : WeierstrassCurve.Projective R} {point : WeierstrassCurve.Projective.PointClass R} (nonsingular : W'.NonsingularLift point) : W'.Point - WeierstrassCurve.Projective.Point.neg š Mathlib.AlgebraicGeometry.EllipticCurve.Projective.Point
{F : Type u} [Field F] {W : WeierstrassCurve.Projective F} (P : W.Point) : W.Point
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