Elliptic Curves
- Introduction
- Creation Functions
- Creation of an Elliptic Curve
EllipticCurve([a, b]): [ RngElt ] → CrvEll
EllipticCurve([a1, a2, a3, a4, a6]): [ RngElt ] → CrvEll
EllipticCurve(f): RngUPolElt → CrvEll
EllipticCurve(f, h): RngUPolElt, RngUPolElt → CrvEll
EllipticCurveFromjInvariant(j): RngElt → CrvEll
EllipticCurveWithjInvariant(j): RngElt → CrvEll
Example: Creation
EllipticCurve(C): Sch → CrvEll, MapSch
EllipticCurve(C, P): Crv, Pt → CrvEll, MapSch
EllipticCurve(C, pl): Crv, PlcCrvElt → CrvEll, MapSch
SupersingularEllipticCurve(K): FldFin → CrvEll
Example: Creation From Curve
Example: Creation From Curve2
- Creation Predicates
IsEllipticCurve([a, b]): [ RngElt ] → BoolElt, CrvEll
IsEllipticCurve([a1, a2, a3, a4, a6]): [ RngElt ] → BoolElt, CrvEll
IsEllipticCurve(C): CrvHyp → BoolElt, CrvEll, MapIsoSch, MapIsoSch
Example: Creation Test
- Changing the Base Ring
BaseChange(E, K): CrvEll, Rng → CrvEll
BaseExtend(E, K): CrvEll, Rng → CrvEll
ChangeRing(E, K): CrvEll, Rng → CrvEll
BaseChange(E, h): CrvEll, Map → CrvEll
BaseExtend(E, h): CrvEll, Map → CrvEll
BaseChange(E, n): CrvEll, RngIntElt → CrvEll
BaseExtend(E, n): CrvEll, RngIntElt → CrvEll
Example: Base Extend
- Alternative Models
WeierstrassModel(E): CrvEll → CrvEll, Map, Map
IntegralModel(E): CrvEll → CrvEll, Map, Map
SimplifiedModel(E): CrvEll → CrvEll, Map, Map
MinimalModel(E): CrvEll → CrvEll, Map, Map
MinimalModel(E, p): CrvEll, RngIntElt → CrvEll, Map, Map
MinimalModel(E, P : parameters): CrvEll, RngOrdIdl → CrvEll, Map
- Predicates on Curve Models
- Twists of Elliptic Curves
- Operations on Curves
- Elementary Invariants
- Associated Structures
- Predicates on Elliptic Curves
E eq F: CrvEll, CrvEll → BoolElt
E ne F: CrvEll, CrvEll → BoolElt
IsIsomorphic(E, F): CrvEll, CrvEll → BoolElt, Map
IsIsogenous(E, F): CrvEll[FldRat], CrvEll[FldRat] → BoolElt, Map
IsIsogenous(E, F): CrvEll[FldFin], CrvEll[FldFin] → BoolElt
Example: Twists2
- Polynomials
DefiningPolynomial(E): CrvEll → RngMPolElt
DivisionPolynomial(E, n): CrvEll, RngIntElt → RngUPolElt, RngUPolElt, RngUPolElt
DivisionPolynomial(E, n, g): CrvEll, RngIntElt, RngUPolElt → RngUPolElt, RngUPolElt, RngUPolElt
TwoTorsionPolynomial(E): CrvEll → RngMPolElt
Example: Division Polynomial
- Complex Multiplication Division Polynomials
- Subgroup Schemes
- The Formal Group
- Operations on Point Sets
- Morphisms
- Creation Functions
Example: Isogeny
Isomorphism(E, F, [r, s, t, u]): CrvEll, CrvEll, SeqEnum → Map
Isomorphism(E, F): CrvEll, CrvEll → Map
Automorphism(E, [r, s, t, u]): CrvEll, SeqEnum → Map
IsomorphismData(I): Map → [ RngElt ]
Example: Isomorphisms
IsIsomorphism(I): Map → BoolElt, Map
IsomorphismToIsogeny(I): Map → Map
Example: Isomorphism
TranslationMap(E, P): CrvEll, PtEll → Map
RationalMap(i, t): Map, Map → Map
TwoIsogeny(P): PtEll → Map
Example: Map
IsogenyFromKernel(G): SchGrpEll → CrvEll, Map
IsogenyFromKernelFactored(G): SchGrpEll → CrvEll, Map
IsogenyFromKernel(E, psi): CrvEll, RngUPolElt → CrvEll, Map
IsogenyFromKernelFactored(E, psi): SchGrpEll, RngUPolElt → CrvEll, Map
PushThroughIsogeny(I, v): Map, RngUPolElt → RngUPolElt
PushThroughIsogeny(I, G): Map, SchGrpEll → SchGrpEll
DualIsogeny(phi): Map → Map
Example: Dual Isogeny
- Predicates on Isogenies
- Structure Operations
- Endomorphisms
- Automorphisms
- Operations on Points
- Creation of Points
H ! [x, y, z]: SetPtEll, [ RngElt ] → PtEll
elt< H | x, y, z >: SetPtEll, RngElt, RngElt, RngElt → PtEll
E ! [x, y, z]: CrvEll, [ RngElt ] → PtEll
elt< E | x, y, z >: CrvEll, RngElt, RngElt, RngElt → PtEll
H ! 0: SetPtEll, RngIntElt → PtEll
Id(H): SetPtEll → PtEll
Identity(H): SetPtEll → PtEll
E ! 0: CrvEll, RngIntElt → PtEll
Id(E): CrvEll → PtEll
Identity(E): CrvEll → PtEll
Points(H, x): SetPtEll, RngElt → [ PtEll ]
Points(E, x): CrvEll, RngElt → [ PtEll ]
Points(H): SetPtEll → {@ PtEll @}
RationalPoints(H): SetPtEll → {@ PtEll @}
Points(E): CrvEll → {@ PtEll @}
RationalPoints(E): CrvEll → {@ PtEll @}
PointsAtInfinity(H): SetPtEll → {@ PtEll @}
PointsAtInfinity(E): CrvEll → {@ PtEll @}
- Creation Predicates
IsPoint(H, S): SetPtEll, [ RngElt ] → BoolElt, PtEll
IsPoint(E, S): CrvEll, [ RngElt ] → BoolElt, PtEll
IsPoint(H, x): SetPtEll, RngElt → BoolElt, PtEll
IsPoint(E, x): CrvEll, RngElt → BoolElt, PtEll
- Access Operations
- Associated Structures
- Arithmetic
- Division Points
- Point Order
- Predicates on Points
- Weil Pairing
WeilPairing(P, Q, n): PtEll, PtEll, RngIntElt → RngElt
IsLinearlyIndependent(S, n): [ PtEll ], RngIntElt → BoolElt
IsLinearlyIndependent(P, Q, n): PtEll, PtEll, RngIntElt → BoolElt
Example: Weil Pairing