Documentation

Mathlib.AlgebraicGeometry.EllipticCurve.Group

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.

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 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.

Main definitions #

Main statements #

References #

https://drops.dagstuhl.de/storage/00lipics/lipics-vol268-itp2023/LIPIcs.ITP.2023.6/LIPIcs.ITP.2023.6.pdf

Tags #

elliptic curve, group law, class group

Weierstrass curves in affine coordinates #

@[reducible, inline]

The function field R(W) := Frac(R[W]) of a Weierstrass curve W.

Equations

The coordinate ring as an R[X]-algebra #

@[reducible, inline]

The natural ring homomorphism mapping R[X][Y] to R[W].

Equations

The power basis {1, Y} for R[W] over R[X].

Equations
theorem WeierstrassCurve.Affine.CoordinateRing.smul_basis_eq_zero {R : Type u} [CommRing R] {W : Affine R} {p q : Polynomial R} (hpq : p 1 + q (mk W) Polynomial.X = 0) :
p = 0 q = 0

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.
theorem WeierstrassCurve.Affine.CoordinateRing.map_smul {R : Type u} {S : Type v} [CommRing R] [CommRing S] {W : Affine R} (f : R →+* S) (x : Polynomial R) (y : W.CoordinateRing) :
(map W f) (x y) = Polynomial.map f x (map W f) y

Ideals in the coordinate ring over a ring #

The class of the element Y - y(X) in R[W] for some y(X) in R[X].

Equations
theorem WeierstrassCurve.Affine.CoordinateRing.XYIdeal_add_eq {R : Type u} [CommRing R] (W : Affine R) (x₁ x₂ y₁ L : R) :
XYIdeal W (W.addX x₁ x₂ L) (Polynomial.C (W.addY x₁ x₂ y₁ L)) = Ideal.span {(mk W) (W.negPolynomial - Polynomial.C (linePolynomial x₁ y₁ L))} XIdeal W (W.addX x₁ x₂ L)

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
  • One or more equations did not get rendered due to their size.

Ideals in the coordinate ring over a field #

theorem WeierstrassCurve.Affine.CoordinateRing.C_addPolynomial_slope {F : Type u} [Field F] {W : Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = W.negY x₂ y₂)) :
(mk W) (Polynomial.C (W.addPolynomial x₁ y₁ (W.slope x₁ x₂ y₁ y₂))) = -(XClass W x₁ * XClass W x₂ * XClass W (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)))
theorem WeierstrassCurve.Affine.CoordinateRing.XYIdeal_eq₂ {F : Type u} [Field F] {W : Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = W.negY x₂ y₂)) :
XYIdeal W x₂ (Polynomial.C y₂) = XYIdeal W x₂ (linePolynomial x₁ y₁ (W.slope x₁ x₂ y₁ y₂))
theorem WeierstrassCurve.Affine.CoordinateRing.XYIdeal_mul_XYIdeal {F : Type u} [Field F] {W : Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Equation x₁ y₁) (h₂ : W.Equation x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = W.negY x₂ y₂)) :
XIdeal W (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) * (XYIdeal W x₁ (Polynomial.C y₁) * XYIdeal W x₂ (Polynomial.C y₂)) = YIdeal W (linePolynomial x₁ y₁ (W.slope x₁ x₂ y₁ y₂)) * XYIdeal W (W.addX x₁ x₂ (W.slope x₁ x₂ y₁ y₂)) (Polynomial.C (W.addY x₁ x₂ y₁ (W.slope x₁ x₂ y₁ y₂)))

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.
theorem WeierstrassCurve.Affine.CoordinateRing.XYIdeal'_eq {F : Type u} [Field F] {W : Affine F} {x y : F} (h : W.Nonsingular x y) :
(XYIdeal' h) = (XYIdeal W x (Polynomial.C y))
@[deprecated WeierstrassCurve.Affine.CoordinateRing.mk_XYIdeal'_neg_mul (since := "2025-03-01")]

Alias of WeierstrassCurve.Affine.CoordinateRing.mk_XYIdeal'_neg_mul.

theorem WeierstrassCurve.Affine.CoordinateRing.mk_XYIdeal'_mul_mk_XYIdeal' {F : Type u} [Field F] {W : Affine F} {x₁ x₂ y₁ y₂ : F} (h₁ : W.Nonsingular x₁ y₁) (h₂ : W.Nonsingular x₂ y₂) (hxy : ¬(x₁ = x₂ y₁ = W.negY x₂ y₂)) :

Norms on the coordinate ring #

The axioms for nonsingular rational points on a Weierstrass curve #

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.
@[simp]
@[deprecated WeierstrassCurve.Affine.Point.toClass (since := "2025-02-01")]

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].

Equations

Elliptic curves in affine coordinates #

An affine point on an elliptic curve E over a commutative ring R.

Equations