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

HYPERELLIPTIC CURVES

 
Introduction
 
Creation Functions
      Creation of a Hyperelliptic Curve
      Creation Predicates
      Changing the Base Ring
      Models for Hyperelliptic Curves
      Predicates on Curve Models
      Twisting Hyperelliptic Curves
      Type Change Predicates
 
Operations on Curves
      Elementary Invariants
      Igusa Invariants
      Base Ring
 
Creating a Hyperelliptic Curve from Invariants
 
Function Field
      Function Field and Polynomial Ring
 
Points on Hyperelliptic Curves
      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 of Hyperelliptic Curves
      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
 
Bibliography







DETAILS

 
Introduction

 
Creation Functions

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

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

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

      Models for Hyperelliptic Curves
            SimplifiedModel(C) : CrvHyp -> CrvHyp, MapCrvHyp
            IntegralModel(C) : CrvHyp -> CrvHyp, MapCrvHyp
            HasOddDegreeModel(C) : CrvHyp -> BoolElt, CrvHyp, MapCrvHyp
            MinimalWeierstrassModel(C) : CrvHyp -> CrvHyp, MapCrvHyp
            pNormalModel(C, p) : CrvHyp, RngIntElt -> CrvHyp, MapCrvHyp
            pMinimalWeierstrassModel(C, p) : CrvHyp, RngIntElt -> CrvHyp, MapCrvHyp
            ReducedModel(C) : CrvHyp -> CrvHyp, MapCrvHyp
            ReducedMinimalWeierstrassModel(C) : CrvHyp -> CrvHyp, MapCrvHyp

      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 (H86E3)
            Example CrvHyp_QuadraticTwists (H86E4)

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

 
Operations on Curves

      Elementary Invariants
            DefiningPolynomials(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
      HyperellipticCurveFromIgusa(S) : SeqEnum -> CrvHyp
      ReduceCurve(C) : CrvHyp -> CrvHyp
      SetVerbose("CrvHypRed", v) : MonStgElt, RngIntElt ->
      Example CrvHyp_CurveFromIgusa (H86E5)

 
Function Field

      Function Field and Polynomial Ring
            FunctionField(C) : Sch -> FldFunG
            EquationOrder(C) : CrvHyp -> RngFunOrd
            Equation(C) : Sch -> RngMPolElt
            EvaluateEquation(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
            PointsKnown(C) : CrvHyp -> BoolElt
            ZetaFunction(C) : CrvHyp -> FldFunRatUElt
            ZetaFunction(C,K) : CrvHyp, FldFin -> FldFunRatUElt
            Example CrvHyp_PointEnumeration (H86E6)

      Frobenius
            Frobenius(P, F) : PtHyp, FldFin -> PtHyp

 
Isomorphisms and Transformations

      Creation of Isomorphisms
            Auto(C) : CrvHyp -> HomCrvHyp
            Isom(C1,C2) : CrvHyp, CrvHyp -> HomCrvHyp
            M ! t : HomCrvHyp, [RngElt] -> MapCrvHyp
            Transformation(C, t) : CrvHyp, [RngElt] -> CrvHyp, Map
            Example CrvHyp_Transformation (H86E7)

      Arithmetic with Isomorphisms
            f * g : MapCrvHyp, MapCrvHyp -> MapCrvHyp
            Inverse(f) : MapCrvHyp -> MapCrvHyp
            f in M : MapCrvHyp, HomCrvHyp -> BoolElt
            P @ f : PtHyp, MapCrvHyp -> PtHyp
            P @@ f : PtHyp, MapCrvHyp -> PtHyp
            f eq g : MapCrvHyp, MapCrvHyp -> BoolElt

      Invariants of Isomorphisms
            Parent(f) : MapCrvHyp -> HomCrvHyp
            Domain(f) : MapCrvHyp -> CrvHyp
            Codomain(f) : MapCrvHyp -> CrvHyp

      Automorphism Group and Isomorphism Testing
            IsGL2Equivalent(f, g, n) : RngUPolElt, RngUPolElt, RngIntElt -> BoolElt, SeqEnum
            IsIsomorphic(C1, C2) : CrvHyp, CrvHyp -> BoolElt, MapCrvHyp
            AutomorphismGroup(C) : CrvHyp -> GrpPerm, Map, Map
            Example CrvHyp_Automorphism_Group (H86E8)

 
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

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

 
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 (H86E10)
            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 (H86E11)

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

 
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

 
Kummer Surfaces

      Creation of a Kummer Surface
            KummerSurface(J) : JacHyp -> SrfKum

      Structure Operations
            DefiningEquation(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 (H86E13)

      Pullback to the Jacobian

 
Bibliography