Models of elliptic curves with prescribed j-invariant #
This file defines the Weierstrass equation over a field with prescribed j-invariant, proved that it is an elliptic curve, and that its j-invariant is equal to the given value. It is a modification of [Sil09], Chapter III, Proposition 1.4 (c).
Main definitions #
WeierstrassCurve.ofJ0
: an elliptic curve whose j-invariant is 0.WeierstrassCurve.ofJ1728
: an elliptic curve whose j-invariant is 1728.WeierstrassCurve.ofJNe0Or1728
: an elliptic curve whose j-invariant is neither 0 nor 1728.WeierstrassCurve.ofJ
: an elliptic curve whose j-invariant equal to j.
Main statements #
WeierstrassCurve.ofJ_j
: the j-invariant ofWeierstrassCurve.ofJ
is equal to j.
References #
Tags #
elliptic curve, weierstrass equation, j invariant
The Weierstrass curve Y² + Y = X³
. It is of j-invariant 0 if it is an elliptic curve.
Equations
- WeierstrassCurve.ofJ0 R = { a₁ := 0, a₂ := 0, a₃ := 1, a₄ := 0, a₆ := 0 }
Instances For
The Weierstrass curve Y² = X³ + X
. It is of j-invariant 1728 if it is an elliptic curve.
Equations
- WeierstrassCurve.ofJ1728 R = { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := 1, a₆ := 0 }
Instances For
The Weierstrass curve Y² + (j - 1728)XY = X³ - 36(j - 1728)³X - (j - 1728)⁵
.
It is a modification of the curve in [Sil09], Chapter III, Proposition 1.4 (c) to avoid
denominators. It is of j-invariant j if it is an elliptic curve.
Equations
Instances For
When 3 is a unit, Y² + Y = X³
is an elliptic curve.
It is of j-invariant 0 (see WeierstrassCurve.ofJ0_j
).
When 2 is a unit, Y² = X³ + X
is an elliptic curve.
It is of j-invariant 1728 (see WeierstrassCurve.ofJ1728_j
).
When j and j - 1728 are both units,
Y² + (j - 1728)XY = X³ - 36(j - 1728)³X - (j - 1728)⁵
is an elliptic curve.
It is of j-invariant j (see WeierstrassCurve.ofJNe0Or1728_j
).
For any element j of a field F
, there exists an elliptic curve over F
with j-invariant equal to j (see WeierstrassCurve.ofJ_j
).
Its coefficients are given explicitly (see WeierstrassCurve.ofJ0
, WeierstrassCurve.ofJ1728
and WeierstrassCurve.ofJNe0Or1728
).
Equations
- WeierstrassCurve.ofJ j = if j = 0 then if 3 = 0 then WeierstrassCurve.ofJ1728 F else WeierstrassCurve.ofJ0 F else if j = 1728 then WeierstrassCurve.ofJ1728 F else WeierstrassCurve.ofJNe0Or1728 j
Instances For
Equations
- WeierstrassCurve.instInhabitedSubtypeIsElliptic = { default := ⟨WeierstrassCurve.ofJ 37, ⋯⟩ }