Group law on Weierstrass curves #
This file proves that the nonsingular rational points on a Weierstrass curve form an abelian group
under the geometric group law defined in Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean, in
Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean, and in
Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean.
Mathematical background #
Let W be a Weierstrass curve over a field F given by a Weierstrass equation W(X, Y) = 0 in
affine coordinates. As in Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean, the set of
nonsingular rational points W⟮F⟯ of W consist of the unique point at infinity 𝓞 and
nonsingular affine points (x, y). With this description, there is an addition-preserving injection
between W⟮F⟯ and the ideal class group of the coordinate ring F[W] := F[X, Y] / ⟨W(X, Y)⟩ of
W. This is defined by mapping the point at infinity 𝓞 to the trivial ideal class and an affine
point (x, y) to the ideal class of the invertible fractional ideal ⟨X - x, Y - y⟩. Proving that
this is well-defined and preserves addition reduce to checking several equalities of integral
ideals, which is done in WeierstrassCurve.Affine.CoordinateRing.XYIdeal_neg_mul and in
WeierstrassCurve.Affine.CoordinateRing.XYIdeal_mul_XYIdeal via explicit ideal computations. Now
F[W] is a free rank two F[X]-algebra with basis {1, Y}, so every element of F[W] is of the
form p + qY for some p, q ∈ F[X], and there is an algebra norm N : F[W] → F[X]. Injectivity
can then be shown by computing the degree of such a norm N(p + qY) in two different ways, which is
done in WeierstrassCurve.Affine.CoordinateRing.degree_norm_smul_basis and in the auxiliary lemmas
in the proof of WeierstrassCurve.Affine.Point.instAddCommGroup.
When W is given in Jacobian coordinates, WeierstrassCurve.Jacobian.Point.toAffineAddEquiv pulls
back the group law on WeierstrassCurve.Affine.Point to WeierstrassCurve.Jacobian.Point.
When W is given in projective coordinates, WeierstrassCurve.Projective.Point.toAffineAddEquiv
pulls back the group law on WeierstrassCurve.Affine.Point to WeierstrassCurve.Projective.Point.
Main definitions #
WeierstrassCurve.Affine.CoordinateRing: the coordinate ringF[W]of a Weierstrass curveW.WeierstrassCurve.Affine.CoordinateRing.basis: the power basis ofF[W]overF[X].
Main statements #
WeierstrassCurve.Affine.CoordinateRing.instIsDomainCoordinateRing: the coordinate ring of an affine Weierstrass curve is an integral domain.WeierstrassCurve.Affine.CoordinateRing.degree_norm_smul_basis: the degree of the norm of an element in the coordinate ring of an affine Weierstrass curve in terms of the power basis.WeierstrassCurve.Affine.Point.instAddCommGroup: the type of nonsingular rational points on an affine Weierstrass curve forms an abelian group under addition.WeierstrassCurve.Jacobian.Point.instAddCommGroup: the type of nonsingular rational points on a Jacobian Weierstrass curve forms an abelian group under addition.WeierstrassCurve.Projective.Point.instAddCommGroup: the type of nonsingular rational points on a projective Weierstrass curve forms an abelian group under addition.
References #
Tags #
elliptic curve, group law, class group
Weierstrass curves in affine coordinates #
The coordinate ring $R[W] := R[X, Y] / \langle W(X, Y) \rangle$ of W.
Equations
Instances For
The function field $R(W) := \mathrm{Frac}(R[W])$ of W.
Equations
Instances For
The coordinate ring as an R[X]-algebra #
The natural ring homomorphism mapping an element of R[X][Y] to an element of R[W].
Instances For
The basis $\{1, Y\}$ for the coordinate ring $R[W]$ over the polynomial ring $R[X]$.
Equations
- WeierstrassCurve.Affine.CoordinateRing.basis W = ⋯.by_cases (fun (x : Subsingleton R) => default) fun (x : Nontrivial R) => (AdjoinRoot.powerBasis' ⋯).basis.reindex (finCongr ⋯)
Instances For
The ring homomorphism R[W] →+* S[W.map f] induced by a ring homomorphism f : R →+* S.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Ideals in the coordinate ring over a ring #
The class of the element $X - x$ in $R[W]$ for some $x \in R$.
Equations
Instances For
The class of the element $Y - y(X)$ in $R[W]$ for some $y(X) \in R[X]$.
Equations
Instances For
The ideal $\langle X - x \rangle$ of $R[W]$ for some $x \in R$.
Equations
Instances For
The ideal $\langle Y - y(X) \rangle$ of $R[W]$ for some $y(X) \in R[X]$.
Equations
Instances For
The ideal $\langle X - x, Y - y(X) \rangle$ of $R[W]$ for some $x \in R$ and $y(X) \in R[X]$.
Equations
Instances For
The $R$-algebra isomorphism from $R[W] / \langle X - x, Y - y(X) \rangle$ to $R$ obtained by evaluation at $y(X)$ and at $x$ provided that $W(x, y(x)) = 0$.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Ideals in the coordinate ring over a field #
The non-zero fractional ideal $\langle X - x, Y - y \rangle$ of $F(W)$ for some $x, y \in F$.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Norms on the coordinate ring #
The axioms for nonsingular rational points on a Weierstrass curve #
The set function mapping an affine point $(x, y)$ of W to the class of the non-zero fractional
ideal $\langle X - x, Y - y \rangle$ of $F(W)$ in the class group of $F[W]$.
Equations
Instances For
The group homomorphism mapping an affine point $(x, y)$ of W to the class of the non-zero
fractional ideal $\langle X - x, Y - y \rangle$ of $F(W)$ in the class group of $F[W]$.
Equations
- WeierstrassCurve.Affine.Point.toClass = { toFun := WeierstrassCurve.Affine.Point.toClassFun, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Weierstrass curves in projective coordinates #
Weierstrass curves in Jacobian coordinates #
Elliptic curves in affine coordinates #
An affine point on an elliptic curve E over R.