Creation of a Hyperelliptic Curve
HyperellipticCurve(h, f) : RngUPolElt, RngUPolElt -> CrvHyp
HyperellipticCurveOfGenus(g, h, f) : RngIntElt, RngUPolElt, RngUPolElt -> CrvHyp
HyperellipticCurve(E) : CrvEll -> CrvHyp, Map
Creation Predicates
IsHyperellipticCurve([h, g]) : [ RngUPolElt ] -> BoolElt, CrvHyp
IsHyperellipticCurveOfGenus(g, [h, f]) : RngIntElt, [RngUPolElt] -> BoolElt, CrvHyp
Example CrvHyp_Creation (H88E1)
Changing the Base Ring
BaseChange(C, K) : Sch, Fld -> Sch
BaseChange(C, j) : Sch, Map -> Sch
BaseChange(C, n) : Sch, RngIntElt -> Sch
ChangeRing(C, K) : Sch, Rng -> Sch
Example CrvHyp_BaseExtension (H88E2)
Models for Hyperelliptic Curves
SimplifiedModel(C) : CrvHyp -> CrvHyp, MapIsoSch
IntegralModel(C) : CrvHyp -> CrvHyp, MapIsoSch
HasOddDegreeModel(C) : CrvHyp -> BoolElt, CrvHyp, MapIsoSch
MinimalWeierstrassModel(C) : CrvHyp -> CrvHyp, MapIsoSch
pNormalModel(C, p) : CrvHyp, RngIntElt -> CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p) : CrvHyp, RngIntElt -> CrvHyp, MapIsoSch
ReducedModel(C) : CrvHyp -> CrvHyp, MapIsoSch
ReducedMinimalWeierstrassModel(C) : CrvHyp -> CrvHyp, MapIsoSch
Predicates on Curve Models
IsIntegral(C) : CrvHyp -> BoolElt
IspIntegral(C, p) : CrvHyp, RngIntElt -> BoolElt
IspNormal(C, p) : CrvHyp, RngIntElt -> BoolElt
IspMinimal(C, p) : CrvHyp, RngIntElt -> BoolElt, BoolElt
Twisting Hyperelliptic Curves
QuadraticTwist(C, d) : CrvHyp, RngElt -> CrvHyp
QuadraticTwist(C) : CrvHyp -> CrvHyp
QuadraticTwists(C) : CrvHyp -> SeqEnum
IsQuadraticTwist(C1, C2) : CrvHyp, CrvHyp -> BoolElt, RngElt
Example CrvHyp_QuadraticTwists (H88E3)
Example CrvHyp_QuadraticTwists (H88E4)
Type Change Predicates
IsEllipticCurve(C) : CrvHyp -> BoolElt, CrvEll, MapIsoSch, MapIsoSch
Elementary Invariants
HyperellipticPolynomials(C) : CrvHyp -> RngUPolElt, RngUPolElt
Degree(C) : CrvHyp -> RngIntElt
Discriminant(C) : CrvHyp -> RngElt
Genus(C) : CrvHyp -> RngIntElt
Igusa Invariants
ClebschInvariants(C) : CrvHyp -> SeqEnum
ClebschInvariants(f) : RngUPolElt -> SeqEnum
IgusaClebschInvariants(C: parameters) : CrvHyp -> SeqEnum
IgusaClebschInvariants(h, f) : RngUPolElt, RngUPolElt -> SeqEnum
IgusaClebschInvariants(f: parameters) : RngUPolElt -> SeqEnum
IgusaInvariants(C: parameters): CrvHyp -> SeqEnum
IgusaInvariants(h, f): RngUPolElt, RngUPolElt -> SeqEnum
IgusaInvariants(f: parameters) : RngUPolElt -> SeqEnum
ScaledIgusaInvariants(h, f): RngUPolElt, RngUPolElt -> SeqEnum
ScaledIgusaInvariants(f): RngUPolElt -> SeqEnum
AbsoluteInvariants(C) : CrvHyp -> SeqEnum
ClebschToIgusaClebsch(Q) : SeqEnum -> SeqEnum
IgusaClebschToIgusa(S) : SeqEnum -> SeqEnum
Base Ring
BaseField(C) : Sch -> Fld
Creating a Hyperelliptic Curve from Invariants
HyperellipticCurveFromIgusaClebsch(S) : SeqEnum -> CrvHyp
ReduceCurve(C) : CrvHyp -> CrvHyp
SetVerbose("CrvHypRed", v) : MonStgElt, RngIntElt ->
Example CrvHyp_CurveFromIgusa (H88E5)
Function Field and Polynomial Ring
FunctionField(C) : Sch -> FldFunG
DefiningPolynomial(C) : Sch -> RngMPolElt
EvaluatePolynomial(C, a, b, c) : CrvHyp, RngElt, RngElt, RngElt -> RngElt
Points on Hyperelliptic Curves
Creation of Points
C ! [x, y] : CrvHyp, [RngElt] -> PtHyp
C ! P : CrvHyp, PtHyp -> PtHyp
Points(C, x) : CrvHyp, RngElt -> SetIndx
PointsAtInfinity(C) : CrvHyp -> SetIndx
IsPoint(C, S) : CrvHyp, SeqEnum -> BoolElt, PtHyp
Random Points
Random(C) : CrvHyp -> PtHyp
Predicates on Points
P eq Q : PtHyp, PtHyp -> BoolElt
P ne Q : PtHyp, PtHyp -> BoolElt
Access Operations
P[i] : PtHyp, RngIntElt -> RngElt
Eltseq(P) : PtHyp -> SeqEnum
Arithmetic of Points
- P : PtHyp -> PtHyp
Enumeration and Counting Points
# C : CrvHyp -> RngIntElt
Points(C) : CrvHyp -> SetIndx
RationalPoints(C) : Sch -> SetIndx
PointsKnown(C) : CrvHyp -> BoolElt
ZetaFunction(C) : CrvHyp -> FldFunRatUElt
ZetaFunction(C,K) : CrvHyp, FldFin -> FldFunRatUElt
Example CrvHyp_PointEnumeration (H88E6)
Frobenius
Frobenius(P, F) : PtHyp, FldFin -> PtHyp
Isomorphisms and Transformations
Creation of Isomorphisms
Aut(C) : CrvHyp -> PowAutSch
Iso(C1,C2) : CrvHyp, CrvHyp -> PowIsoSch
Transformation(C, t) : CrvHyp, [RngElt] -> CrvHyp, MapIsoSch
Example CrvHyp_Transformation (H88E7)
Arithmetic with Isomorphisms
f * g : MapIsoSch, MapIsoSch -> MapIsoSch
Inverse(f) : MapIsoSch -> MapIsoSch
f in M : MapIsoSch, PowIsoSch -> BoolElt
P @ f : PtHyp, MapIsoSch -> PtHyp
P @@ f : PtHyp, MapIsoSch -> PtHyp
f eq g : MapIsoSch, MapIsoSch -> BoolElt
Invariants of Isomorphisms
Parent(f) : MapIsoSch -> PowIsoSch
Domain(f) : MapIsoSch -> CrvHyp
Codomain(f) : MapIsoSch -> CrvHyp
Automorphism Group and Isomorphism Testing
IsGL2Equivalent(f, g, n) : RngUPolElt, RngUPolElt, RngIntElt -> BoolElt, SeqEnum
IsIsomorphic(C1, C2) : CrvHyp, CrvHyp -> BoolElt, MapIsoSch
AutomorphismGroup(C) : CrvHyp -> GrpPerm, Map, Map
Example CrvHyp_Automorphism_Group (H88E8)
Jacobians of Hyperelliptic Curves
Creation of a Jacobian
Jacobian(C) : CrvHyp -> JacHyp
Access Operations
Curve(J) : JacHyp -> CrvHyp
Dimension(J) : JacHyp -> RngIntElt
Base Ring
BaseField(J) : JacHyp -> Fld
Changing the Base Ring
BaseChange(J, F) : JacHyp, Rng -> JacHyp
BaseChange(J, j) : JacHyp, Map -> JacHyp
BaseChange(J, n) : JacHyp, RngIntElt -> JacHyp
Creation of Points
J ! 0 : JacHyp, RngIntElt -> JacHypPt
J ! [a, b] : JacHyp, [ RngUPolElt ] -> JacHypPt
J ! [P,Q] : [PtHyp] -> JacHypPt
J ! [S,T] : [[PtHyp]] -> JacHypPt
J ! P : JacHyp, JacHypPt -> JacHypPt
Random Points
Random(J) : JacHyp -> JacHypPt
Booleans and Predicates for Points
P eq Q : JacHypPt, JacHypPt -> BoolElt
P ne Q : JacHypPt, JacHypPt -> BoolElt
IsZero(P) : JacHypPt -> BoolElt
Access Operations
P[i] : JacHypPt, RngIntElt -> RngElt
Eltseq(P) : PtHyp -> SeqEnum, RngIntElt
Arithmetic of Points
- P : JacHypPt -> JacHypPt
P + Q : JacHypPt, JacHypPt -> JacHypPt
P +:= Q : JacHypPt, JacHypPt ->
P - Q : JacHypPt, JacHypPt -> JacHypPt
P -:= Q : JacHypPt, JacHypPt ->
n * P : RngIntElt, JacHypPt -> JacHypPt
P *:= n : JacHypPt, RngIntElt ->
Order of Points on the Jacobian
Order(P) : JacHypPt -> RngIntElt
Order(P, l, u) : JacHypPt, RngIntElt, RngIntElt -> RngIntElt
Order(P, l, u, n, m) : JacHypPt, RngIntElt, RngIntElt ,RngIntElt, RngIntElt -> RngIntElt
HasOrder(P, n) : JacHypPt, RngIntElt -> BoolElt
Frobenius
Frobenius(P, k) : JacHypPt, FldFin -> JacHypPt
Weil Pairing
WeilPairing(P, Q, m) : JacHypPt, JacHypPt, RngIntElt -> RngElt
Example CrvHyp_Jac_WeilPairing (H88E9)
Rational Points and Group Structure
Enumeration of Points
Points(J) : JacHyp -> SetIndx
RationalPoints(J, a, d) : JacHyp, RngUPolElt, RngIntElt -> SetIndx
Counting Points on the Jacobian
SetVerbose("JacHypCnt", v) : MonStgElt, RngIntElt ->
# J : JacHyp -> RngIntElt
Example CrvHyp_Jac_Point_Counting (H88E10)
FactoredOrder(J) : JacHyp -> [ <RngIntElt, RngIntElt> ]
EulerFactor(J) : JacHyp -> RngUPolElt
EulerFactorModChar(J) : JacHyp -> RngUPolElt
EulerFactor(J, K) : JacHyp, FldFin -> RngUPolElt
Abelian Group Structure
TwoTorsionSubgroup(J) : JacHyp -> GrpAb, Map
TorsionBound(J, n) : JacHyp, RngIntElt -> RngIntElt
TorsionSubgroup(J) : JacHyp -> GrpAb, Map
Sylow(J, p) : JacHyp, RngIntElt) -> GrpAb, Map, Eseq
AbelianGroup(J) : JacHyp -> GrpAb, Map
Example CrvHyp_TorsionGroups (H88E11)
Heights and Mordell--Weil Group
HeightConstant(J: parameters) : JacHyp -> FldPrElt, FldPrElt
NaiveHeight(P) : JacHypPt -> FldPrElt
Height(P: Precision) : JacHypPt -> FldPrElt
HeightPairing(P, Q: Precision) : JacHypPt, JacHypPt -> FldPrElt
HeightPairingMatrix(S: Precision) : [JacHypPt] -> AlgMat
Regulator(S: Precision) : [JacHypPt] -> FldPrElt
ReducedBasis(S: Precision) : [JacHypPt] -> SeqEnum, AlgMatElt
Example CrvHyp_HeightPairing (H88E12)
The 2-Selmer Group
IsDeficient(C, p) : CrvHyp, RngIntElt -> BoolElt
BadPrimes(C) : CrvHyp -> SeqEnum
BadPrimes(J) : JacHyp -> SeqEnum
IsEven(J) : JacHyp -> BoolElt
TwoSelmerGroupData(J: parameters) : JacHyp -> RngIntElt, RngIntElt, Tup, List
Chabauty's Method
Chabauty0(J) : JacHyp -> SetIndx
Chabauty(P, p: Precision) : JacHypPt, RngIntElt -> SetIndx
Creation of a Kummer Surface
KummerSurface(J) : JacHyp -> SrfKum
Structure Operations
DefiningPolynomial(K) : SrfKum -> RngMPolElt
Base Ring
BaseField(K) : SrfKum -> Fld
Changing the Base Ring
BaseChange(K, F) : SrfKum, Rng -> SrfKum
BaseChange(K, j) : SrfKum, Map -> SrfKum
BaseChange(K, n): SrfKum, RngIntElt -> SrfKum
Creation of Points
K ! 0 : SrfKum, RngIntElt -> SrfKumPt
K ! [x1, x2, x3, x4] : SrfKum, [ RngElt ] -> SrfKumPt
K ! P : SrfKum, SrfKumPt -> SrfKumPt
IsPoint(K, S) : SrfKum, [RngElt] -> BoolElt, SrfKumPt
Points(K,[x1, x2, x3]) : SrfKum, [RngElt] -> SetIndx
Access Operations
P[i] : SrfKumPt, RngIntElt -> RngElt
Eltseq(P) : SrfKumPt -> SeqEnum
Predicates on Points
P eq Q : SrfKumPt, SrfKumPt -> BoolElt
P ne Q : SrfKumPt, SrfKumPt -> BoolElt
Arithmetic of Points
- P : SrfKumPt -> SrfKumPt
n * P : RngIntElt, SrfKumPt -> SrfKumPt
Double(P) : SrfKumPt -> SrfKumPt
PseudoAdd(P1, P2, P3) : SrfKumPt, SrfKumPt, SrfKumPt -> SrfKumPt
PseudoAddMultiple(P1, P2, P3, n) : SrfKumPt, SrfKumPt, SrfKumPt, RngIntElt -> SrfKumPt
Rational Points on the Kummer Surface
RationalPoints(K, Q) : SrfKum, [RngElt] -> SetIndx
Example CrvHyp_KummerRationalPoints (H88E13)