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 [silverman2009], section III.1, page 42.
WeierstrassCurve.IsCharNeTwoNFis a type class which asserts that aWeierstrassCurveis of formY² = X³ + a₂X² + a₄X + a₆. 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
WeierstrassCurvethere exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharNeTwoNF). See alsoWeierstrassCurve.toCharNeTwoNFandWeierstrassCurve.toCharNeTwoNF_spec.
The following normal forms are in [silverman2009], Appendix A, Proposition 1.1.
WeierstrassCurve.IsShortNFis a type class which asserts that aWeierstrassCurveis of formY² = X³ + a₄X + a₆. 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
WeierstrassCurvethere exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isShortNF). See alsoWeierstrassCurve.toShortNFandWeierstrassCurve.toShortNF_spec.If the ring is of characteristic = 3, then for any
WeierstrassCurvewithb₂ = 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.toShortNFOfCharThreeandWeierstrassCurve.toShortNFOfCharThree_spec).WeierstrassCurve.IsCharThreeJNeZeroNFis a type class which asserts that aWeierstrassCurveis of formY² = X³ + a₂X² + a₆. It is the normal form of characteristic = 3 and j ≠ 0.If the field is of characteristic = 3, then for any
WeierstrassCurvewithb₂ ≠ 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.toCharThreeNFandWeierstrassCurve.toCharThreeNF_spec_of_b₂_ne_zero).WeierstrassCurve.IsCharThreeNFis the combination of the above two, that is, asserts that aWeierstrassCurveis of formY² = X³ + a₂X² + a₆orY² = X³ + a₄X + a₆. It is the normal form of characteristic = 3.If the field is of characteristic = 3, then for any
WeierstrassCurvethere exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharThreeNF). See alsoWeierstrassCurve.toCharThreeNFandWeierstrassCurve.toCharThreeNF_spec.WeierstrassCurve.IsCharTwoJEqZeroNFis a type class which asserts that aWeierstrassCurveis of formY² + a₃Y = X³ + a₄X + a₆. It is the normal form of characteristic = 2 and j = 0.If the ring is of characteristic = 2, then for any
WeierstrassCurvewitha₁ = 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.toCharTwoJEqZeroNFandWeierstrassCurve.toCharTwoJEqZeroNF_spec).WeierstrassCurve.IsCharTwoJNeZeroNFis a type class which asserts that aWeierstrassCurveis of formY² + XY = X³ + a₂X² + a₆. It is the normal form of characteristic = 2 and j ≠ 0.If the field is of characteristic = 2, then for any
WeierstrassCurvewitha₁ ≠ 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.toCharTwoJNeZeroNFandWeierstrassCurve.toCharTwoJNeZeroNF_spec).WeierstrassCurve.IsCharTwoNFis the combination of the above two, that is, asserts that aWeierstrassCurveis of formY² + XY = X³ + a₂X² + a₆orY² + a₃Y = X³ + a₄X + a₆. It is the normal form of characteristic = 2.If the field is of characteristic = 2, then for any
WeierstrassCurvethere exists a change of variables which will change it into such normal form (WeierstrassCurve.exists_variableChange_isCharTwoNF). See alsoWeierstrassCurve.toCharTwoNFandWeierstrassCurve.toCharTwoNF_spec.
References #
- [J Silverman, The Arithmetic of Elliptic Curves][silverman2009]
Tags #
elliptic curve, weierstrass equation, normal form
Normal forms of characteristic ≠ 2 #
A WeierstrassCurve is in normal form of characteristic ≠ 2, if its a₁, a₃ = 0.
In other words it is Y² = X³ + a₂X² + a₄X + a₆.
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₁, a₂, a₃ = 0.
In other words it is Y² = X³ + a₄X + a₆.
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₁, a₃, a₄ = 0. In other words it is Y² = X³ + a₂X² + a₆.
Instances
Normal forms of characteristic = 3 #
A WeierstrassCurve is in normal form of characteristic = 3, if it is
Y² = X³ + a₂X² + a₆ (WeierstrassCurve.IsCharThreeJNeZeroNF) or
Y² = X³ + a₄X + a₆ (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² = X³ + a₄X + a₆
(WeierstrassCurve.IsShortNF) if its j = 0.
This is in fact given by WeierstrassCurve.toCharNeTwoNF.
Equations
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² = X³ + a₂X² + a₆ (WeierstrassCurve.IsCharThreeJNeZeroNF) or
Y² = X³ + a₄X + a₆ (WeierstrassCurve.IsShortNF).
It is the composition of an explicit change of variables with
WeierstrassCurve.toShortNFOfCharThree.
Equations
- W.toCharThreeNF = { u := 1, r := (W.toShortNFOfCharThree • W).a₄ / (W.toShortNFOfCharThree • W).a₂, s := 0, t := 0 } * W.toShortNFOfCharThree
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 and
a₃, a₄ = 0. In other words it is Y² + XY = X³ + a₂X² + a₆.
Instances
Normal forms of characteristic = 2 and j = 0 #
A WeierstrassCurve is in normal form of characteristic = 2 and j = 0, if its a₁, a₂ = 0.
In other words it is Y² + a₃Y = X³ + a₄X + a₆.
Instances
Normal forms of characteristic = 2 #
A WeierstrassCurve is in normal form of characteristic = 2, if it is
Y² + XY = X³ + a₂X² + a₆ (WeierstrassCurve.IsCharTwoJNeZeroNF) or
Y² + a₃Y = X³ + a₄X + a₆ (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² + a₃Y = X³ + a₄X + a₆
(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² + XY = X³ + a₂X² + a₆
(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² + XY = X³ + a₂X² + a₆ (WeierstrassCurve.IsCharTwoJNeZeroNF) or
Y² + a₃Y = X³ + a₄X + a₆ (WeierstrassCurve.IsCharTwoJEqZeroNF).
Equations
- W.toCharTwoNF = if ha₁ : W.a₁ = 0 then W.toCharTwoJEqZeroNF else W.toCharTwoJNeZeroNF ha₁