Nonsingular points and the group law in affine coordinates #
Let W
be a Weierstrass curve over a field F
given by a Weierstrass equation W(X, Y) = 0
in
affine coordinates. The type of nonsingular points W⟮F⟯
in affine coordinates is an inductive,
consisting of the unique point at infinity 𝓞
and nonsingular affine points (x, y)
. Then W⟮F⟯
can be endowed with a group law, with 𝓞
as the identity nonsingular point, which is uniquely
determined by the formulae in Mathlib/AlgebraicGeometry/EllipticCurve/Affine/Formula.lean
.
With this description, there is an addition-preserving injection between W⟮F⟯
and the ideal class
group of the affine coordinate ring F[W] := F[X, Y] / ⟨W(X, Y)⟩
of W
. This is given by mapping
𝓞
to the trivial ideal class and a nonsingular affine point (x, y)
to the ideal class of the
invertible ideal ⟨X - x, Y - y⟩
. Proving that this is well-defined and preserves addition reduces
to equalities of integral ideals checked 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
in 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
.
This file defines the group law on nonsingular points W⟮F⟯
in affine coordinates.
Main definitions #
WeierstrassCurve.Affine.CoordinateRing
: the affine coordinate ringF[W]
.WeierstrassCurve.Affine.CoordinateRing.basis
: the power basis ofF[W]
overF[X]
.WeierstrassCurve.Affine.Point
: a nonsingular point in affine coordinates.WeierstrassCurve.Affine.Point.neg
: the negation of a nonsingular point in affine coordinates.WeierstrassCurve.Affine.Point.add
: the addition of a nonsingular point in affine coordinates.
Main statements #
WeierstrassCurve.Affine.CoordinateRing.instIsDomainCoordinateRing
: the affine coordinate ring of a Weierstrass curve is an integral domain.WeierstrassCurve.Affine.CoordinateRing.degree_norm_smul_basis
: the degree of the norm of an element in the affine coordinate ring in terms of its power basis.WeierstrassCurve.Affine.Point.instAddCommGroup
: the type of nonsingular pointsW⟮F⟯
in affine coordinates forms an abelian group under addition.
Notations #
W⟮K⟯
: the group of nonsingular points onW
base changed toK
.
References #
- J Silverman, The Arithmetic of Elliptic Curves
- https://drops.dagstuhl.de/storage/00lipics/lipics-vol268-itp2023/LIPIcs.ITP.2023.6/LIPIcs.ITP.2023.6.pdf
Tags #
elliptic curve, affine, point, group law, class group
The affine coordinate ring #
The affine coordinate ring R[W] := R[X, Y] / ⟨W(X, Y)⟩
of a Weierstrass curve W
.
Equations
Instances For
The function field R(W) := Frac(R[W])
of a Weierstrass curve W
.
Equations
Instances For
The natural ring homomorphism mapping R[X][Y]
to R[W]
.
Equations
Instances For
The power basis {1, Y}
for R[W]
over 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 affine coordinate 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 ⟨X - x⟩
of R[W]
for some x
in R
.
Equations
Instances For
The ideal ⟨Y - y(X)⟩
of R[W]
for some y(X)
in R[X]
.
Equations
Instances For
The ideal ⟨X - x, Y - y(X)⟩
of R[W]
for some x
in R
and y(X)
in R[X]
.
Equations
Instances For
The R
-algebra isomorphism from R[W] / ⟨X - x, Y - y(X)⟩
to R
obtained by evaluation at
some y(X)
in R[X]
and at some x
in R
provided that W(x, y(x)) = 0
.
Equations
Instances For
The non-zero fractional ideal ⟨X - x, Y - y⟩
of F(W)
for some x
and y
in F
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of WeierstrassCurve.Affine.CoordinateRing.mk_XYIdeal'_neg_mul
.
Norms on the affine coordinate ring #
Nonsingular points in affine coordinates #
A nonsingular point on a Weierstrass curve W
in affine coordinates. This is either the unique
point at infinity WeierstrassCurve.Affine.Point.zero
or a nonsingular affine point
WeierstrassCurve.Affine.Point.some (x, y)
satisfying the Weierstrass equation of W
.
- zero {R : Type r} [CommRing R] {W' : Affine R} : W'.Point
- some {R : Type r} [CommRing R] {W' : Affine R} {x y : R} (h : W'.Nonsingular x y) : W'.Point
Instances For
For an algebraic extension S
of a ring R
, the type of nonsingular S
-points on a
Weierstrass curve W
over R
in affine coordinates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pretty printer defined by notation3
command.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
The negation of a nonsingular point on a Weierstrass curve in affine coordinates.
Given a nonsingular point P
in affine coordinates, use -P
instead of neg P
.
Equations
Instances For
Equations
Equations
- WeierstrassCurve.Affine.Point.instInvolutiveNeg = { toNeg := WeierstrassCurve.Affine.Point.instNeg, neg_neg := ⋯ }
The addition of two nonsingular points on a Weierstrass curve in affine coordinates.
Given two nonsingular points P
and Q
in affine coordinates, use P + Q
instead of add P Q
.
Equations
- WeierstrassCurve.Affine.Point.zero.add x✝ = x✝
- x✝.add WeierstrassCurve.Affine.Point.zero = x✝
- (WeierstrassCurve.Affine.Point.some h₁).add (WeierstrassCurve.Affine.Point.some h₂) = if hxy : x₁ = x₂ ∧ y₁ = W.negY x₂ y₂ then 0 else WeierstrassCurve.Affine.Point.some ⋯
Instances For
Equations
Equations
- WeierstrassCurve.Affine.Point.instAddZeroClass = { toZero := WeierstrassCurve.Affine.Point.instZero, toAdd := WeierstrassCurve.Affine.Point.instAdd, zero_add := ⋯, add_zero := ⋯ }
Alias of WeierstrassCurve.Affine.Point.add_some
.
Group law in affine coordinates #
The group homomorphism mapping a nonsingular affine point (x, y)
of a Weierstrass curve W
to
the class of the non-zero fractional ideal ⟨X - x, Y - y⟩
in the ideal class group of F[W]
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of WeierstrassCurve.Affine.Point.toClass
.
The group homomorphism mapping a nonsingular affine point (x, y)
of a Weierstrass curve W
to
the class of the non-zero fractional ideal ⟨X - x, Y - y⟩
in the ideal class group of F[W]
.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Maps and base changes #
The group homomorphism from W⟮F⟯
to W⟮K⟯
induced by an algebra homomorphism f : F →ₐ[S] K
,
where W
is defined over a subring of a ring S
, and F
and K
are field extensions of S
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of WeierstrassCurve.Affine.Point.map
.
The group homomorphism from W⟮F⟯
to W⟮K⟯
induced by an algebra homomorphism f : F →ₐ[S] K
,
where W
is defined over a subring of a ring S
, and F
and K
are field extensions of S
.
Instances For
The group homomorphism from W⟮F⟯
to W⟮K⟯
induced by the base change from F
to K
, where
W
is defined over a subring of a ring S
, and F
and K
are field extensions of S
.