# Hyperelliptic Curves

- [Introduction](introduction.md)

- [Creation Functions](creation.md)

  - [Creation of a Hyperelliptic Curve](creation.md#creation-of-a-hyperelliptic-curve)

    - [`HyperellipticCurve(f, h): RngUPolElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurve-rngupolelt-rngupolelt)

    - [`HyperellipticCurve(f, h): RngElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurve-rngelt-rngupolelt)

    - [`HyperellipticCurve(f, h): RngUPolElt, RngElt → CrvHyp`](creation.md#function-hyperellipticcurve-rngupolelt-rngelt)

    - [`HyperellipticCurve(f): RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurve-rngupolelt)

    - [`HyperellipticCurve([f, h]): [ RngUPolElt ] → CrvHyp`](creation.md#function-hyperellipticcurve-rngupolelt-2)

    - [`HyperellipticCurve(P, f, h): Prj, RngUPolElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurve-prj-rngupolelt-rngupolelt)

    - [`HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngUPolElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurveofgenus-rngintelt-rngupolelt-rngupolelt)

    - [`HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurveofgenus-rngintelt-rngelt-rngupolelt)

    - [`HyperellipticCurveOfGenus(g, f, h): RngIntElt, RngUPolElt, RngElt → CrvHyp`](creation.md#function-hyperellipticcurveofgenus-rngintelt-rngupolelt-rngelt)

    - [`HyperellipticCurveOfGenus(g, f): RngIntElt, RngUPolElt → CrvHyp`](creation.md#function-hyperellipticcurveofgenus-rngintelt-rngupolelt)

    - [`HyperellipticCurveOfGenus(g, [f, h]): RngIntElt, [RngUPolElt] → CrvHyp`](creation.md#function-hyperellipticcurveofgenus-rngintelt-rngupolelt-2)

    - [`HyperellipticCurve(E): CrvEll → CrvHyp, Map`](creation.md#function-hyperellipticcurve-crvell)

  - [Creation Predicates](creation.md#creation-predicates)

    - [`IsHyperellipticCurve([f, h]): [ RngUPolElt ] → BoolElt, CrvHyp`](creation.md#function-ishyperellipticcurve-rngupolelt)

    - [`IsHyperellipticCurveOfGenus(g, [f, h]): RngIntElt, [RngUPolElt] → BoolElt, CrvHyp`](creation.md#function-ishyperellipticcurveofgenus-rngintelt-rngupolelt)

    - [`Example: Creation`](creation.md#example-ex-1d23ed)

  - [Changing the Base Ring](creation.md#changing-the-base-ring)

    - [`BaseChange(C, K): Sch, Fld → Sch`](creation.md#function-basechange-sch-fld)

    - [`BaseExtend(C, K): Sch, Fld → Sch`](creation.md#function-baseextend-sch-fld)

    - [`BaseChange(C, j): Sch, Map → Sch`](creation.md#function-basechange-sch-map)

    - [`BaseExtend(C, j): Sch, Map → Sch`](creation.md#function-baseextend-sch-map)

    - [`BaseChange(C, n): Sch, RngIntElt → Sch`](creation.md#function-basechange-sch-rngintelt)

    - [`BaseExtend(C, n): Sch, RngIntElt → Sch`](creation.md#function-baseextend-sch-rngintelt)

    - [`ChangeRing(C, K): Sch, Rng → Sch`](creation.md#function-changering-sch-rng)

    - [`Example: Base Extension`](creation.md#example-ex-8e4415)

  - [Models](creation.md#models)

    - [`SimplifiedModel(C): CrvHyp → CrvHyp, MapIsoSch`](creation.md#function-simplifiedmodel-crvhyp)

    - [`HasOddDegreeModel(C): CrvHyp → BoolElt, CrvHyp, MapIsoSch`](creation.md#function-hasodddegreemodel-crvhyp)

    - [`IntegralModel(C): CrvHyp → CrvHyp, MapIsoSch`](creation.md#function-integralmodel-crvhyp)

    - [`MinimalWeierstrassModel(C): CrvHyp → CrvHyp, MapIsoSch`](creation.md#function-minimalweierstrassmodel-crvhyp)

    - [`pIntegralModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch`](creation.md#function-pintegralmodel-crvhyp-rngintelt)

    - [`pIntegralModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch`](creation.md#function-pintegralmodel-crvhyp-fldratelt)

    - [`pIntegralModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch`](creation.md#function-pintegralmodel-crvhyp-rngupolelt)

    - [`pIntegralModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch`](creation.md#function-pintegralmodel-crvhyp-fldfunratuelt)

    - [`pIntegralModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch`](creation.md#function-pintegralmodel-crvhyp-infty)

    - [`pNormalModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch`](creation.md#function-pnormalmodel-crvhyp-rngintelt)

    - [`pNormalModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch`](creation.md#function-pnormalmodel-crvhyp-fldratelt)

    - [`pNormalModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch`](creation.md#function-pnormalmodel-crvhyp-rngupolelt)

    - [`pNormalModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch`](creation.md#function-pnormalmodel-crvhyp-fldfunratuelt)

    - [`pNormalModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch`](creation.md#function-pnormalmodel-crvhyp-infty)

    - [`pMinimalWeierstrassModel(C, p): CrvHyp, RngIntElt → CrvHyp, MapIsoSch`](creation.md#function-pminimalweierstrassmodel-crvhyp-rngintelt)

    - [`pMinimalWeierstrassModel(C, p): CrvHyp, FldRatElt → CrvHyp, MapIsoSch`](creation.md#function-pminimalweierstrassmodel-crvhyp-fldratelt)

    - [`pMinimalWeierstrassModel(C, p): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch`](creation.md#function-pminimalweierstrassmodel-crvhyp-rngupolelt)

    - [`pMinimalWeierstrassModel(C, p): CrvHyp, FldFunRatUElt → CrvHyp, MapIsoSch`](creation.md#function-pminimalweierstrassmodel-crvhyp-fldfunratuelt)

    - [`pMinimalWeierstrassModel(C, p): CrvHyp, Infty → CrvHyp, MapIsoSch`](creation.md#function-pminimalweierstrassmodel-crvhyp-infty)

    - [`ReducedModel(C): CrvHyp → CrvHyp, MapIsoSch`](creation.md#function-reducedmodel-crvhyp)

    - [`ReducedMinimalWeierstrassModel(C): CrvHyp → CrvHyp, MapIsoSch`](creation.md#function-reducedminimalweierstrassmodel-crvhyp)

    - [`SetVerbose("CrvHypReduce", v): MonStgElt, RngIntElt`](creation.md#function-setverbose-monstgelt-rngintelt)

  - [Minimization and Reduction of Binary Forms](creation.md#minimization-and-reduction-of-binary-forms)

    - [`SetVerbose("Minimize", v): MonStgElt, RngIntElt`](creation.md#function-setverbose-monstgelt-rngintelt-2)

    - [`MinimizeAtP(f, p): RngMPolElt, RngIntElt → RngMPolElt, AlgMatElt, RngIntElt`](creation.md#function-minimizeatp-rngmpolelt-rngintelt)

    - [`MinRedBinaryForm(f): RngMPolElt → RngMPolElt, AlgMatElt, RngIntElt`](creation.md#function-minredbinaryform-rngmpolelt)

    - [`MinRedBinaryForm(f): RngUPolElt → RngUPolElt, AlgMatElt, RngIntElt`](creation.md#function-minredbinaryform-rngupolelt)

    - [`Example: Bin Form Min Red`](creation.md#example-ex-68a467)

  - [Predicates on Models](creation.md#predicates-on-models)

    - [`IsSimplifiedModel(C): CrvHyp → BoolElt`](creation.md#function-issimplifiedmodel-crvhyp)

    - [`IsIntegral(C): CrvHyp → BoolElt`](creation.md#function-isintegral-crvhyp)

    - [`IspIntegral(C, p): CrvHyp, RngIntElt → BoolElt`](creation.md#function-ispintegral-crvhyp-rngintelt)

    - [`IspIntegral(C, p): CrvHyp, RngUPolElt → BoolElt`](creation.md#function-ispintegral-crvhyp-rngupolelt)

    - [`IspIntegral(C, p): CrvHyp, Infty → BoolElt`](creation.md#function-ispintegral-crvhyp-infty)

    - [`IspNormal(C, p): CrvHyp, RngIntElt → BoolElt`](creation.md#function-ispnormal-crvhyp-rngintelt)

    - [`IspNormal(C, p): CrvHyp, RngUPolElt → BoolElt`](creation.md#function-ispnormal-crvhyp-rngupolelt)

    - [`IspNormal(C, p): CrvHyp, Infty → BoolElt`](creation.md#function-ispnormal-crvhyp-infty)

    - [`IspMinimal(C, p): CrvHyp, RngIntElt → BoolElt, BoolElt`](creation.md#function-ispminimal-crvhyp-rngintelt)

    - [`IspMinimal(C, p): CrvHyp, RngUPolElt → BoolElt, BoolElt`](creation.md#function-ispminimal-crvhyp-rngupolelt)

    - [`IspMinimal(C, p): CrvHyp, Infty → BoolElt, BoolElt`](creation.md#function-ispminimal-crvhyp-infty)

  - [Type Change Predicates](creation.md#type-change-predicates)

    - [`IsEllipticCurve(C): CrvHyp → BoolElt, CrvEll, MapIsoSch, MapIsoSch`](creation.md#function-isellipticcurve-crvhyp)

- [Operations on Curves](structure_operations.md)

  - [Quadratic Twists](structure_operations.md#quadratic-twists)

    - [`QuadraticTwist(C, d): CrvHyp, RngElt → CrvHyp`](structure_operations.md#function-quadratictwist-crvhyp-rngelt)

    - [`QuadraticTwist(C): CrvHyp → CrvHyp`](structure_operations.md#function-quadratictwist-crvhyp)

    - [`QuadraticTwists(C): CrvHyp → SeqEnum`](structure_operations.md#function-quadratictwists-crvhyp)

    - [`IsQuadraticTwist(C, D): CrvHyp, CrvHyp → BoolElt, RngElt`](structure_operations.md#function-isquadratictwist-crvhyp-crvhyp)

    - [`Example: Quadratic Twists`](structure_operations.md#example-ex-a5b80e)

    - [`Example: Quadratic Twists`](structure_operations.md#example-ex-0bc2c3)

  - [Elementary Invariants](structure_operations.md#elementary-invariants)

    - [`HyperellipticPolynomials(C): CrvHyp → RngUPolElt, RngUPolElt`](structure_operations.md#function-hyperellipticpolynomials-crvhyp)

    - [`Degree(C): CrvHyp → RngIntElt`](structure_operations.md#function-degree-crvhyp)

    - [`Degree(C): SetPtHyp → RngIntElt`](structure_operations.md#function-degree-setpthyp)

    - [`Discriminant(C): CrvHyp → RngElt`](structure_operations.md#function-discriminant-crvhyp)

    - [`Genus(C): CrvHyp → RngIntElt`](structure_operations.md#function-genus-crvhyp)

    - [`Conductor(C): CrvHyp → RngIntElt`](structure_operations.md#function-conductor-crvhyp)

    - [`Conductor(C, p): CrvHyp[FldRat], RngIntElt → RngIntElt`](structure_operations.md#function-conductor-crvhyp-fldrat-rngintelt)

    - [`Conductor(C, P): CrvHyp[FldNum], RngOrdIdl → RngIntElt`](structure_operations.md#function-conductor-crvhyp-fldnum-rngordidl)

    - [`Example: Crvhyp Conductor Q`](structure_operations.md#example-ex-9451e3)

    - [`ConductorExponent(C): CrvHyp[FldPad] → RngIntElt`](structure_operations.md#function-conductorexponent-crvhyp-fldpad)

    - [`Conductor(C): CrvHyp[FldPad] → FldPadElt`](structure_operations.md#function-conductor-crvhyp-fldpad)

    - [`Example: Crvhyp Conductor Padic`](structure_operations.md#example-ex-581c7e)

    - [`EulerFactor(C, p): CrvHyp[FldRat], RngIntElt → RngUPolElt`](structure_operations.md#function-eulerfactor-crvhyp-fldrat-rngintelt)

    - [`EulerFactor(C, P): CrvHyp[FldNum], RngOrdIdl → RngUPolElt`](structure_operations.md#function-eulerfactor-crvhyp-fldnum-rngordidl)

    - [`EulerFactor(C): CrvHyp[FldPad] → RngUPolElt`](structure_operations.md#function-eulerfactor-crvhyp-fldpad)

    - [`EulerFactor(C, p): CrvHyp[FldNum], RngIntElt → RngUPolElt`](structure_operations.md#function-eulerfactor-crvhyp-fldnum-rngintelt)

    - [`Example: Crvhyp Eulerfactor`](structure_operations.md#example-ex-9f8b78)

  - [Base Ring](structure_operations.md#base-ring)

    - [`BaseField(C): Sch → Fld`](structure_operations.md#function-basefield-sch)

    - [`BaseRing(C): Sch → Fld`](structure_operations.md#function-basering-sch)

    - [`CoefficientRing(C): Sch → Fld`](structure_operations.md#function-coefficientring-sch)

- [Function Field](function_field.md)

  - [Function Field and Polynomial Ring](function_field.md#function-field-and-polynomial-ring)

    - [`FunctionField(C): Sch → FldFunG`](function_field.md#function-functionfield-sch)

    - [`DefiningPolynomial(C): Sch → RngMPolElt`](function_field.md#function-definingpolynomial-sch)

    - [`EvaluatePolynomial(C, a, b, c): CrvHyp, RngElt, RngElt, RngElt → RngElt`](function_field.md#function-evaluatepolynomial-crvhyp-rngelt-rngelt-rngelt)

    - [`EvaluatePolynomial(C, [a, b, c]): CrvHyp, [RngElt] → RngElt`](function_field.md#function-evaluatepolynomial-crvhyp-rngelt)

- [Points](points.md)

  - [Creation of Points](points.md#creation-of-points)

    - [`C ! [x, y]: CrvHyp, [RngElt] → PtHyp`](points.md#operation-op-crvhyp-rngelt)

    - [`C ! [x, y, z]: CrvHyp, [RngElt] → PtHyp`](points.md#operation-op-crvhyp-rngelt-2)

    - [`elt< PS | x, y >: SetPtHyp, RngElt, RngElt, RngElt → PtHyp`](points.md#constructor-constructor-elt-setpthyp-rngelt-rngelt-rngelt-pthyp)

    - [`elt< PS | x, y, z >: SetPtHyp, RngElt, RngElt, RngElt → PtHyp`](points.md#constructor-constructor-elt-setpthyp-rngelt-rngelt-rngelt-pthyp-2)

    - [`C ! P: CrvHyp, PtHyp → PtHyp`](points.md#operation-op-crvhyp-pthyp)

    - [`Points(C, x): CrvHyp, RngElt → SetIndx`](points.md#function-points-crvhyp-rngelt)

    - [`RationalPoints(C, x): CrvHyp, RngElt → SetIndx`](points.md#function-rationalpoints-crvhyp-rngelt)

    - [`Points(C, x): CrvHyp, Infty → SetIndx`](points.md#function-points-crvhyp-infty)

    - [`RationalPoints(C, x): CrvHyp, Infty → SetIndx`](points.md#function-rationalpoints-crvhyp-infty)

    - [`PointsAtInfinity(C): CrvHyp → SetIndx`](points.md#function-pointsatinfinity-crvhyp)

    - [`IsPoint(C, S): CrvHyp, SeqEnum → BoolElt, PtHyp`](points.md#function-ispoint-crvhyp-seqenum)

    - [`Example: Points At Infinity On Hypcurves`](points.md#example-ex-c9370e)

  - [Random Points](points.md#random-points)

    - [`Random(C): CrvHyp → PtHyp`](points.md#function-random-crvhyp)

  - [Predicates on Points](points.md#predicates-on-points)

    - [`P eq Q: PtHyp, PtHyp → BoolElt`](points.md#operation-op-eq-pthyp-pthyp)

    - [`P ne Q: PtHyp, PtHyp → BoolElt`](points.md#operation-op-ne-pthyp-pthyp)

  - [Access Operations](points.md#access-operations)

    - [`P[i]: PtHyp, RngIntElt → RngElt`](points.md#literal-literal-p-i-pthyp-rngintelt-rngelt)

    - [`Eltseq(P): PtHyp → SeqEnum`](points.md#function-eltseq-pthyp)

    - [`ElementToSequence(P): PtHyp → SeqEnum`](points.md#function-elementtosequence-pthyp)

  - [Arithmetic of Points](points.md#arithmetic-of-points)

    - [`- P: PtHyp → PtHyp`](points.md#operation-operation-pthyp-pthyp)

    - [`Involution(P): PtHyp → PtHyp`](points.md#function-involution-pthyp)

  - [Enumeration and Counting Points](points.md#enumeration-and-counting-points)

    - [`NumberOfPointsAtInfinity(C): CrvHyp → RngIntElt`](points.md#function-numberofpointsatinfinity-crvhyp)

    - [`PointsAtInfinity(C): CrvHyp → SetIndx`](points.md#function-pointsatinfinity-crvhyp-2)

    - [`# C: CrvHyp → RngIntElt`](points.md#operation-operation-crvhyp-rngintelt)

    - [`Points(C): CrvHyp → SetIndx`](points.md#function-points-crvhyp)

    - [`RationalPoints(C): CrvHyp → SetIndx`](points.md#function-rationalpointscrvhyplabel)

    - [`RationalPoints(C): SetPtHyp → SetIndx`](points.md#function-rationalpoints-setpthyp)

    - [`PointsGenus2(C): CrvHyp → SetIndx, BoolElt, RngIntElt`](points.md#function-pointsgenus2-crvhyp)

    - [`RationalPointsGenus2(C): CrvHyp → SetIndx, BoolElt, RngIntElt`](points.md#function-rationalpointsgenus2)

    - [`PointsKnown(C): CrvHyp → BoolElt`](points.md#function-pointsknown-crvhyp)

    - [`Example: Point Enumeration`](points.md#example-ex-814aee)

  - [Frobenius](points.md#frobenius)

    - [`Frobenius(P, F): PtHyp, FldFin → PtHyp`](points.md#function-frobenius-pthyp-fldfin)

    - [`FrobeniusMatrix(C, p): CrvHyp, RngIntElt → Mtrx`](points.md#function-frobeniusmatrix-crvhyp-rngintelt)

- [Jacobians](jacobian.md)

  - [Creation of a Jacobian](jacobian.md#creation-of-a-jacobian)

    - [`Jacobian(C): CrvHyp → JacHyp`](jacobian.md#function-jacobian-crvhyp)

  - [Access Operations](jacobian.md#access-operations)

    - [`Curve(J): JacHyp → CrvHyp`](jacobian.md#function-curve-jachyp)

    - [`Dimension(J): JacHyp → RngIntElt`](jacobian.md#function-dimension-jachyp)

  - [Base Ring](jacobian.md#base-ring)

    - [`BaseField(J): JacHyp → Fld`](jacobian.md#function-basefield-jachyp)

    - [`BaseRing(J): JacHyp → Rng`](jacobian.md#function-basering-jachyp)

    - [`CoefficientRing(J): JacHyp → Rng`](jacobian.md#function-coefficientring-jachyp)

  - [Changing the Base Ring](jacobian.md#changing-the-base-ring)

    - [`BaseChange(J, F): JacHyp, Rng → JacHyp`](jacobian.md#function-basechange-jachyp-rng)

    - [`BaseExtend(J, F): JacHyp, Rng → JacHyp`](jacobian.md#function-baseextend-jachyp-rng)

    - [`BaseChange(J, j): JacHyp, Map → JacHyp`](jacobian.md#function-basechange-jachyp-map)

    - [`BaseExtend(J, j): JacHyp, Map → JacHyp`](jacobian.md#function-baseextend-jachyp-map)

    - [`BaseChange(J, n): JacHyp, RngIntElt → JacHyp`](jacobian.md#function-basechange-jachyp-rngintelt)

    - [`BaseExtend(J, n): JacHyp, RngIntElt → JacHyp`](jacobian.md#function-baseextend-jachyp-rngintelt)

- [Richelot Isogenies](richelot.md)

  - [`RichelotIsogenousSurfaces(J): JacHyp → List, List`](richelot.md#function-richelotisogenoussurfaces)

  - [`RichelotIsogenousSurfaces(C): CrvHyp → List, List`](richelot.md#function-richelotisogenoussurfaces-crvhyp)

  - [`RichelotIsogenousSurface(J, kernel): JacHyp, RngUPolElt[RngUPolRes] → .`](richelot.md#function-richelotisogenoussurface)

  - [`RichelotIsogenousSurface(C, kernel): CrvHyp, RngUPolElt[RngUPolRes] → .`](richelot.md#function-richelotisogenoussurface-crvhyp-rngupolelt-rngupolres)

  - [`Example: Richelot Isogeny`](richelot.md#example-ex-194252)

  - [`DoubleRichelotIsogenies(J): JacHyp → SeqEnum`](richelot.md#function-doublerichelotisogenies-jachyp)

  - [`DoubleRichelotIsogenies(C): CrvHyp → SeqEnum`](richelot.md#function-doublerichelotisogenies-crvhyp)

  - [`TwoPowerIsogenies(J): JacHyp → SeqEnum, SeqEnum, SeqEnum`](richelot.md#function-twopowerisogenies-jachyp)

  - [`Example: Richelot Double Isogeny`](richelot.md#example-ex-bdb4ad)

- [Points on the Jacobian](points-jac.md)

  - [Creation of Points](points-jac.md#creation-of-points)

    - [`J ! 0: JacHyp, RngIntElt → JacHypPt`](points-jac.md#operation-op-jachyp-rngintelt)

    - [`Id(J): JacHyp → JacHypPt`](points-jac.md#function-id-jachyp)

    - [`Identity(J): JacHyp → JacHypPt`](points-jac.md#function-identity-jachyp)

    - [`J ! [a, b]: JacHyp, [ RngUPolElt ] → JacHypPt`](points-jac.md#operation-op-jachyp-rngupolelt)

    - [`elt< J | a, b >: JacHyp, RngUPolElt, RngUPolElt → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-rngupolelt-rngupolelt-jachyppt)

    - [`elt< J | [a, b] >: JacHyp, [ RngUPolElt ] → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-rngupolelt-jachyppt)

    - [`elt< J | a, b, d >: JacHyp, RngUPolElt, RngUPolElt, RngIntElt → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-rngupolelt-rngupolelt-rngintelt-jachyppt)

    - [`elt< J | [a, b], d >: JacHyp, [ RngUPolElt ], RngIntElt → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-rngupolelt-rngintelt-jachyppt)

    - [`P - Q: PtHyp, PtHyp → JacHypPt`](points-jac.md#operation-op-minus-pthyp-pthyp)

    - [`J ! [P, Q]: JacHyp, [PtHyp] → JacHypPt`](points-jac.md#operation-op-jachyp-pthyp)

    - [`elt< J | P, Q >: JacHyp, PtHyp, PtHyp → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-pthyp-pthyp-jachyppt)

    - [`J ! [S, T]: JacHyp, [SeqEnum] → JacHypPt`](points-jac.md#operation-op-jachyp-seqenum)

    - [`elt< J | S, T >: JacHyp, [PtHyp], [PtHyp] → JacHypPt`](points-jac.md#constructor-constructor-elt-jachyp-pthyp-pthyp-jachyppt-2)

    - [`JacobianPoint(J, D): JacHyp, DivCrvElt → JacHypPt`](points-jac.md#function-jacobianpoint-jachyp-divcrvelt)

    - [`J ! P: JacHyp, JacHypPt → JacHypPt`](points-jac.md#operation-op-jachyp-jachyppt)

    - [`Points(J, a, d): JacHyp, RngUPolElt, RngIntElt → SetIndx`](points-jac.md#function-points-jachyp-rngupolelt-rngintelt)

    - [`RationalPoints(J, a, d): JacHyp, RngUPolElt, RngIntElt → SetIndx`](points-jac.md#function-rationalpoints-jachyp-rngupolelt-rngintelt)

    - [`Example: Point Creation Jacobian`](points-jac.md#example-ex-11fedb)

    - [`Example: Point Creation Jacobian2`](points-jac.md#example-ex-837c1c)

    - [`Example: Point Creation Jacobian3`](points-jac.md#example-ex-e19fa0)

  - [Random Points](points-jac.md#random-points)

    - [`Random(J): JacHyp → JacHypPt`](points-jac.md#function-random-jachyp)

  - [Booleans and Predicates for Points](points-jac.md#booleans-and-predicates-for-points)

    - [`P eq Q: JacHypPt, JacHypPt → BoolElt`](points-jac.md#operation-op-eq-jachyppt-jachyppt)

    - [`P ne Q: JacHypPt, JacHypPt → BoolElt`](points-jac.md#operation-op-ne-jachyppt-jachyppt)

    - [`IsZero(P): JacHypPt → BoolElt`](points-jac.md#function-iszero-jachyppt)

    - [`IsIdentity(P): JacHypPt → BoolElt`](points-jac.md#function-isidentity-jachyppt)

  - [Access Operations](points-jac.md#access-operations)

    - [`P[i]: JacHypPt, RngIntElt → RngElt`](points-jac.md#literal-literal-p-i-jachyppt-rngintelt-rngelt)

    - [`Eltseq(P): PtHyp → SeqEnum, RngIntElt`](points-jac.md#function-eltseq-pthyp-2)

    - [`ElementToSequence(P): PtHyp → SeqEnum, RngIntElt`](points-jac.md#function-elementtosequence-pthyp-2)

  - [Arithmetic of Points](points-jac.md#arithmetic-of-points)

    - [`- P: JacHypPt → JacHypPt`](points-jac.md#operation-operation-jachyppt-jachyppt)

    - [`P + Q: JacHypPt, JacHypPt → JacHypPt`](points-jac.md#operation-op-plus-jachyppt-jachyppt)

    - [`P +:= Q: JacHypPt, JacHypPt`](points-jac.md#operation-operation-jachyppt-jachyppt-2)

    - [`P - Q: JacHypPt, JacHypPt → JacHypPt`](points-jac.md#operation-op-minus-jachyppt-jachyppt)

    - [`P -:= Q: JacHypPt, JacHypPt`](points-jac.md#operation-operation-jachyppt-jachyppt-3)

    - [`n * P: RngIntElt, JacHypPt → JacHypPt`](points-jac.md#operation-op-times-rngintelt-jachyppt)

    - [`P * n: JacHypPt, RngIntElt → JacHypPt`](points-jac.md#operation-op-times-jachyppt-rngintelt)

    - [`P *:= n: JacHypPt, RngIntElt`](points-jac.md#operation-operation-jachyppt-rngintelt)

  - [Order of Points on the Jacobian](points-jac.md#order-of-points-on-the-jacobian)

    - [`Order(P): JacHypPt → RngIntElt`](points-jac.md#function-order-jachyppt)

    - [`Order(P, l, u): JacHypPt, RngIntElt, RngIntElt → RngIntElt`](points-jac.md#function-order-jachyppt-rngintelt-rngintelt)

    - [`Order(P, l, u, n, m): JacHypPt, RngIntElt, RngIntElt, RngIntElt, RngIntElt → RngIntElt`](points-jac.md#function-order-jachyppt-rngintelt-rngintelt-rngintelt-rngintelt)

    - [`HasOrder(P, n): JacHypPt, RngIntElt → BoolElt`](points-jac.md#function-hasorder-jachyppt-rngintelt)

  - [Frobenius](points-jac.md#frobenius)

    - [`Frobenius(P, k): JacHypPt, FldFin → JacHypPt`](points-jac.md#function-frobenius-jachyppt-fldfin)

  - [Weil Pairing](points-jac.md#weil-pairing)

    - [`WeilPairing(P, Q, m): JacHypPt, JacHypPt, RngIntElt → RngElt`](points-jac.md#function-weilpairing-jachyppt-jachyppt-rngintelt)

    - [`Example: Jac WeilPairing`](points-jac.md#example-ex-3d8114)

- [Rational Points and Group Structure over Finite Fields](point_structures_jacobian.md)

  - [Enumeration of Points](point_structures_jacobian.md#enumeration-of-points)

    - [`Points(J): JacHyp → SetIndx`](point_structures_jacobian.md#function-points-jachyp)

    - [`RationalPoints(J): JacHyp → SetIndx`](point_structures_jacobian.md#function-rationalpoints-jachyp)

  - [Counting Points on the Jacobian](point_structures_jacobian.md#counting-points-on-the-jacobian)

    - [`SetVerbose("JacHypCnt", v): MonStgElt, RngIntElt`](point_structures_jacobian.md#function-setverbose-monstgelt-rngintelt-3)

    - [`# J: JacHyp → RngIntElt`](point_structures_jacobian.md#operation-operation-jachyp-rngintelt)

    - [`Order(J): JacHyp → RngIntElt`](point_structures_jacobian.md#function-order-jachyp)

    - [`Example: Jac Point Counting`](point_structures_jacobian.md#example-ex-be83bf)

    - [`Example: kedlaya`](point_structures_jacobian.md#example-ex-ff9fd7)

    - [`Example: kedlaya2`](point_structures_jacobian.md#example-ex-23c874)

    - [`Example: mestre`](point_structures_jacobian.md#example-ex-5fabdd)

    - [`Example: Shanks Pollard`](point_structures_jacobian.md#example-ex-2b4829)

    - [`Example: Shanks Pollard`](point_structures_jacobian.md#example-ex-118ae9)

    - [`FactoredOrder(J): JacHyp → [ <RngIntElt, RngIntElt> ]`](point_structures_jacobian.md#function-factoredorder-jachyp)

    - [`EulerFactor(J): JacHyp → RngUPolElt`](point_structures_jacobian.md#function-eulerfactor-jachyp)

    - [`EulerFactorModChar(J): JacHyp → RngUPolElt`](point_structures_jacobian.md#function-eulerfactormodchar-jachyp)

    - [`EulerFactor(J, K): JacHyp, FldFin → RngUPolElt`](point_structures_jacobian.md#function-eulerfactor-jachyp-fldfin)

  - [Deformation Point Counting](point_structures_jacobian.md#deformation-point-counting)

    - [`JacobianOrdersByDeformation(Q, Y): RngMPolElt, SeqEnum → SeqEnum`](point_structures_jacobian.md#function-jacobianordersbydeformation-rngmpolelt-seqenum)

    - [`EulerFactorsByDeformation(Q, Y): RngMPolElt, SeqEnum → SeqEnum`](point_structures_jacobian.md#function-eulerfactorsbydeformation-rngmpolelt-seqenum)

    - [`ZetaFunctionsByDeformation(Q, Y): RngMPolElt, SeqEnum → SeqEnum`](point_structures_jacobian.md#function-zetafunctionsbydeformation-rngmpolelt-seqenum)

    - [`Example: Def Hyp Pt Cnt Ex`](point_structures_jacobian.md#example-ex-9780bf)

  - [Abelian Group Structure](point_structures_jacobian.md#abelian-group-structure)

    - [`Sylow(J, p): JacHyp, RngIntElt → GrpAb, Map, Eseq`](point_structures_jacobian.md#function-sylow-jachyp-rngintelt)

    - [`AbelianGroup(J): JacHyp → GrpAb, Map`](point_structures_jacobian.md#function-abeliangroup-jachyp)

    - [`HasAdditionAlgorithm(J): JacHyp → Bool`](point_structures_jacobian.md#function-hasadditionalgorithm-jachyp)

- [Jacobians over Number Fields or ${\mathbb{Q}}$](jacobians-number-fields.md)

  - [Searching For Points](jacobians-number-fields.md#searching-for-points)

    - [`Points(J): JacHyp → SetIndx`](jacobians-number-fields.md#function-points-jachyp-2)

    - [`RationalPoints(J): JacHyp → SetIndx`](jacobians-number-fields.md#function-rationalpoints-jachyp-2)

  - [Torsion](jacobians-number-fields.md#torsion)

    - [`TwoTorsionSubgroup(J): JacHyp → GrpAb, Map`](jacobians-number-fields.md#function-twotorsionsubgroup)

    - [`TorsionBound(J, n): JacHyp, RngIntElt → RngIntElt`](jacobians-number-fields.md#function-torsionbound-jachyp-rngintelt)

    - [`TorsionSubgroup(J): JacHyp → GrpAb, Map`](jacobians-number-fields.md#function-torsionsubgroup-jachyp)

    - [`Example: Torsion Groups`](jacobians-number-fields.md#example-ex-a3bcbe)

  - [Heights and Regulator](jacobians-number-fields.md#heights-and-regulator)

    - [`NaiveHeight(P): JacHypPt → FldPrElt`](jacobians-number-fields.md#function-naiveheight-jachyppt)

    - [`NaiveHeight(P): SrfKumPt → FldPrElt`](jacobians-number-fields.md#function-naiveheight-srfkumpt)

    - [`Height(P: parameters): JacHypPt → FldReElt`](jacobians-number-fields.md#function-height-jachyppt)

    - [`Height(P: Precision): SrfKumPt → FldReElt`](jacobians-number-fields.md#function-height-srfkumpt)

    - [`CanonicalHeight(P: parameters): JacHypPt → FldReElt`](jacobians-number-fields.md#function-canonicalheight-jachyppt)

    - [`CanonicalHeight(P: Precision): SrfKumPt → FldReElt`](jacobians-number-fields.md#function-canonicalheight-srfkumpt)

    - [`HeightConstant(J: parameters): JacHyp → FldPrElt, FldPrElt`](jacobians-number-fields.md#function-heightconstant-jachyp)

    - [`HeightPairing(P, Q: parameters): JacHypPt, JacHypPt → FldReElt`](jacobians-number-fields.md#function-heightpairing-jachyppt-jachyppt)

    - [`HeightPairingMatrix(S: Precision): [JacHypPt] → AlgMat`](jacobians-number-fields.md#function-heightpairingmatrix-jachyppt)

    - [`Regulator(S: Precision): [JacHypPt] → FldReElt`](jacobians-number-fields.md#function-regulator-jachyppt)

    - [`ReducedBasis(S: Precision): [JacHypPt] → SeqEnum, AlgMatElt, SeqEnum`](jacobians-number-fields.md#function-reducedbasis-jachyppt)

    - [`ReducedBasis(S: Precision): {@JacHypPt@} → SeqEnum, AlgMatElt, SeqEnum`](jacobians-number-fields.md#function-reducedbasis-jachyppt-2)

    - [`ReducedBasis(S: Precision): {JacHypPt} → SeqEnum, AlgMatElt, SeqEnum`](jacobians-number-fields.md#function-reducedbasis-jachyppt-3)

    - [`Example: Height Pairing`](jacobians-number-fields.md#example-ex-106026)

    - [`Example: Height Pairing2`](jacobians-number-fields.md#example-ex-3facfa)

  - [Saturation](jacobians-number-fields.md#saturation)

    - [`IsDivisibleBy(P, n): JacHypPt, RngIntElt → BoolElt, JacHypPt`](jacobians-number-fields.md#function-isdivisibleby-jachyppt-rngintelt)

    - [`Saturation(bas, p): [ JacHypPt ], RngIntElt → [ JacHypPt ]`](jacobians-number-fields.md#function-saturation-jachyppt-rngintelt)

  - [The $2$-Selmer Group](jacobians-number-fields.md#the-2-selmer-group)

    - [`BadPrimes(C): CrvHyp → SeqEnum`](jacobians-number-fields.md#function-badprimes-crvhyp)

    - [`BadPrimes(J): JacHyp → SeqEnum`](jacobians-number-fields.md#function-badprimes-jachyp)

    - [`HasSquareSha(J): JacHyp → BoolElt`](jacobians-number-fields.md#function-hassquaresha-jachyp)

    - [`IsEven(J): JacHyp → BoolElt`](jacobians-number-fields.md#function-iseven-jachyp)

    - [`IsDeficient(C, p): CrvHyp, RngIntElt → BoolElt`](jacobians-number-fields.md#function-isdeficient-crvhyp-rngintelt)

    - [`HasIndexOne(C, p): CrvHyp, RngIntElt → BoolElt`](jacobians-number-fields.md#function-hasindexone-crvhyp-rngintelt)

    - [`HasIndexOne(C, p): CrvHyp, RngOrdIdl → BoolElt`](jacobians-number-fields.md#function-hasindexone-crvhyp-rngordidl)

    - [`HasIndexOneEverywhereLocally(C): CrvHyp → BoolElt`](jacobians-number-fields.md#function-hasindexoneeverywherelocally-crvhyp)

    - [`TwoSelmerGroup(J): JacHyp → GrpAb, Map, Any, Any`](jacobians-number-fields.md#function-twoselmergroup)

    - [`RankBound(J): JacHyp → RngIntElt`](jacobians-number-fields.md#function-rankbound-jachyp)

    - [`RankBounds(J): JacHyp → RngIntElt, RngIntElt`](jacobians-number-fields.md#function-rankbounds-jachyp)

    - [`Example: 2 Selmer Group`](jacobians-number-fields.md#example-ex-e48977)

    - [`Example: Nonsquare Sha`](jacobians-number-fields.md#example-ex-930a5d)

    - [`Example: Sha Visibility`](jacobians-number-fields.md#example-ex-e6f6af)

    - [`Example: Better Rank Bounds`](jacobians-number-fields.md#example-ex-97e7d9)

    - [`Example: Disregard The Warning`](jacobians-number-fields.md#example-ex-e005c5)

  - [The Mordell–Weil Group](jacobians-number-fields.md#the-mordell-weil-group)

    - [`MordellWeilGroupGenus2(J): JacHyp → GrpAb, Map, BoolElt, BoolElt, RngIntElt`](jacobians-number-fields.md#function-mordellweilgroupgenus2-jachyp)

    - [`MordellWeilGroup(J): JacHyp → GrpAb, Map, BoolElt, BoolElt`](jacobians-number-fields.md#function-mordellweilgroup-jachyp)

    - [`Example: Mordell Weil Ex`](jacobians-number-fields.md#example-ex-7fa3d4)

    - [`Example: Mordell Weil Ex2`](jacobians-number-fields.md#example-ex-f78b70)

- [Two-Selmer Set of a Curve](two-selmer-set.md)

  - [`TwoCoverDescent(C): CrvHyp → SetEnum, Map, [Map, SeqEnum]`](two-selmer-set.md#function-twocoverdescent-crvhyp)

  - [`Example: Two-cover descent`](two-selmer-set.md#example-ex-4cc57e)

- [Chabauty’s Method](chabauty-method.md)

  - [`Chabauty0(J): JacHyp → SetIndx`](chabauty-method.md#function-chabauty0-jachyp)

  - [`Chabauty(P : ptC): JacHypPt → SetIndx`](chabauty-method.md#function-chabauty-jachyppt)

  - [`Chabauty(P, p: Precision): JacHypPt, RngIntElt → SetIndx`](chabauty-method.md#function-chabauty-jachyppt-rngintelt)

  - [`Example: Chabauty Method1`](chabauty-method.md#example-ex-9911f8)

  - [`Example: Chabauty Method2`](chabauty-method.md#example-ex-19e0e5)

  - [`Example: Chabauty Method4`](chabauty-method.md#example-ex-a36c35)

  - [`Example: Chabauty Method3`](chabauty-method.md#example-ex-7f4710)

- [Cyclic Covers of ${\mathbb{P}}^1$](cyclic-covers.md)

  - [Points](cyclic-covers.md#points)

    - [`RationalPoints(f, q): RngUPolElt, RngIntElt → SetIndx`](cyclic-covers.md#function-rationalpoints-rngupolelt-rngintelt)

    - [`Points(f, q): RngUPolElt, RngIntElt → SetIndx`](cyclic-covers.md#function-points-rngupolelt-rngintelt)

    - [`HasPoint(f, q, v): RngUPolElt, RngIntElt, RngIntElt → BoolElt, SeqEnum`](cyclic-covers.md#function-haspoint-rngupolelt-rngintelt-rngintelt)

    - [`HasPoint(f, q, v): RngUPolElt, RngIntElt, RngOrdIdl → BoolElt, SeqEnum`](cyclic-covers.md#function-haspoint-rngupolelt-rngintelt-rngordidl)

    - [`HasPointsEverywhereLocally(f, q): RngUPolElt, RngIntElt → BoolElt`](cyclic-covers.md#function-haspointseverywherelocally-rngupolelt-rngintelt)

  - [Descent](cyclic-covers.md#descent)

    - [`qCoverDescent(f, q): RngUPolElt, RngIntElt → Set, Map`](cyclic-covers.md#function-qcoverdescent-rngupolelt-rngintelt)

    - [`Example: qcoverdescent`](cyclic-covers.md#example-ex-66395c)

  - [Monic Models](cyclic-covers.md#monic-models)

    - [`MonicModel(f, q): RngUPolElt, RngIntElt → RngUPolElt, SeqEnum`](cyclic-covers.md#function-monicmodel-rngupolelt-rngintelt)

  - [Descent on the Jacobian](cyclic-covers.md#descent-on-the-jacobian)

    - [`PhiSelmerGroup(f, q): RngUPolElt, RngIntElt → GrpAb, Map`](cyclic-covers.md#function-phiselmergroup-rngupolelt-rngintelt)

    - [`PicnDescent(f, q): RngUPolElt, RngIntElt → RngIntElt, GrpAb, Tup, RngIntElt, Map, GrpAb`](cyclic-covers.md#function-picndescent-rngupolelt-rngintelt)

    - [`RankBound(f, q): RngUPolElt, RngIntElt → RngIntElt`](cyclic-covers.md#function-rankbound-rngupolelt-rngintelt)

    - [`RankBounds(f, q): RngUPolElt, RngIntElt → RngIntElt, RngIntElt`](cyclic-covers.md#function-rankbounds-rngupolelt-rngintelt)

    - [`Example: qcoverdescent`](cyclic-covers.md#example-ex-ddca22)

  - [Partial Descent](cyclic-covers.md#partial-descent)

    - [`qCoverPartialDescent(f, factors, q): RngUPolElt, [* RngUPolElt *], RngIntElt → Set, Map`](cyclic-covers.md#function-qcoverpartialdescent-rngupolelt-rngupolelt-rngintelt)

    - [`Example: qcoverpartialdescent`](cyclic-covers.md#example-ex-9ab341)

- [Kummer Surfaces](kummer-surfaces.md)

  - [Creation of a Kummer Surface](kummer-surfaces.md#creation-of-a-kummer-surface)

    - [`KummerSurface(J): JacHyp → SrfKum`](kummer-surfaces.md#function-kummersurface-jachyp)

  - [Structure Operations](kummer-surfaces.md#structure-operations)

    - [`DefiningPolynomial(K): SrfKum → RngMPolElt`](kummer-surfaces.md#function-definingpolynomial-srfkum)

  - [Base Ring](kummer-surfaces.md#base-ring)

    - [`BaseField(K): SrfKum → Fld`](kummer-surfaces.md#function-basefield-srfkum)

    - [`BaseRing(K): SrfKum → Rng`](kummer-surfaces.md#function-basering-srfkum)

    - [`CoefficientRing(K): SrfKum → Rng`](kummer-surfaces.md#function-coefficientring-srfkum)

  - [Changing the Base Ring](kummer-surfaces.md#changing-the-base-ring)

    - [`BaseChange(K, F): SrfKum, Rng → SrfKum`](kummer-surfaces.md#function-basechange-srfkum-rng)

    - [`BaseExtend(K, F): SrfKum, Rng → SrfKum`](kummer-surfaces.md#function-baseextend-srfkum-rng)

    - [`BaseChange(K, j): SrfKum, Map → SrfKum`](kummer-surfaces.md#function-basechange-srfkum-map)

    - [`BaseExtend(K, j): SrfKum, Map → SrfKum`](kummer-surfaces.md#function-baseextend-srfkum-map)

    - [`BaseChange(K, n): SrfKum, RngIntElt → SrfKum`](kummer-surfaces.md#function-basechange-srfkum-rngintelt)

    - [`BaseExtend(K, n): SrfKum, RngIntElt → SrfKum`](kummer-surfaces.md#function-baseextend-srfkum-rngintelt)

- [Points on the Kummer Surface](points_kummer.md)

  - [Creation of Points](points_kummer.md#creation-of-points)

    - [`K ! 0: SrfKum, RngIntElt → SrfKumPt`](points_kummer.md#operation-op-srfkum-rngintelt)

    - [`K ! [x1, x2, x3, x4]: SrfKum, [ RngElt ] → SrfKumPt`](points_kummer.md#operation-op-srfkum-rngelt)

    - [`K ! P: SrfKum, SrfKumPt → SrfKumPt`](points_kummer.md#operation-op-srfkum-srfkumpt)

    - [`K ! P: SrfKum, JacHypPt → SrfKumPt`](points_kummer.md#operation-op-srfkum-jachyppt)

    - [`IsPoint(K, S): SrfKum, [RngElt] → BoolElt, SrfKumPt`](points_kummer.md#function-ispoint-srfkum-rngelt)

    - [`Points(K,[x1, x2, x3]): SrfKum, [RngElt] → SetIndx`](points_kummer.md#function-points-srfkum-rngelt)

  - [Access Operations](points_kummer.md#access-operations)

    - [`P[i]: SrfKumPt, RngIntElt → RngElt`](points_kummer.md#literal-literal-p-i-srfkumpt-rngintelt-rngelt)

    - [`Eltseq(P): SrfKumPt → SeqEnum`](points_kummer.md#function-eltseq-srfkumpt)

    - [`ElementToSequence(P): PtHyp → SeqEnum`](points_kummer.md#function-elementtosequence-pthyp-3)

  - [Predicates on Points](points_kummer.md#predicates-on-points)

    - [`P eq Q: SrfKumPt, SrfKumPt → BoolElt`](points_kummer.md#operation-op-eq-srfkumpt-srfkumpt)

    - [`P ne Q: SrfKumPt, SrfKumPt → BoolElt`](points_kummer.md#operation-op-ne-srfkumpt-srfkumpt)

  - [Arithmetic of Points](points_kummer.md#arithmetic-of-points)

    - [`- P: SrfKumPt → SrfKumPt`](points_kummer.md#operation-operation-srfkumpt-srfkumpt)

    - [`n * P: RngIntElt, SrfKumPt → SrfKumPt`](points_kummer.md#operation-op-times-rngintelt-srfkumpt)

    - [`P * n: SrfKumPt, RngIntElt → SrfKumPt`](points_kummer.md#operation-op-times-srfkumpt-rngintelt)

    - [`Double(P): SrfKumPt → SrfKumPt`](points_kummer.md#function-double-srfkumpt)

    - [`PseudoAdd(P1, P2, P3): SrfKumPt, SrfKumPt, SrfKumPt → SrfKumPt`](points_kummer.md#function-pseudoadd-srfkumpt-srfkumpt-srfkumpt)

    - [`PseudoAddMultiple(P1, P2, P3, n): SrfKumPt, SrfKumPt, SrfKumPt, RngIntElt → SrfKumPt`](points_kummer.md#function-pseudoaddmultiple-srfkumpt-srfkumpt-srfkumpt-rngintelt)

  - [Rational Points on the Kummer Surface](points_kummer.md#rational-points-on-the-kummer-surface)

    - [`RationalPoints(K, Q): SrfKum, [RngElt] → SetIndx`](points_kummer.md#function-rationalpoints-srfkum-rngelt)

    - [`Example: Kummer Rational Points`](points_kummer.md#example-ex-51064e)

  - [Pullback to the Jacobian](points_kummer.md#pullback-to-the-jacobian)

    - [`Points(J, P): JacHyp, SrfKumPt → SetIndx`](points_kummer.md#function-points-jachyp-srfkumpt)

    - [`RationalPoints(J, P): JacHyp, SrfKumPt → SetIndx`](points_kummer.md#function-rationalpoints-jachyp-srfkumpt)

- [Analytic Jacobians of Hyperelliptic Curves](analytic.md)

  - [Creation and Access Functions](analytic.md#creation-and-access-functions)

    - [`AnalyticJacobian(f): RngUPolElt → AnHcJac`](analytic.md#function-analyticjacobianlabel)

    - [`HyperellipticPolynomial(A): AnHcJac → RngUPolElt`](analytic.md#function-hyperellipticpolynomiallabel)

    - [`HomologyBasis(A): AnHcJac → SeqEnum, SeqEnum, Mtrx`](analytic.md#function-homologybasislabel)

    - [`Dimension(A): AnHcJac → RngIntElt`](analytic.md#function-dimension-anhcjac)

    - [`Genus(A): AnHcJac → RngIntElt`](analytic.md#function-genus-anhcjac)

    - [`BaseField(A): JacHyp → Fld`](analytic.md#function-basefield-jachyp-2)

    - [`BaseRing(A): JacHyp → Rng`](analytic.md#function-basering-jachyp-2)

    - [`CoefficientRing(A): JacHyp → Rng`](analytic.md#function-coefficientring-jachyp-2)

  - [Period Matrices](analytic.md#period-matrices)

    - [`SmallPeriodMatrix(A): AnHcJac → AlgMatElt`](analytic.md#function-smallperiodmatrix-anhcjac)

    - [`BigPeriodMatrix(A): AnHcJac → AlgMatElt`](analytic.md#function-bigperiodmatrixlabel)

    - [`PeriodMapping(A, n): ModSym, RngIntElt → Map`](analytic.md#function-periodmapping-modsym-rngintelt)

    - [`Periods(M, n): ModSym, RngIntElt → SeqEnum`](analytic.md#function-periods-modsym-rngintelt)

  - [Maps between Jacobians](analytic.md#maps-between-jacobians)

    - [`ToAnalyticJacobian(x, y, A): FldComElt, FldComElt, AnHcJac → Mtrx`](analytic.md#function-toanalyticjacobian-fldcomelt-fldcomelt-anhcjac)

    - [`FromAnalyticJacobian(z, A): Mtrx, AnHcJac → SeqEnum`](analytic.md#function-fromanalyticjacobianlabel)

    - [`Example: Analytic Jacobian Addition`](analytic.md#example-ex-56e605)

    - [Isomorphisms, Isogenies and Endomorphism Rings of Analytic Jacobians](analytic.md#isomorphisms-isogenies-and-endomorphism-rings-of-analytic-jacobians)

      - [`To2DUpperHalfSpaceFundamentalDomain(z): Mtrx → Mtrx, Mtrx`](analytic.md#function-to2dupperhalfspacefundamentaldomain-mtrx)

      - [`AnalyticHomomorphisms(t1, t2): Mtrx, Mtrx → SeqEnum`](analytic.md#function-analytichomomorphisms-mtrx-mtrx)

      - [`IsIsomorphicSmallPeriodMatrices(t1, t2): Mtrx, Mtrx → Bool, Mtrx`](analytic.md#function-isisomorphicsmallperiodmatrices-mtrx-mtrx)

      - [`IsIsomorphicBigPeriodMatrices(P1, P2): Mtrx, Mtrx → Bool, Mtrx, Mtrx`](analytic.md#function-isisomorphicbigperiodmatrices-mtrx-mtrx)

      - [`IsIsomorphic(A1, A2): AnHcJac, AnHcJac → Bool, Mtrx, Mtrx`](analytic.md#function-isisomorphic-anhcjac-anhcjac)

      - [`IsIsogenousPeriodMatrices(P1, P2): Mtrx, Mtrx → Bool, Mtrx`](analytic.md#function-isisogenousperiodmatrices-mtrx-mtrx)

      - [`IsIsogenous(A1, A2): AnHcJac, AnHcJac → Bool, Mtrx, Mtrx`](analytic.md#function-isisogenous-anhcjac-anhcjac)

      - [`EndomorphismRing(P): Mtrx → AlgMat`](analytic.md#function-endomorphismringlabel)

      - [`EndomorphismRing(A): AnHcJac → AlgMat, SeqEnum`](analytic.md#function-endomorphismring-anhcjac)

      - [`Example: Find Rational Isogeny`](analytic.md#example-ex-e44b74)

      - [`ToAnalyticJacobianMumford(pt, AJ): JacHypPt, AnHcJac → Mtrx`](analytic.md#function-toanalyticjacobianmumford-jachyppt-anhcjac)

      - [`ToAnalyticJacobianMumford(pt, AJ, conj): JacHypPt, AnHcJac, RngIntElt → Mtrx`](analytic.md#function-toanalyticjacobianmumford-jachyppt-anhcjac-rngintelt)

      - [`FromAnalyticJacobianProjective(z, A): Mtrx[FldCom], AnHcJac → SeqEnum`](analytic.md#function-fromanalyticjacobianprojective-mtrx-fldcom-anhcjac)

  - [From Period Matrix to Curve](analytic.md#from-period-matrix-to-curve)

    - [`RosenhainInvariants(t): Mtrx → Set`](analytic.md#function-rosenhaininvariantslabel)

    - [`Example: Find CM Curve`](analytic.md#example-ex-3d7636)

  - [Voronoi Cells](analytic.md#voronoi-cells)

    - [`Delaunay(sites): SeqEnum → SeqEnum`](analytic.md#function-delaunaylabel)

    - [`Voronoi(sites): SeqEnum → SeqEnum, SeqEnum, SeqEnum`](analytic.md#function-voronoi-seqenum)

- [Invariants](invariants-isomorphisms.md)

  - [Igusa Invariants](invariants-isomorphisms.md#igusa-invariants)

    - [`ClebschInvariants(C): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-clebschinvariants-crvhyp)

    - [`ClebschInvariants(f): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-clebschinvariants-rngupolelt)

    - [`IgusaClebschInvariants(C: parameters): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-igusaclebschinvariants-crvhyp)

    - [`IgusaClebschInvariants(f, h): RngUPolElt, RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-igusaclebschinvariants-rngupolelt-rngupolelt)

    - [`IgusaClebschInvariants(f: parameters): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-igusaclebschinvariants-rngupolelt)

    - [`IgusaInvariants(C: parameters): CrvHyp → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-igusainvariants-crvhyp)

    - [`JInvariants(C: parameters): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-jinvariants-crvhyp)

    - [`IgusaInvariants(f, h: parameters): RngUPolElt, RngUPolElt → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-igusainvariants-rngupolelt-rngupolelt)

    - [`JInvariants(f, h: parameters): RngUPolElt, RngUPolElt → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-jinvariants-rngupolelt-rngupolelt)

    - [`IgusaInvariants(f: parameters): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-igusainvariants-rngupolelt)

    - [`IgusaInvariants(f: parameters): RngMPolElt → SeqEnum`](invariants-isomorphisms.md#function-igusainvariants-rngmpolelt)

    - [`JInvariants(f: parameters): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-jinvariants-rngupolelt)

    - [`IgusaAlgebraicRelations(JI): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-igusaalgebraicrelations-seqenum)

    - [`IgusaInvariantsEqual(JI1, JI2): SeqEnum, SeqEnum → BoolElt`](invariants-isomorphisms.md#function-igusainvariantsequal-seqenum-seqenum)

    - [`DiscriminantFromIgusaInvariants(JI): SeqEnum → Any`](invariants-isomorphisms.md#function-discriminantfromigusainvariants-seqenum)

    - [`ScaledIgusaInvariants(f, h): RngUPolElt, RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-scaledigusainvariants-rngupolelt-rngupolelt)

    - [`ScaledIgusaInvariants(f): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-scaledigusainvariants-rngupolelt)

    - [`AbsoluteInvariants(C): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-absoluteinvariants-crvhyp)

    - [`ClebschToIgusaClebsch(Q): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-clebschtoigusaclebsch-seqenum)

    - [`IgusaClebschToIgusa(S): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-igusaclebschtoigusa-seqenum)

    - [`G2Invariants(C): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-g2invariants-crvhyp)

    - [`G2ToIgusaInvariants(GI): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-g2toigusainvariants-seqenum)

    - [`IgusaToG2Invariants(JI): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-igusatog2invariants-seqenum)

  - [Shioda Invariants](invariants-isomorphisms.md#shioda-invariants)

    - [`ShiodaInvariants(C): CrvHyp → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-shiodainvariants-crvhyp)

    - [`ShiodaInvariants(f): RngUPolElt → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-shiodainvariants-rngupolelt)

    - [`ShiodaInvariants(f): RngMPolElt → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-shiodainvariants-rngmpolelt)

    - [`ShiodaInvariants(fh): SeqEnum → SeqEnum, SeqEnum`](invariants-isomorphisms.md#function-shiodainvariants-seqenum)

    - [`ShiodaInvariantsEqual(V1, V2): SeqEnum, SeqEnum → BoolElt`](invariants-isomorphisms.md#function-shiodainvariantsequal-seqenum-seqenum)

    - [`DiscriminantFromShiodaInvariants(JI): SeqEnum → RngElt`](invariants-isomorphisms.md#function-discriminantfromshiodainvariants-seqenum)

    - [`ShiodaAlgebraicInvariants(FJI): SeqEnum → SeqEnum`](invariants-isomorphisms.md#function-shiodaalgebraicinvariants-seqenum)

    - [`Example: Shioda Inv Ex`](invariants-isomorphisms.md#example-ex-ffb27f)

    - [`MaedaInvariants(C): CrvHyp → SeqEnum`](invariants-isomorphisms.md#function-maedainvariants-crvhyp)

    - [`MaedaInvariants(f): RngUPolElt → SeqEnum`](invariants-isomorphisms.md#function-maedainvariants-rngupolelt)

  - [Creation from Invariants](invariants-isomorphisms.md#creation-from-invariants)

    - [`HyperellipticCurveFromIgusaClebsch(S): SeqEnum → CrvHyp`](invariants-isomorphisms.md#function-hyperellipticcurvefromigusaclebsch-seqenum)

    - [`HyperellipticCurveFromIgusaInvariants(S): SeqEnum → CrvHyp, GrpPerm`](invariants-isomorphisms.md#function-hyperellipticcurvefromigusainvariants-seqenum)

    - [`HyperellipticCurveFromG2Invariants(S): SeqEnum → CrvHyp, GrpPerm`](invariants-isomorphisms.md#function-hyperellipticcurvefromg2invariants-seqenum)

    - [`HyperellipticCurveFromShiodaInvariants(JI): SeqEnum → CrvHyp, GrpPerm`](invariants-isomorphisms.md#function-hyperellipticcurvefromshiodainvariants-seqenum)

    - [`HyperellipticPolynomialFromShiodaInvariants(JI): SeqEnum → SeqEnum, GrpPerm`](invariants-isomorphisms.md#function-hyperellipticpolynomialfromshiodainvariants-seqenum)

    - [`Example: Curve From Invts`](invariants-isomorphisms.md#example-ex-6da88d)

- [Isomorphisms and Transformations](transforms.md)

  - [Creation of Isomorphisms](transforms.md#creation-of-isomorphisms)

    - [`Aut(C): CrvHyp → PowAutSch`](transforms.md#function-aut-crvhyp)

    - [`Iso(C1, C2): CrvHyp, CrvHyp → PowIsoSch`](transforms.md#function-iso-crvhyp-crvhyp)

    - [`Transformation(C, t): CrvHyp, [RngElt] → CrvHyp, MapIsoSch`](transforms.md#function-transformation-crvhyp-rngelt)

    - [`Transformation(C, u): CrvHyp, RngUPolElt → CrvHyp, MapIsoSch`](transforms.md#function-transformation-crvhyp-rngupolelt)

    - [`Transformation(C, e): CrvHyp, RngElt → CrvHyp, MapIsoSch`](transforms.md#function-transformation-crvhyp-rngelt-2)

    - [`Transformation(C, e, u): CrvHyp, RngElt, RngUPolElt → CrvHyp, MapIsoSch`](transforms.md#function-transformation-crvhyp-rngelt-rngupolelt)

    - [`Transformation(C, t, e, u): CrvHyp, [RngElt], RngElt, RngUPolElt → CrvHyp, MapIsoSch`](transforms.md#function-transformation-crvhyp-rngelt-rngelt-rngupolelt)

    - [`Example: Transformation`](transforms.md#example-ex-9a2a7d)

  - [Invariants of Isomorphisms](transforms.md#invariants-of-isomorphisms)

    - [`Parent(f): MapIsoSch → PowIsoSch`](transforms.md#function-parent-mapisosch)

    - [`Domain(f): MapIsoSch → CrvHyp`](transforms.md#function-domain-mapisosch)

    - [`Codomain(f): MapIsoSch → CrvHyp`](transforms.md#function-codomain-mapisosch)

  - [Automorphism Group and Isomorphism Testing](transforms.md#automorphism-group-and-isomorphism-testing)

    - [`IsIsomorphic(C1, C2): CrvHyp, CrvHyp → BoolElt, MapIsoSch`](transforms.md#function-isisomorphic-crvhyp-crvhyp)

    - [`AutomorphismGroup(C): CrvHyp → GrpPerm, Map, Map`](transforms.md#function-automorphismgroup-crvhyp)

    - [`Example: Automorphism Group`](transforms.md#example-ex-faec5d)

    - [`IsIsomorphicHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → BoolElt, List`](transforms.md#function-isisomorphichyperellipticcurves-crvhyp-crvhyp)

    - [`IsIsomorphicHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → BoolElt, List`](transforms.md#function-isisomorphichyperellipticcurves-rngupolelt-rngupolelt)

    - [`Example: Is Isomorphic Hyperelliptic Curves`](transforms.md#example-ex-83144d)

    - [`IsomorphismsOfHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → List`](transforms.md#function-isomorphismsofhyperellipticcurves-crvhyp-crvhyp)

    - [`IsomorphismsOfHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → List`](transforms.md#function-isomorphismsofhyperellipticcurves-rngupolelt-rngupolelt)

    - [`AutomorphismsOfHyperellipticCurve(X): CrvHyp → List`](transforms.md#function-automorphismsofhyperellipticcurve-crvhyp)

    - [`AutomorphismsOfHyperellipticCurve(f): RngUPolElt → List`](transforms.md#function-automorphismsofhyperellipticcurve-rngupolelt)

    - [`AutomorphismGroupOfHyperellipticCurve(X, Autos): CrvHyp, List → GrpPerm, Map`](transforms.md#function-automorphismgroupofhyperellipticcurve-crvhyp-list)

    - [`AutomorphismGroupOfHyperellipticCurve(f, Autos): RngUPolElt, List → GrpPerm, Map`](transforms.md#function-automorphismgroupofhyperellipticcurve-rngupolelt-list)

    - [`AutomorphismGroupOfHyperellipticCurve(X): CrvHyp → GrpPerm, Map`](transforms.md#function-automorphismgroupofhyperellipticcurve-crvhyp)

    - [`AutomorphismGroupOfHyperellipticCurve(f): RngUPolElt → GrpPerm, Map`](transforms.md#function-automorphismgroupofhyperellipticcurve-rngupolelt)

    - [`Example: Automorphism Group Of HyperellipticCurve`](transforms.md#example-ex-aab802)

    - [`GeometricAutomorphismGroup(C): CrvHyp → GrpPerm`](transforms.md#function-geometricautomorphismgroup-crvhyp)

    - [`GeometricAutomorphismGroupFromIgusaInvariants(GI): SeqEnum → SeqEnum, SeqEnum`](transforms.md#function-geometricautomorphismgroupfromigusainvariants-seqenum)

    - [`GeometricAutomorphismGroupFromShiodaInvariants(JI): SeqEnum → GrpPerm`](transforms.md#function-geometricautomorphismgroupfromshiodainvariants-seqenum)

    - [`Example: Geometric Automorphism Group`](transforms.md#example-ex-37ebfa)

    - [`GeometricAutomorphismGroupGenus2Classification(F): FldFin → SeqEnum, SeqEnum`](transforms.md#function-geometricautomorphismgroupgenus2classification-fldfin)

    - [`GeometricAutomorphismGroupGenus3Classification(F): FldFin → SeqEnum, SeqEnum`](transforms.md#function-geometricautomorphismgroupgenus3classification-fldfin)

    - [`Example: Aut Class`](transforms.md#example-ex-56c040)

  - [Twisting Hyperelliptic Curves](transforms.md#twisting-hyperelliptic-curves)

    - [`TwistsOfHyperellipticPolynomials(f: parameters): RngUPolElt → SeqEnum[RngUPolElt], GrpPerm`](transforms.md#function-twistsofhyperellipticpolynomials-rngupolelt)

    - [`TwistsOfHyperellipticPolynomials(fh): SeqEnum[RngUPolElt] → SeqEnum, GrpPerm`](transforms.md#function-twistsofhyperellipticpolynomials-seqenum-rngupolelt)

    - [`TwistedHyperellipticPolynomialsFromShiodaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum, GrpPerm`](transforms.md#function-twistedhyperellipticpolynomialsfromshiodainvariants-seqenum-fldfinelt)

    - [`Twists(C: parameters): CrvHyp → SeqEnum[CrvHyp], GrpPerm`](transforms.md#function-twists-crvhyp)

    - [`TwistsFromIgusaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm`](transforms.md#function-twistsfromigusainvariants-seqenum-fldfinelt)

    - [`TwistsFromG2Invariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm`](transforms.md#function-twistsfromg2invariants-seqenum-fldfinelt)

    - [`TwistsFromShiodaInvariants(JI: parameters): SeqEnum[FldFinElt] → SeqEnum[CrvHyp], GrpPerm`](transforms.md#function-twistsfromshiodainvariants-seqenum-fldfinelt)

    - [`Twists(C, Autos: parameters): Crv, SeqEnum → SeqEnum[Crv], GrpPerm`](transforms.md#function-twists-crv-seqenum)

    - [`HyperellipticPolynomialsFromShiodaInvariants(JI): SeqEnum → SeqEnum, GrpPerm`](transforms.md#function-hyperellipticpolynomialsfromshiodainvariants-seqenum)

    - [`Example: Twists`](transforms.md#example-ex-d7106f)

    - [`Example: Quadratic Twists`](transforms.md#example-ex-d1281d)

- [Reduced Automorphism Group and Reduced Isomorphism Testing](redisomor-check.md)

  - [`IsGL2Equivalent(f, g, n): RngUPolElt, RngUPolElt, RngIntElt → BoolElt, SeqEnum`](redisomor-check.md#function-isgl2equivalent-rngupolelt-rngupolelt-rngintelt)

  - [`IsGL2EquivalentExtended(f1, f2, deg): RngUPolElt, RngUPolElt, RngIntElt → BoolElt, List`](redisomor-check.md#function-isgl2equivalentextended-rngupolelt-rngupolelt-rngintelt)

  - [`IsReducedIsomorphicHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → BoolElt, List`](redisomor-check.md#function-isreducedisomorphichyperellipticcurves-crvhyp-crvhyp)

  - [`IsReducedIsomorphicHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → BoolElt, List`](redisomor-check.md#function-isreducedisomorphichyperellipticcurves-rngupolelt-rngupolelt)

  - [`ReducedIsomorphismsOfHyperellipticCurves(X1, X2): CrvHyp, CrvHyp → List`](redisomor-check.md#function-reducedisomorphismsofhyperellipticcurves-crvhyp-crvhyp)

  - [`ReducedIsomorphismsOfHyperellipticCurves(f1, f2): RngUPolElt, RngUPolElt → List`](redisomor-check.md#function-reducedisomorphismsofhyperellipticcurves-rngupolelt-rngupolelt)

  - [`ReducedAutomorphismsOfHyperellipticCurve(X): CrvHyp → List`](redisomor-check.md#function-reducedautomorphismsofhyperellipticcurve-crvhyp)

  - [`ReducedAutomorphismsOfHyperellipticCurve(f): RngUPolElt → List`](redisomor-check.md#function-reducedautomorphismsofhyperellipticcurve-rngupolelt)

  - [`ReducedAutomorphismGroupOfHyperellipticCurve(X, Autos): CrvHyp, List → GrpPerm, Map`](redisomor-check.md#function-reducedautomorphismgroupofhyperellipticcurve-crvhyp-list)

  - [`ReducedAutomorphismGroupOfHyperellipticCurve(f, Autos): RngUPolElt, List → GrpPerm, Map`](redisomor-check.md#function-reducedautomorphismgroupofhyperellipticcurve-rngupolelt-list)

  - [`ReducedAutomorphismGroupOfHyperellipticCurve(X): CrvHyp → GrpPerm, Map`](redisomor-check.md#function-reducedautomorphismgroupofhyperellipticcurve-crvhyp)

  - [`ReducedAutomorphismGroupOfHyperellipticCurve(f): RngUPolElt → GrpPerm, Map`](redisomor-check.md#function-reducedautomorphismgroupofhyperellipticcurve-rngupolelt)
