Some normal forms of elliptic curves #
This file defines some normal forms of Weierstrass equations of elliptic curves.
Main definitions and results #
The following normal forms are in [Sil09], section III.1, page 42.
WeierstrassCurve.IsCharNeTwoNF
is a type class which asserts that aWeierstrassCurve
is of form $Y^2 = X^3 + a_2X^2 + a_4X + a_6$. It is the normal form of characteristic ≠ 2.If 2 is invertible in the ring (for example, if it is a field of characteristic ≠ 2), then for any
WeierstrassCurve
there exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharNeTwoNF
). See alsoWeierstrassCurve.toCharNeTwoNF
andWeierstrassCurve.toCharNeTwoNF_spec
.
The following normal forms are in [Sil09], Appendix A, Proposition 1.1.
WeierstrassCurve.IsShortNF
is a type class which asserts that aWeierstrassCurve
is of form $Y^2 = X^3 + a_4X + a_6$. It is the normal form of characteristic ≠ 2 or 3, and also the normal form of characteristic = 3 and j = 0.If 2 and 3 are invertible in the ring (for example, if it is a field of characteristic ≠ 2 or 3), then for any
WeierstrassCurve
there exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isShortNF
). See alsoWeierstrassCurve.toShortNF
andWeierstrassCurve.toShortNF_spec
.If the ring is of characteristic = 3, then for any
WeierstrassCurve
with $b_2 = 0$ (for an elliptic curve, this is equivalent to j = 0), there exists a change of variables which will change it into such normal form (seeWeierstrassCurve.toShortNFOfCharThree
andWeierstrassCurve.toShortNFOfCharThree_spec
).WeierstrassCurve.IsCharThreeJNeZeroNF
is a type class which asserts that aWeierstrassCurve
is of form $Y^2 = X^3 + a_2X^2 + a_6$. It is the normal form of characteristic = 3 and j ≠ 0.If the field is of characteristic = 3, then for any
WeierstrassCurve
with $b_2 \neq 0$ (for an elliptic curve, this is equivalent to j ≠ 0), there exists a change of variables which will change it into such normal form (seeWeierstrassCurve.toCharThreeNF
andWeierstrassCurve.toCharThreeNF_spec_of_b₂_ne_zero
).WeierstrassCurve.IsCharThreeNF
is the combination of the above two, that is, asserts that aWeierstrassCurve
is of form $Y^2 = X^3 + a_2X^2 + a_6$ or $Y^2 = X^3 + a_4X + a_6$. It is the normal form of characteristic = 3.If the field is of characteristic = 3, then for any
WeierstrassCurve
there exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharThreeNF
). See alsoWeierstrassCurve.toCharThreeNF
andWeierstrassCurve.toCharThreeNF_spec
.WeierstrassCurve.IsCharTwoJEqZeroNF
is a type class which asserts that aWeierstrassCurve
is of form $Y^2 + a_3Y = X^3 + a_4X + a_6$. It is the normal form of characteristic = 2 and j = 0.If the ring is of characteristic = 2, then for any
WeierstrassCurve
with $a_1 = 0$ (for an elliptic curve, this is equivalent to j = 0), there exists a change of variables which will change it into such normal form (seeWeierstrassCurve.toCharTwoJEqZeroNF
andWeierstrassCurve.toCharTwoJEqZeroNF_spec
).WeierstrassCurve.IsCharTwoJNeZeroNF
is a type class which asserts that aWeierstrassCurve
is of form $Y^2 + XY = X^3 + a_2X^2 + a_6$. It is the normal form of characteristic = 2 and j ≠ 0.If the field is of characteristic = 2, then for any
WeierstrassCurve
with $a_1 \neq 0$ (for an elliptic curve, this is equivalent to j ≠ 0), there exists a change of variables which will change it into such normal form (seeWeierstrassCurve.toCharTwoJNeZeroNF
andWeierstrassCurve.toCharTwoJNeZeroNF_spec
).WeierstrassCurve.IsCharTwoNF
is the combination of the above two, that is, asserts that aWeierstrassCurve
is of form $Y^2 + XY = X^3 + a_2X^2 + a_6$ or $Y^2 + a_3Y = X^3 + a_4X + a_6$. It is the normal form of characteristic = 2.If the field is of characteristic = 2, then for any
WeierstrassCurve
there exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharTwoNF
). See alsoWeierstrassCurve.toCharTwoNF
andWeierstrassCurve.toCharTwoNF_spec
.
References #
Tags #
elliptic curve, weierstrass equation, normal form
Normal forms of characteristic ≠ 2 #
A WeierstrassCurve
is in normal form of characteristic ≠ 2, if its $a_1, a_3 = 0$.
In other words it is $Y^2 = X^3 + a_2X^2 + a_4X + a_6$.
Instances
There is an explicit change of variables of a WeierstrassCurve
to
a normal form of characteristic ≠ 2, provided that 2 is invertible in the ring.
Instances For
Short normal form #
A WeierstrassCurve
is in short normal form, if its $a_1, a_2, a_3 = 0$.
In other words it is $Y^2 = X^3 + a_4X + a_6$.
This is the normal form of characteristic ≠ 2 or 3, and also the normal form of characteristic = 3 and j = 0.
Instances
There is an explicit change of variables of a WeierstrassCurve
to
a short normal form, provided that 2 and 3 are invertible in the ring.
It is the composition of an explicit change of variables with WeierstrassCurve.toCharNeTwoNF
.
Equations
Instances For
Normal forms of characteristic = 3 and j ≠ 0 #
A WeierstrassCurve
is in normal form of characteristic = 3 and j ≠ 0, if its
$a_1, a_3, a_4 = 0$. In other words it is $Y^2 = X^3 + a_2X^2 + a_6$.
Instances
Normal forms of characteristic = 3 #
A WeierstrassCurve
is in normal form of characteristic = 3, if it is
$Y^2 = X^3 + a_2X^2 + a_6$ (WeierstrassCurve.IsCharThreeJNeZeroNF
) or
$Y^2 = X^3 + a_4X + a_6$ (WeierstrassCurve.IsShortNF
).
- of_j_ne_zero {R : Type u_1} [CommRing R] {W : WeierstrassCurve R} [W.IsCharThreeJNeZeroNF] : W.IsCharThreeNF
- of_j_eq_zero {R : Type u_1} [CommRing R] {W : WeierstrassCurve R} [W.IsShortNF] : W.IsCharThreeNF
Instances
For a WeierstrassCurve
defined over a ring of characteristic = 3,
there is an explicit change of variables of it to $Y^2 = X^3 + a_4X + a_6$
(WeierstrassCurve.IsShortNF
) if its j = 0.
This is in fact given by WeierstrassCurve.toCharNeTwoNF
.
Equations
- W.toShortNFOfCharThree = W.toCharNeTwoNF
Instances For
For a WeierstrassCurve
defined over a field of characteristic = 3,
there is an explicit change of variables of it to WeierstrassCurve.IsCharThreeNF
, that is,
$Y^2 = X^3 + a_2X^2 + a_6$ (WeierstrassCurve.IsCharThreeJNeZeroNF
) or
$Y^2 = X^3 + a_4X + a_6$ (WeierstrassCurve.IsShortNF
).
It is the composition of an explicit change of variables with
WeierstrassCurve.toShortNFOfCharThree
.
Equations
Instances For
Normal forms of characteristic = 2 and j ≠ 0 #
A WeierstrassCurve
is in normal form of characteristic = 2 and j ≠ 0, if its $a_1 = 1$ and
$a_3, a_4 = 0$. In other words it is $Y^2 + XY = X^3 + a_2X^2 + a_6$.
Instances
Normal forms of characteristic = 2 and j = 0 #
A WeierstrassCurve
is in normal form of characteristic = 2 and j = 0, if its $a_1, a_2 = 0$.
In other words it is $Y^2 + a_3Y = X^3 + a_4X + a_6$.
Instances
Normal forms of characteristic = 2 #
A WeierstrassCurve
is in normal form of characteristic = 2, if it is
$Y^2 + XY = X^3 + a_2X^2 + a_6$ (WeierstrassCurve.IsCharTwoJNeZeroNF
) or
$Y^2 + a_3Y = X^3 + a_4X + a_6$ (WeierstrassCurve.IsCharTwoJEqZeroNF
).
- of_j_ne_zero {R : Type u_1} [CommRing R] {W : WeierstrassCurve R} [W.IsCharTwoJNeZeroNF] : W.IsCharTwoNF
- of_j_eq_zero {R : Type u_1} [CommRing R] {W : WeierstrassCurve R} [W.IsCharTwoJEqZeroNF] : W.IsCharTwoNF
Instances
For a WeierstrassCurve
defined over a ring of characteristic = 2,
there is an explicit change of variables of it to $Y^2 + a_3Y = X^3 + a_4X + a_6$
(WeierstrassCurve.IsCharTwoJEqZeroNF
) if its j = 0.
Equations
- W.toCharTwoJEqZeroNF = { u := 1, r := W.a₂, s := 0, t := 0 }
Instances For
For a WeierstrassCurve
defined over a field of characteristic = 2,
there is an explicit change of variables of it to $Y^2 + XY = X^3 + a_2X^2 + a_6$
(WeierstrassCurve.IsCharTwoJNeZeroNF
) if its j ≠ 0.
Equations
Instances For
For a WeierstrassCurve
defined over a field of characteristic = 2,
there is an explicit change of variables of it to WeierstrassCurve.IsCharTwoNF
, that is,
$Y^2 + XY = X^3 + a_2X^2 + a_6$ (WeierstrassCurve.IsCharTwoJNeZeroNF
) or
$Y^2 + a_3Y = X^3 + a_4X + a_6$ (WeierstrassCurve.IsCharTwoJEqZeroNF
).