Points of a Weierstrass curve from formal-group parameters #
Over a complete ring O carrying the I-adic topology, a parameter t ∈ I gives a point of
W over any field K whose structure map O → K is injective: the w-expansion converges at
t, and the pair
(t / w(t), -1 / w(t)) satisfies the Weierstrass equation because the w-equation is that
equation read in the coordinates x = t / w, y = -1 / w. The parameter t = 0 gives the point
at infinity.
equation_formalPoint needs nothing beyond that: the pair lies on the curve for any W. Turning
it into a point does need the curve over K to be elliptic, so everything from formalPoint
onwards assumes [(W.baseChange K).IsElliptic] — weaker than asking W itself to be elliptic
over O, which would exclude an integral model whose discriminant is nonzero but not a unit.
The two coordinates are recorded in closed form as well. Since w(t) = t ^ 3 * u(t) with u(t)
a unit, the x-coordinate is inverse to t ^ 2 * u(t) and the y-coordinate to
-(t ^ 3 * u(t)). Both are stated as products in K, so no inverse of either factor has to be
named; the powers 2 and 3 of t they exhibit are what a valuation on K would later turn
into pole orders, but no order or valuation hypothesis is assumed here.
Main definitions #
WeierstrassCurve.formalPoint: the point ofW⁄Kattached to a parameter of an adic ideal.
Main results #
WeierstrassCurve.equation_formalPoint: the parametrized pair lies on the curve.WeierstrassCurve.formalPoint_eq_some: a point both of whose ratios-x / yand-1 / ycome from the ideal is the parametrised point of the first, the surjectivity companion ofWeierstrassCurve.formalPoint_injective.WeierstrassCurve.neg_xCoord_div_yCoord_formalPoint: the parameter read back off the point as-x / y, and with itWeierstrassCurve.formalPoint_eq_zero_iffandWeierstrassCurve.formalPoint_injective.WeierstrassCurve.formalPoint_of_param_eq_zeroandWeierstrassCurve.formalPoint_of_param_ne_zero: the two branches of the definition.WeierstrassCurve.formalPoint_formalInverseEval: the parametrisation respects negation — the formal inverse on parameters becomes the group inverse on points, which on a generalised Weierstrass curve sendsyto-y - a₁x - a₃rather than to-y.WeierstrassCurve.xRep_formalPoint_eq_iff: two parameters have points with the samex-coordinate exactly when they are equal or exchanged by the formal inverse, withWeierstrassCurve.mul_formalWEval_eq_mul_formalWEval_iffits chord form.WeierstrassCurve.xCoord_formalPointandWeierstrassCurve.yCoord_formalPoint: the point's coordinates, through which the closed formsWeierstrassCurve.xCoord_formalPoint_mul_eq_oneandWeierstrassCurve.yCoord_formalPoint_mul_eq_neg_oneare stated.
References #
- J. Silverman, The Arithmetic of Elliptic Curves, IV.1, VII.2.
Provenance #
The same parametrization is formalised in Michael Stoll's elliptic-curve development
(github.com/MichaelStollBayreuth/EllipticCurves @ 66889eada51a, Apache-2.0), file
EllipticCurves/WeierstrassFormalGroup/Filtration.lean, declarations formalPoint,
formalPoint_of_param_eq_zero, formalPoint_of_param_ne_zero, formalPoint_nonsingular and
formalPoint_negPoint. The first three keep their source names; the fourth is not restated,
Affine.Point.mk carrying the equation-to-nonsingularity step itself.
formalPoint_formalInverseEval is that source's formalPoint_negPoint. It is what makes the
parameters of an adic ideal closed under inverses as points, so that the chord case of
additivity in Point/Add.lean can read the addition series as a negated third root. Its name
takes this repository's vocabulary, formalInverseEval rather than the source's negPoint,
since the object being applied is the evaluated formal inverse.
mul_formalWEval_eq_mul_formalWEval_iff is that source's eq_or_eq_negPoint_of_x_cond, private
there and stated in one direction only; xRep_formalPoint_eq_iff is the form on xRep that it
specialises.
That development states them over v.adicCompletion K for a height-one prime of a Dedekind domain
and builds nonsingularity from a chord lemma of its own. The declarations below are stated over an
arbitrary complete adic ring mapping injectively to a field, and read the nonsingularity off
Mathlib's equation_iff_nonsingular, which Affine.Point.mk also uses.
A formal-group parameter gives a point of the curve: the pair (t / w(t), -1 / w(t))
satisfies the Weierstrass equation over K. The hypothesis is w(t) ≠ 0 rather than t ≠ 0,
because that is what the two denominators need; algebraMap_formalWEval_ne_zero supplies it
from a nonzero image algebraMap O K t ≠ 0, which FaithfulSMul O K below derives from
t ≠ 0.
The point attached to a formal-group parameter: a nonzero t in an adic ideal gives the
affine point (t / w(t), -1 / w(t)), and t = 0 gives the point at infinity.
Equations
- W.formalPoint hI ht = if h0 : t = 0 then 0 else have hT := ⋯; WeierstrassCurve.Affine.Point.mk ⋯
Instances For
The parameter 0 gives the point at infinity.
A nonzero parameter gives the affine point, with its coordinates in the form
equation_formalPoint states them.
The x-coordinate of the parametrized point is t / w(t).
The y-coordinate of the parametrized point is -1 / w(t).
The x-coordinate in closed form: since w(t) = t ^ 3 * u(t) with u(t) a unit, the
x-coordinate t / w(t) is the inverse of t ^ 2 * u(t). Stated as a product so that it needs
no inverse; the exponent 2 is what a valuation would read as the pole order.
The y-coordinate in closed form: -1 / w(t) is minus the inverse of t ^ 3 * u(t),
with exponent 3 where the x-coordinate has 2.
The parameter is recovered from the point as -x / y: the coordinates are t / w(t) and
-1 / w(t), so their ratio cancels w(t). This is the identity that makes the parametrization
injective, and hence the candidate injective side of Ê(𝔪) ≅ E₁(K). It covers the zero branch
as well, where both coordinates and the parameter are 0.
The parametrization vanishes exactly at the zero parameter: the fibre over the point at
infinity is exactly {0}. Calling that a kernel would be premature — no additive structure on
the parameters is established here.
The parametrization is injective on the parameters of I. Recovering the parameter as
-x / y reduces this to injectivity of the structure map, and it is what would make the map the
injective side of an identification with the kernel of reduction.
A point of the curve is the parametrised point of -x / y as soon as -x / y and -1 / y
both come from the ideal I. This is surjectivity of the parametrisation in its valuation-free
form: which points satisfy the hypothesis is a separate question, answered over an adic completion
in Point/Range.lean by exists_formalPoint_eq_of_one_lt_valuation_xCoord.
The two ratios are asked for as products, t * y = -x and s * y = -1, so that no division is
needed to state the hypothesis and y ≠ 0 follows from the second rather than being assumed. The
parameter s does not appear in the conclusion: it is there only to witness that -1 / y is a
value of the ideal, and the proof identifies it as w(t), which is what pins the point down.
The parametrisation respects negation. The formal inverse ι on parameters becomes the
group inverse on points — on a generalised Weierstrass curve the negY transformation
y ↦ -y - a₁x - a₃, not plain negation — so formalPoint carries the inverse law across.
Tagged @[simp] in the reducing orientation, towards point negation. Note that simp reaches it
only where the parameter is syntactically formalInverseEval t: the parameter sits in the
membership proof's type, so matching it otherwise would need higher-order unification.
Two parameters have points with the same x-coordinate exactly when they are equal or
exchanged by the formal inverse. Over a field the x-coordinate determines a point up to
negation, and the parametrisation respects negation, so t₁ and ι(t₁) are the only candidates.
Stated at equality of xRep, Mathlib's projective x-coordinate, which asks nothing of either
parameter: the point at infinity has xRep = ![1, 0] and an affine point ![x, 1], so the
left-hand side already forces the two parameters to vanish together. The right-hand side is about
the parameters alone, so the field the coordinates are read in is an explicit argument.
The chord form of xRep_formalPoint_eq_iff: when the cross-product of parameters against
w-values agrees.
w vanishes at 0, so a vanishing parameter satisfies the cross-product whatever the other one
is; those two cases are therefore disjuncts of the conclusion rather than hypotheses. With both
parameters nonzero the remaining two disjuncts are the dichotomy of xRep_formalPoint_eq_iff.
Not a simp lemma, unlike xRep_formalPoint_eq_iff: neither side names the field, so K and its
instances would be left as metavariables that simp cannot solve. Rewrite with it explicitly.