Weierstrass equations and the nonsingular condition in projective coordinates #
A point on the unweighted projective plane over a commutative ring R
is an equivalence class
[x : y : z]
of triples (x, y, z) ≠ (0, 0, 0)
of elements in R
such that
(x, y, z) ∼ (x', y', z')
if there is some unit u
in Rˣ
with (x, y, z) = (ux', uy', uz')
.
Let W
be a Weierstrass curve over a commutative ring R
with coefficients aᵢ
. A
projective point is a point on the unweighted projective plane over R
satisfying the
homogeneous Weierstrass equation W(X, Y, Z) = 0
in projective coordinates, where
W(X, Y, Z) := Y²Z + a₁XYZ + a₃YZ² - (X³ + a₂X²Z + a₄XZ² + a₆Z³)
. It is nonsingular if its
partial derivatives W_X(x, y, z)
, W_Y(x, y, z)
, and W_Z(x, y, z)
do not vanish simultaneously.
This file gives an explicit implementation of equivalence classes of triples up to scaling by units,
and defines polynomials associated to Weierstrass equations and the nonsingular condition in
projective coordinates. The group law on the actual type of nonsingular projective points will be
defined in Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Point.lean
, based on the formulae
for group operations in Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Formula.lean
.
Main definitions #
WeierstrassCurve.Projective.PointClass
: the equivalence class of a point representative.WeierstrassCurve.Projective.Nonsingular
: the nonsingular condition on a point representative.WeierstrassCurve.Projective.NonsingularLift
: the nonsingular condition on a point class.
Main statements #
WeierstrassCurve.Projective.polynomial_relation
: Euler's homogeneous function theorem.
Implementation notes #
All definitions and lemmas for Weierstrass curves in projective coordinates live in the namespace
WeierstrassCurve.Projective
to distinguish them from those in other coordinates. This is simply an
abbreviation for WeierstrassCurve
that can be converted using WeierstrassCurve.toProjective
.
This can be converted into WeierstrassCurve.Affine
using WeierstrassCurve.Projective.toAffine
.
A point representative is implemented as a term P
of type Fin 3 → R
, which allows for the vector
notation ![x, y, z]
. However, P
is not definitionally equivalent to the expanded vector
![P x, P y, P z]
, so the lemmas fin3_def
and fin3_def_ext
can be used to convert between the
two forms. The equivalence of two point representatives P
and Q
is implemented as an equivalence
of orbits of the action of Rˣ
, or equivalently that there is some unit u
of R
such that
P = u • Q
. However, u • Q
is not definitionally equal to ![u * Q x, u * Q y, u * Q z]
, so the
lemmas smul_fin3
and smul_fin3_ext
can be used to convert between the two forms. Files in
Mathlib/AlgebraicGeometry/EllipticCurve/Projective
make extensive use of erw
to get around this.
While erw
is often an indication of a problem, in this case it is self-contained and should not
cause any issues. It would alternatively be possible to add some automation to assist here.
Whenever possible, all changes to documentation and naming of definitions and theorems should be
mirrored in Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Basic.lean
.
References #
J Silverman, The Arithmetic of Elliptic Curves
Tags #
elliptic curve, projective, Weierstrass equation, nonsingular
Projective coordinates #
An abbreviation for a Weierstrass curve in projective coordinates.
Equations
Instances For
The conversion from a Weierstrass curve to projective coordinates.
Equations
- W.toProjective = W
Instances For
The conversion from a Weierstrass curve in projective coordinates to affine coordinates.
Equations
Instances For
The equivalence setoid for a projective point representative on a Weierstrass curve.
Equations
Instances For
The equivalence class of a projective point representative on a Weierstrass curve.
Equations
Instances For
Weierstrass equations in projective coordinates #
The polynomial W(X, Y, Z) := Y²Z + a₁XYZ + a₃YZ² - (X³ + a₂X²Z + a₄XZ² + a₆Z³)
associated to a
Weierstrass curve W
over a ring R
in projective coordinates.
This is represented as a term of type MvPolynomial (Fin 3) R
, where X 0
, X 1
, and X 2
represent X
, Y
, and Z
respectively.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The proposition that a projective point representative (x, y, z)
lies in a Weierstrass curve
W
.
In other words, it satisfies the homogeneous Weierstrass equation W(X, Y, Z) = 0
.
Equations
- W'.Equation P = ((MvPolynomial.eval P) W'.polynomial = 0)
Instances For
The nonsingular condition in projective coordinates #
The partial derivative W_X(X, Y, Z)
with respect to X
of the polynomial W(X, Y, Z)
associated to a Weierstrass curve W
in projective coordinates.
Equations
- W'.polynomialX = (MvPolynomial.pderiv 0) W'.polynomial
Instances For
The partial derivative W_Y(X, Y, Z)
with respect to Y
of the polynomial W(X, Y, Z)
associated to a Weierstrass curve W
in projective coordinates.
Equations
- W'.polynomialY = (MvPolynomial.pderiv 1) W'.polynomial
Instances For
The partial derivative W_Z(X, Y, Z)
with respect to Z
of the polynomial W(X, Y, Z)
associated to a Weierstrass curve W
in projective coordinates.
Equations
- W'.polynomialZ = (MvPolynomial.pderiv 2) W'.polynomial
Instances For
Euler's homogeneous function theorem in projective coordinates.
The proposition that a projective point representative (x, y, z)
on a Weierstrass curve W
is
nonsingular.
In other words, either W_X(x, y, z) ≠ 0
, W_Y(x, y, z) ≠ 0
, or W_Z(x, y, z) ≠ 0
.
Note that this definition is only mathematically accurate for fields.
Equations
- W'.Nonsingular P = (W'.Equation P ∧ ((MvPolynomial.eval P) W'.polynomialX ≠ 0 ∨ (MvPolynomial.eval P) W'.polynomialY ≠ 0 ∨ (MvPolynomial.eval P) W'.polynomialZ ≠ 0))
Instances For
The proposition that a projective point class on a Weierstrass curve W
is nonsingular.
If P
is a projective point representative on W
, then W.NonsingularLift ⟦P⟧
is definitionally
equivalent to W.Nonsingular P
.
Note that this definition is only mathematically accurate for fields.
Equations
- W'.NonsingularLift P = Quotient.lift W'.Nonsingular ⋯ P