Derivations and the addition law on a Weierstrass curve #
Let W be a Weierstrass curve over R, let K be an R-algebra and let D : Derivation R K M be
a derivation on K over R. Writing W_X and W_Y for the partial derivatives polynomialX and
polynomialY of the Weierstrass polynomial, this file records how D interacts with the points of
W⁄K and with the formulae of the addition law.
Main statements #
Equation.evalEval_polynomialX_smul_add_evalEval_polynomialY_smul_eq_zero(in the namespaceWeierstrassCurve.Affine): at a point(x, y)ofW⁄K,W_X(x, y) • D x + W_Y(x, y) • D y = 0, the differential of the Weierstrass equation, over any commutative ringK.WeierstrassCurve.Affine.derivation_evalEval_polynomialX,WeierstrassCurve.Affine.derivation_evalEval_polynomialYandWeierstrassCurve.Affine.derivation_addX: the chain rule forW_X,W_YandaddX.WeierstrassCurve.Affine.Equation.derivation_Y_eq_smul_derivation_X: over a field, at a point whereW_Ydoes not vanish,D y = (-W_X(x, y) / W_Y(x, y)) • D x.WeierstrassCurve.Affine.derivation_slope_of_X_neandWeierstrassCurve.Affine.derivation_slope_self_of_Y_ne: the chain rule for the chord and the tangent slope.WeierstrassCurve.Affine.derivation_addX_slope: if(x₃, y₃)is the sum of two points(x₁, y₁)and(x₂, y₂)ofW⁄Kat whichW_Ydoes not vanish (whenx₁ ≠ x₂), thenD x₃ = W_Y(x₃, y₃) • (W_Y(x₁, y₁)⁻¹ • D x₁ + W_Y(x₂, y₂)⁻¹ • D x₂); whenW_Y(x₃, y₃)is nonzero as well,WeierstrassCurve.Affine.inv_smul_derivation_addX_slopedivides by it:W_Y(x₃, y₃)⁻¹ • D x₃ = W_Y(x₁, y₁)⁻¹ • D x₁ + W_Y(x₂, y₂)⁻¹ • D x₂.
The last two identities are the additivity of the differential dx / W_Y, with and without the
denominator at the sum cleared. On an elliptic curve dx / W_Y is the invariant differential, and
the identity is the computation behind the additivity of its pullback along a sum of morphisms
(Silverman, The Arithmetic of Elliptic Curves, III.5.2); the version for two points of W⁄K and
their sum is in Affine/Point/Derivation.lean. Everything is stated for an arbitrary derivation,
so that it applies to the Kähler differentials of a function field without any further hypothesis.
Provenance #
The identity for two points with distinct x-coordinates generalises the computation
kaehlerD_addPullback_x_eq_one_add_smul_omega of HasseWeil/RouteBGeneral.lean in
AINTLIB (commit 513e83879e2f8cbc626eb9e04d660e92be16ccba,
Apache 2.0), where the first point is the generic point of the curve and the second its image under
an endomorphism, from the Kähler differential to an arbitrary derivation.
Two formulae, and the coefficient identities #
The coefficient identities are between elements of the base field: they are the coefficients of
D x₁ and D x₂ in the derivation of the sum's x-coordinate, computed by the chain rule from
the addition formulae, compared with the coefficients in derivation_addX_slope.
The difference between a point and its negative is W_Y: y - negY x y = W_Y(x, y).
Derivations at the points of a base change #
The differential of the Weierstrass equation. At a point (x, y) of W⁄K, every
derivation D on K over R satisfies W_X(x, y) • D x + W_Y(x, y) • D y = 0.
The chain rule for W_X: D (W_X(x, y)) = a₁ • D y - (6x + 2a₂) • D x.
The chain rule for W_Y: D (W_Y(x, y)) = 2 • D y + a₁ • D x.
The chain rule for addX: D (addX x₁ x₂ ℓ) = (2ℓ + a₁) • D ℓ - D x₁ - D x₂.
The derivation of the y-coordinate is determined by that of the x-coordinate: at a
point of W⁄K where W_Y does not vanish, D y = (-W_X(x, y) / W_Y(x, y)) • D x.
The chain rule for the chord slope: for x₁ ≠ x₂,
D ℓ = (x₁ - x₂)⁻² • ((x₁ - x₂) • (D y₁ - D y₂) - (y₁ - y₂) • (D x₁ - D x₂)).
The chain rule for the tangent slope -W_X / W_Y at a point which is not its own
negative.
The derivation of the x-coordinate of a sum of points. Let (x₁, y₁) and (x₂, y₂) be
points of W⁄K whose sum (x₃, y₃) is affine, at both of which W_Y = 2Y + a₁X + a₃ does not
vanish when x₁ ≠ x₂ (in the tangent case x₁ = x₂ it cannot vanish). Then every derivation D
on K over R satisfies
D x₃ = W_Y(x₃, y₃) • (W_Y(x₁, y₁)⁻¹ • D x₁ + W_Y(x₂, y₂)⁻¹ • D x₂), the additivity of the
differential dx / W_Y with the denominator at the sum cleared.
The differential dx / W_Y is additive: under the hypotheses of derivation_addX_slope,
if W_Y does not vanish at the sum either, then
W_Y(x₃, y₃)⁻¹ • D x₃ = W_Y(x₁, y₁)⁻¹ • D x₁ + W_Y(x₂, y₂)⁻¹ • D x₂.