Hyperelliptic Curves
- Introduction
- Creation Functions
- Creation of a Hyperelliptic Curve
HyperellipticCurve(f, h): RngUPolElt, RngUPolElt → CrvHyp
HyperellipticCurve(f, h): RngElt, RngUPolElt → CrvHyp
HyperellipticCurve(f, h): RngUPolElt, RngElt → CrvHyp
HyperellipticCurve(f): RngUPolElt → CrvHyp
HyperellipticCurve([f, h]): [ RngUPolElt ] → CrvHyp
HyperellipticCurve(P, f, h): Prj, RngUPolElt, RngUPolElt → CrvHyp
HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngUPolElt, RngUPolElt → CrvHyp
HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngElt, RngUPolElt → CrvHyp
HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngUPolElt, RngElt → CrvHyp
HyperellipticCurveOfGenus(g, f): RngIntElt, RngUPolElt → CrvHyp
HyperellipticCurveOfGenus(g, [f, h]): RngIntElt, [RngUPolElt] → CrvHyp
HyperellipticCurve(E): CrvEll → CrvHyp, Map
- Creation Predicates
- Changing the Base Ring
BaseChange(C, K): Sch, Fld → Sch
BaseExtend(C, K): Sch, Fld → Sch
BaseChange(C, j): Sch, Map → Sch
BaseExtend(C, j): Sch, Map → Sch
BaseChange(C, n): Sch, RngIntElt → Sch
BaseExtend(C, n): Sch, RngIntElt → Sch
ChangeRing(C, K): Sch, Rng → Sch
Example: Base Extension
- Models
SimplifiedModel(C): CrvHyp → CrvHyp, MapIsoSch
HasOddDegreeModel(C): CrvHyp → BoolElt, CrvHyp, MapIsoSch
IntegralModel(C): CrvHyp → CrvHyp, MapIsoSch
MinimalWeierstrassModel(C): CrvHyp → CrvHyp, MapIsoSch
pIntegralModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch
pIntegralModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch
pIntegralModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch
pIntegralModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch
pIntegralModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch
pNormalModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch
pNormalModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch
pNormalModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch
pNormalModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch
pNormalModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch
pMinimalWeierstrassModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch
ReducedModel(C): CrvHyp → CrvHyp, MapIsoSch
ReducedMinimalWeierstrassModel(C): CrvHyp → CrvHyp, MapIsoSch
SetVerbose("CrvHypReduce", v): MonStgElt, RngIntElt
- Minimization and Reduction of Binary Forms
SetVerbose("Minimize", v): MonStgElt, RngIntElt
MinimizeAtP(f, p): RngMPolElt, RngIntElt → RngMPolElt, AlgMatElt, RngIntElt
MinRedBinaryForm(f): RngMPolElt → RngMPolElt, AlgMatElt, RngIntElt
MinRedBinaryForm(f): RngUPolElt → RngUPolElt, AlgMatElt, RngIntElt
Example: Bin Form Min Red
- Predicates on Models
IsSimplifiedModel(C): CrvHyp → BoolElt
IsIntegral(C): CrvHyp → BoolElt
IspIntegral(C, p): CrvHyp, RngIntElt → BoolElt
IspIntegral(C, p): CrvHyp, RngUPolElt → BoolElt
IspIntegral(C, p): CrvHyp, Infty → BoolElt
IspNormal(C, p): CrvHyp, RngIntElt → BoolElt
IspNormal(C, p): CrvHyp, RngUPolElt → BoolElt
IspNormal(C, p): CrvHyp, Infty → BoolElt
IspMinimal(C, p): CrvHyp, RngIntElt → BoolElt, BoolElt
IspMinimal(C, p): CrvHyp, RngUPolElt → BoolElt, BoolElt
IspMinimal(C, p): CrvHyp, Infty → BoolElt, BoolElt
- Type Change Predicates
- Operations on Curves
- Quadratic Twists
- Elementary Invariants
HyperellipticPolynomials(C): CrvHyp → RngUPolElt, RngUPolElt
Degree(C): CrvHyp → RngIntElt
Degree(C): SetPtHyp → RngIntElt
Discriminant(C): CrvHyp → RngElt
Genus(C): CrvHyp → RngIntElt
Conductor(C): CrvHyp → RngIntElt
Conductor(C, p): CrvHyp[FldRat], RngIntElt → RngIntElt
Conductor(C, P): CrvHyp[FldNum], RngOrdIdl → RngIntElt
Example: Crvhyp Conductor Q
ConductorExponent(C): CrvHyp[FldPad] → RngIntElt
Conductor(C): CrvHyp[FldPad] → FldPadElt
Example: Crvhyp Conductor Padic
EulerFactor(C, p): CrvHyp[FldRat], RngIntElt → RngUPolElt
EulerFactor(C, P): CrvHyp[FldNum], RngOrdIdl → RngUPolElt
EulerFactor(C): CrvHyp[FldPad] → RngUPolElt
EulerFactor(C, p): CrvHyp[FldNum], RngIntElt → RngUPolElt
Example: Crvhyp Eulerfactor
- Base Ring
- Function Field
- Function Field and Polynomial Ring
FunctionField(C): Sch → FldFunG
DefiningPolynomial(C): Sch → RngMPolElt
EvaluatePolynomial(C, a, b, c): CrvHyp, RngElt, RngElt, RngElt → RngElt
EvaluatePolynomial(C, [a, b, c]): CrvHyp, [RngElt] → RngElt
- Points
- Creation of Points
C ! [x, y]: CrvHyp, [RngElt] → PtHyp
C ! [x, y, z]: CrvHyp, [RngElt] → PtHyp
elt< PS | x, y >: SetPtHyp, RngElt, RngElt, RngElt → PtHyp
elt< PS | x, y, z >: SetPtHyp, RngElt, RngElt, RngElt → PtHyp
C ! P: CrvHyp, PtHyp → PtHyp
Points(C, x): CrvHyp, RngElt → SetIndx
RationalPoints(C, x): CrvHyp, RngElt → SetIndx
Points(C, x): CrvHyp, Infty → SetIndx
RationalPoints(C, x): CrvHyp, Infty → SetIndx
PointsAtInfinity(C): CrvHyp → SetIndx
IsPoint(C, S): CrvHyp, SeqEnum → BoolElt, PtHyp
Example: Points At Infinity On Hypcurves
- Random Points
- Predicates on Points
- Access Operations
- Arithmetic of Points
- Enumeration and Counting Points
- Frobenius
- Jacobians
- Creation of a Jacobian
- Access Operations
- Base Ring
- Changing the Base Ring
BaseChange(J, F): JacHyp, Rng → JacHyp
BaseExtend(J, F): JacHyp, Rng → JacHyp
BaseChange(J, j): JacHyp, Map → JacHyp
BaseExtend(J, j): JacHyp, Map → JacHyp
BaseChange(J, n): JacHyp, RngIntElt → JacHyp
BaseExtend(J, n): JacHyp, RngIntElt → JacHyp
- Richelot Isogenies
- Points on the Jacobian
- Creation of Points
J ! 0: JacHyp, RngIntElt → JacHypPt
Id(J): JacHyp → JacHypPt
Identity(J): JacHyp → JacHypPt
J ! [a, b]: JacHyp, [ RngUPolElt ] → JacHypPt
elt< J | a, b >: JacHyp, RngUPolElt, RngUPolElt → JacHypPt
elt< J | [a, b] >: JacHyp, [ RngUPolElt ] → JacHypPt
elt< J | a, b, d >: JacHyp, RngUPolElt, RngUPolElt, RngIntElt → JacHypPt
elt< J | [a, b], d >: JacHyp, [ RngUPolElt ], RngIntElt → JacHypPt
P - Q: PtHyp, PtHyp → JacHypPt
J ! [P, Q]: JacHyp, [PtHyp] → JacHypPt
elt< J | P, Q >: JacHyp, PtHyp, PtHyp → JacHypPt
J ! [S, T]: JacHyp, [SeqEnum] → JacHypPt
elt< J | S, T >: JacHyp, [PtHyp], [PtHyp] → JacHypPt
JacobianPoint(J, D): JacHyp, DivCrvElt → JacHypPt
J ! P: JacHyp, JacHypPt → JacHypPt
Points(J, a, d): JacHyp, RngUPolElt, RngIntElt → SetIndx
RationalPoints(J, a, d): JacHyp, RngUPolElt, RngIntElt → SetIndx
Example: Point Creation Jacobian
Example: Point Creation Jacobian2
Example: Point Creation Jacobian3
- Random Points
- Booleans and Predicates for Points
- Access Operations
- Arithmetic of Points
- 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
- Weil Pairing
- Rational Points and Group Structure over Finite Fields
- Jacobians over Number Fields or \({\mathbb{Q}}\)
- Searching For Points
- Torsion
- Heights and Regulator
- Saturation
- The \(2\)-Selmer Group
BadPrimes(C): CrvHyp → SeqEnum
BadPrimes(J): JacHyp → SeqEnum
HasSquareSha(J): JacHyp → BoolElt
IsEven(J): JacHyp → BoolElt
IsDeficient(C, p): CrvHyp, RngIntElt → BoolElt
HasIndexOne(C, p): CrvHyp, RngIntElt → BoolElt
HasIndexOne(C, p): CrvHyp, RngOrdIdl → BoolElt
HasIndexOneEverywhereLocally(C): CrvHyp → BoolElt
TwoSelmerGroup(J): JacHyp → GrpAb, Map, Any, Any
RankBound(J): JacHyp → RngIntElt
RankBounds(J): JacHyp → RngIntElt, RngIntElt
Example: 2 Selmer Group
Example: Nonsquare Sha
Example: Sha Visibility
Example: Better Rank Bounds
Example: Disregard The Warning
- The Mordell–Weil Group
- Two-Selmer Set of a Curve
- Chabauty’s Method
- Cyclic Covers of \({\mathbb{P}}^1\)
- Points
RationalPoints(f, q): RngUPolElt, RngIntElt → SetIndx
Points(f, q): RngUPolElt, RngIntElt → SetIndx
HasPoint(f, q, v): RngUPolElt, RngIntElt, RngIntElt → BoolElt, SeqEnum
HasPoint(f, q, v): RngUPolElt, RngIntElt, RngOrdIdl → BoolElt, SeqEnum
HasPointsEverywhereLocally(f, q): RngUPolElt, RngIntElt → BoolElt
- Descent
- Monic Models
- Descent on the Jacobian
PhiSelmerGroup(f, q): RngUPolElt, RngIntElt → GrpAb, Map
PicnDescent(f, q): RngUPolElt, RngIntElt → RngIntElt, GrpAb, Tup, RngIntElt, Map, GrpAb
RankBound(f, q): RngUPolElt, RngIntElt → RngIntElt
RankBounds(f, q): RngUPolElt, RngIntElt → RngIntElt, RngIntElt
Example: qcoverdescent
- Partial Descent
- Kummer Surfaces
- Creation of a Kummer Surface
- Structure Operations
- Base Ring
- Changing the Base Ring
BaseChange(K, F): SrfKum, Rng → SrfKum
BaseExtend(K, F): SrfKum, Rng → SrfKum
BaseChange(K, j): SrfKum, Map → SrfKum
BaseExtend(K, j): SrfKum, Map → SrfKum
BaseChange(K, n): SrfKum, RngIntElt → SrfKum
BaseExtend(K, n): SrfKum, RngIntElt → SrfKum
- Points on the Kummer Surface
- Creation of Points
K ! 0: SrfKum, RngIntElt → SrfKumPt
K ! [x1, x2, x3, x4]: SrfKum, [ RngElt ] → SrfKumPt
K ! P: SrfKum, SrfKumPt → SrfKumPt
K ! P: SrfKum, JacHypPt → SrfKumPt
IsPoint(K, S): SrfKum, [RngElt] → BoolElt, SrfKumPt
Points(K,[x1, x2, x3]): SrfKum, [RngElt] → SetIndx
- Access Operations
- Predicates on Points
- Arithmetic of Points
- P: SrfKumPt → SrfKumPt
n * P: RngIntElt, SrfKumPt → SrfKumPt
P * n: SrfKumPt, RngIntElt → 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
- Pullback to the Jacobian
- Analytic Jacobians of Hyperelliptic Curves
- Creation and Access Functions
- Period Matrices
- Maps between Jacobians
ToAnalyticJacobian(x, y, A): FldComElt, FldComElt, AnHcJac → Mtrx
FromAnalyticJacobian(z, A): Mtrx, AnHcJac → SeqEnum
Example: Analytic Jacobian Addition
- Isomorphisms, Isogenies and Endomorphism Rings of Analytic Jacobians
To2DUpperHalfSpaceFundamentalDomain(z): Mtrx → Mtrx, Mtrx
AnalyticHomomorphisms(t1, t2): Mtrx, Mtrx → SeqEnum
IsIsomorphicSmallPeriodMatrices(t1, t2): Mtrx, Mtrx → Bool, Mtrx
IsIsomorphicBigPeriodMatrices(P1, P2): Mtrx, Mtrx → Bool, Mtrx, Mtrx
IsIsomorphic(A1, A2): AnHcJac, AnHcJac → Bool, Mtrx, Mtrx
IsIsogenousPeriodMatrices(P1, P2): Mtrx, Mtrx → Bool, Mtrx
IsIsogenous(A1, A2): AnHcJac, AnHcJac → Bool, Mtrx, Mtrx
EndomorphismRing(P): Mtrx → AlgMat
EndomorphismRing(A): AnHcJac → AlgMat, SeqEnum
Example: Find Rational Isogeny
ToAnalyticJacobianMumford(pt, AJ): JacHypPt, AnHcJac → Mtrx
ToAnalyticJacobianMumford(pt, AJ, conj): JacHypPt, AnHcJac, RngIntElt → Mtrx
FromAnalyticJacobianProjective(z, A): Mtrx[FldCom], AnHcJac → SeqEnum
- From Period Matrix to Curve
- Voronoi Cells
- Invariants
- Igusa Invariants
ClebschInvariants(C): CrvHyp → SeqEnum
ClebschInvariants(f): RngUPolElt → SeqEnum
IgusaClebschInvariants(C: parameters): CrvHyp → SeqEnum
IgusaClebschInvariants(f, h): RngUPolElt, RngUPolElt → SeqEnum
IgusaClebschInvariants(f: parameters): RngUPolElt → SeqEnum
IgusaInvariants(C: parameters): CrvHyp → SeqEnum, SeqEnum
JInvariants(C: parameters): CrvHyp → SeqEnum
IgusaInvariants(f, h: parameters): RngUPolElt, RngUPolElt → SeqEnum, SeqEnum
JInvariants(f, h: parameters): RngUPolElt, RngUPolElt → SeqEnum, SeqEnum
IgusaInvariants(f: parameters): RngUPolElt → SeqEnum
IgusaInvariants(f: parameters): RngMPolElt → SeqEnum
JInvariants(f: parameters): RngUPolElt → SeqEnum
IgusaAlgebraicRelations(JI): SeqEnum → SeqEnum
IgusaInvariantsEqual(JI1, JI2): SeqEnum, SeqEnum → BoolElt
DiscriminantFromIgusaInvariants(JI): SeqEnum → Any
ScaledIgusaInvariants(f, h): RngUPolElt, RngUPolElt → SeqEnum
ScaledIgusaInvariants(f): RngUPolElt → SeqEnum
AbsoluteInvariants(C): CrvHyp → SeqEnum
ClebschToIgusaClebsch(Q): SeqEnum → SeqEnum
IgusaClebschToIgusa(S): SeqEnum → SeqEnum
G2Invariants(C): CrvHyp → SeqEnum
G2ToIgusaInvariants(GI): SeqEnum → SeqEnum
IgusaToG2Invariants(JI): SeqEnum → SeqEnum
- Shioda Invariants
- Creation from Invariants
- Isomorphisms and Transformations
- Creation of Isomorphisms
Aut(C): CrvHyp → PowAutSch
Iso(C1, C2): CrvHyp, CrvHyp → PowIsoSch
Transformation(C, t): CrvHyp, [RngElt] → CrvHyp, MapIsoSch
Transformation(C, u): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch
Transformation(C, e): CrvHyp, RngElt → CrvHyp, MapIsoSch
Transformation(C, e, u): CrvHyp, RngElt, RngUPolElt → CrvHyp, MapIsoSch
Transformation(C, t, e, u): CrvHyp, [RngElt], RngElt, RngUPolElt → CrvHyp, MapIsoSch
Example: Transformation
- Invariants of Isomorphisms
- Automorphism Group and Isomorphism Testing
IsIsomorphic(C1, C2): CrvHyp, CrvHyp → BoolElt, MapIsoSch
AutomorphismGroup(C): CrvHyp → GrpPerm, Map, Map
Example: Automorphism Group
IsIsomorphicHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → BoolElt, List
IsIsomorphicHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → BoolElt, List
Example: Is Isomorphic Hyperelliptic Curves
IsomorphismsOfHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → List
IsomorphismsOfHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → List
AutomorphismsOfHyperellipticCurve(X): CrvHyp → List
AutomorphismsOfHyperellipticCurve(f): RngUPolElt → List
AutomorphismGroupOfHyperellipticCurve(X, Autos): CrvHyp, List → GrpPerm, Map
AutomorphismGroupOfHyperellipticCurve(f, Autos): RngUPolElt, List → GrpPerm, Map
AutomorphismGroupOfHyperellipticCurve(X): CrvHyp → GrpPerm, Map
AutomorphismGroupOfHyperellipticCurve(f): RngUPolElt → GrpPerm, Map
Example: Automorphism Group Of HyperellipticCurve
GeometricAutomorphismGroup(C): CrvHyp → GrpPerm
GeometricAutomorphismGroupFromIgusaInvariants(GI): SeqEnum → SeqEnum, SeqEnum
GeometricAutomorphismGroupFromShiodaInvariants(JI): SeqEnum → GrpPerm
Example: Geometric Automorphism Group
GeometricAutomorphismGroupGenus2Classification(F): FldFin → SeqEnum, SeqEnum
GeometricAutomorphismGroupGenus3Classification(F): FldFin → SeqEnum, SeqEnum
Example: Aut Class
- Twisting Hyperelliptic Curves
TwistsOfHyperellipticPolynomials(f: parameters): RngUPolElt → SeqEnum[RngUPolElt], GrpPerm
TwistsOfHyperellipticPolynomials(fh): SeqEnum[RngUPolElt] → SeqEnum, GrpPerm
TwistedHyperellipticPolynomialsFromShiodaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum, GrpPerm
Twists(C: parameters): CrvHyp → SeqEnum[CrvHyp], GrpPerm
TwistsFromIgusaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm
TwistsFromG2Invariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm
TwistsFromShiodaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm
Twists(C, Autos: parameters): Crv, SeqEnum → SeqEnum[Crv], GrpPerm
HyperellipticPolynomialsFromShiodaInvariants(JI): SeqEnum → SeqEnum, GrpPerm
Example: Twists
Example: Quadratic Twists
- Reduced Automorphism Group and Reduced Isomorphism Testing
IsGL2Equivalent(f, g, n): RngUPolElt, RngUPolElt, RngIntElt → BoolElt, SeqEnum
IsGL2EquivalentExtended(f1, f2, deg): RngUPolElt, RngUPolElt, RngIntElt → BoolElt, List
IsReducedIsomorphicHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → BoolElt, List
IsReducedIsomorphicHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → BoolElt, List
ReducedIsomorphismsOfHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → List
ReducedIsomorphismsOfHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → List
ReducedAutomorphismsOfHyperellipticCurve(X): CrvHyp → List
ReducedAutomorphismsOfHyperellipticCurve(f): RngUPolElt → List
ReducedAutomorphismGroupOfHyperellipticCurve(X, Autos): CrvHyp, List → GrpPerm, Map
ReducedAutomorphismGroupOfHyperellipticCurve(f, Autos): RngUPolElt, List → GrpPerm, Map
ReducedAutomorphismGroupOfHyperellipticCurve(X): CrvHyp → GrpPerm, Map
ReducedAutomorphismGroupOfHyperellipticCurve(f): RngUPolElt → GrpPerm, Map