[Next][Prev] [Right] [Left] [Up] [Index] [Root]

HYPERELLIPTIC CURVES

 
Acknowledgements
 
Introduction
 
Creation Functions
      Creation of a Hyperelliptic Curve
      Creation Predicates
      Changing the Base Ring
      Models
      Predicates on Models
      Twisting Hyperelliptic Curves
      Type Change Predicates
 
Operations on Curves
      Elementary Invariants
      Igusa Invariants
      Base Ring
 
Creation from Invariants
 
Function Field
      Function Field and Polynomial Ring
 
Points
      Creation of Points
      Random Points
      Predicates on Points
      Access Operations
      Arithmetic of Points
      Enumeration and Counting Points
      Frobenius
 
Isomorphisms and Transformations
      Creation of Isomorphisms
      Arithmetic with Isomorphisms
      Invariants of Isomorphisms
      Automorphism Group and Isomorphism Testing
 
Jacobians
      Creation of a Jacobian
      Access Operations
      Base Ring
      Changing the Base Ring
 
Points on the Jacobian
      Creation of Points
      Random Points
      Booleans and Predicates for Points
      Access Operations
      Arithmetic of Points
      Order of Points on the Jacobian
      Frobenius
      Weil Pairing
 
Rational Points and Group Structure
      Enumeration of Points
      Counting Points on the Jacobian
      Abelian Group Structure
 
Heights and Mordell--Weil Group
 
The 2-Selmer Group
 
Chabauty's Method
 
Kummer Surfaces
      Creation of a Kummer Surface
      Structure Operations
      Base Ring
      Changing the Base Ring
 
Points on the Kummer Surface
      Creation of Points
      Access Operations
      Predicates on Points
      Arithmetic of Points
      Rational Points on the Kummer Surface
      Pullback to the Jacobian
 
Analytic Jacobians of Hyperelliptic Curves
      Creation and Access Functions
      Maps between Jacobians
            Isomorphisms, Isogenies and Endomorphism Rings of Analytic Jacobians
      From Period Matrix to Curve
      Voronoi Cells
 
Bibliography







DETAILS

 
Introduction

 
Creation Functions

      Creation of a Hyperelliptic Curve
            HyperellipticCurve(f, h) : RngUPolElt, RngUPolElt -> CrvHyp
            HyperellipticCurveOfGenus(g, f, h) : RngIntElt, RngUPolElt, RngUPolElt -> CrvHyp
            HyperellipticCurve(E) : CrvEll -> CrvHyp, Map

      Creation Predicates
            IsHyperellipticCurve([f, h]) : [ RngUPolElt ] -> BoolElt, CrvHyp
            IsHyperellipticCurveOfGenus(g, [f, h]) : RngIntElt, [RngUPolElt] -> BoolElt, CrvHyp
            Example CrvHyp_Creation (H98E1)

      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 (H98E2)

      Models
            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
            SetVerbose("CrvHypReduce", v) : MonStgElt, RngIntElt ->

      Predicates on 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 (H98E3)
            Example CrvHyp_QuadraticTwists (H98E4)

      Type Change Predicates
            IsEllipticCurve(C) : CrvHyp -> BoolElt, CrvEll, MapIsoSch, MapIsoSch

 
Operations on Curves

      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(f, h) : RngUPolElt, RngUPolElt -> SeqEnum
            IgusaClebschInvariants(f: parameters) : RngUPolElt -> SeqEnum
            IgusaInvariants(C: parameters): CrvHyp -> SeqEnum
            IgusaInvariants(f, h): RngUPolElt, RngUPolElt -> SeqEnum
            IgusaInvariants(f: parameters) : RngUPolElt -> SeqEnum
            ScaledIgusaInvariants(f, h): 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

 
Creation from Invariants
      HyperellipticCurveFromIgusaClebsch(S) : SeqEnum -> CrvHyp
      Example CrvHyp_CurveFromIgusa (H98E5)

 
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

 
Points

      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
            NumberOfPointsAtInfinity(C) : CrvHyp -> RngIntElt
            PointsAtInfinity(C) : CrvHyp -> SetIndx
            # C : CrvHyp -> RngIntElt
            Points(C) : CrvHyp -> SetIndx
            PointsKnown(C) : CrvHyp -> BoolElt
            ZetaFunction(C) : CrvHyp -> FldFunRatUElt
            ZetaFunction(C, K) : CrvHyp, FldFin -> FldFunRatUElt
            Example CrvHyp_PointEnumeration (H98E6)

      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 (H98E7)

      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 (H98E8)
            GeometricAutomorphismGroup(C) : CrvHyp -> Grp, Tup
            Example CrvHyp_Geometric_Automorphism_Group (H98E9)

 
Jacobians

      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

 
Points on the Jacobian

      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 (H98E10)

 
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 (H98E11)
            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
            HasAdditionAlgorithm(J) : JacHyp -> Bool
            Example CrvHyp_TorsionGroups (H98E12)

 
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 (H98E13)

 
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
      SelmerGroup(phi) : Map -> GrpAb, Map, SetEnum, Map, SeqEnum
      TwoSelmerGroup(J) : JacHyp -> GrpAb, Map, SetEnum, Map, SeqEnum

 
Chabauty's Method
      Chabauty0(J) : JacHyp -> SetIndx
      Chabauty(P, p: Precision) : JacHypPt, RngIntElt -> SetIndx

 
Kummer Surfaces

      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

 
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
            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 (H98E14)

      Pullback to the Jacobian
            Points(J, P) : JacHyp, SrfKumPt -> SetIndx

 
Analytic Jacobians of Hyperelliptic Curves

      Creation and Access Functions
            AnalyticJacobian(f) : RngUPolElt -> AnHcJac
            HyperellipticPolynomial(A) : AnHcJac -> RngUPolElt
            SmallPeriodMatrix(A) : AnHcJac -> AlgMatElt
            BigPeriodMatrix(A) : AnHcJac -> AlgMatElt
            HomologyBasis(A) : AnHcJac -> SeqEnum, SeqEnum, Mtrx
            Dimension(A) : AnHcJac -> RngIntElt
            BaseField(A) : JacHyp -> Fld

      Maps between Jacobians
            ToAnalyticJacobian(x, y, A) : FldComElt, FldComElt, AnHcJac -> Mtrx
            FromAnalyticJacobian(z, A) : Mtrx, AnHcJac -> SeqEnum
            Example CrvHyp_Analytic_Jacobian_Addition (H98E15)

            Isomorphisms, Isogenies and Endomorphism Rings of Analytic Jacobians
                  To2DUpperHalfSpaceFundamentalDomian(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 CrvHyp_Find_Rational_Isogeny (H98E16)

      From Period Matrix to Curve
            RosenhainInvariants(t) : Mtrx -> Set
            Example CrvHyp_Find_CM_Curve (H98E17)

      Voronoi Cells
            Delaunay(sites) : SeqEnum -> SeqEnum

 
Bibliography