Points on the Kummer Surface

Points are given by their projective coordinates, normalized depending on the base field.

Contents

Creation of Points

K ! 0 : SrfKum, RngIntElt -> SrfKumPt
Returns the image of the identity element on the Kummer surface K, which is normalized to be the origin (0 : 0 : 0 : 1).
K ! [x1, x2, x3, x4] : SrfKum, [ RngElt ] -> SrfKumPt
Returns the point on the Kummer surface K defined by the projective coordinates x1, x2, x3, and x4.
K ! P : SrfKum, SrfKumPt -> SrfKumPt
K ! P : SrfKum, JacHypPt -> SrfKumPt
Given a point P on the Jacobian of K, or on a Kummer surface for which K is a base extension, this returns the point on K.
IsPoint(K, S) : SrfKum, [RngElt] -> BoolElt, SrfKumPt
Given a sequence S = [x1, x2, x3, x4] of elements of the base field of K, the function returns true if the point specified by the sequence defines the homogeneous coordinates of a point on the Kummer surface K. If so, the corresponding point on K is returned as the second value.

Points(K,[x1, x2, x3]) : SrfKum, [RngElt] -> SetIndx
Returns the indexed set of points on the Kummer surface K with first three coordinates given by the sequence [x1, x2, x3].

Access Operations

P[i] : SrfKumPt, RngIntElt -> RngElt
Returns the i-th coordinate of the point P, for 1≤i≤4.
Eltseq(P) : SrfKumPt -> SeqEnum
ElementToSequence(P) : PtHyp -> SeqEnum
Given a point P on a Kummer surface, the function returns the coordinates of P as a sequence.

Predicates on Points

P eq Q : SrfKumPt, SrfKumPt -> BoolElt
Given two points on the same Kummer surface, this returns true if and only if the points P and Q are equal.

P ne Q : SrfKumPt, SrfKumPt -> BoolElt
Given two points on the same Kummer surface, this returns false if and only if the points P and Q are equal.

Arithmetic of Points

- P : SrfKumPt -> SrfKumPt
Returns the negation of the point P on the Kummer surface, equal to P itself.

n * P : RngIntElt, SrfKumPt -> SrfKumPt
P * n : SrfKumPt, RngIntElt -> SrfKumPt
Returns the n-th multiple of the point P on the Kummer surface K.

Double(P) : SrfKumPt -> SrfKumPt
Returns the double 2 * P of the point P.
PseudoAdd(P1, P2, P3) : SrfKumPt, SrfKumPt, SrfKumPt -> SrfKumPt
Let P and Q be points on the Jacobian J of a genus 2 curve. Given the images P1, P2, and P3 on the Kummer surface of points P, Q, and P - Q on J, the function returns the image of P + Q.

PseudoAddMultiple(P1, P2, P3, n) : SrfKumPt, SrfKumPt, SrfKumPt, RngIntElt -> SrfKumPt
Let P and Q be points on the Jacobian J of a genus 2 curve. Given the images P1, P2, and P3 on the Kummer surface of points P, Q, P - Q on J, the function returns the image of P + n * Q.

Rational Points on the Kummer Surface

RationalPoints(K, Q) : SrfKum, [RngElt] -> SetIndx
Given the Kummer surface of the Jacobian of a genus 2 hyperelliptic curve defined over a ring R and sequence Q of three elements of R, the function returns an indexed set containing those points on K whose first three coordinates correspond to the three terms of Q.

Example CrvHyp_KummerRationalPoints (H134E42)

We search for some points on the Kummer surface of the hyperelliptic curve y2=x5 - 7 defined over the rational field.

> P<x> := PolynomialRing(Rationals());
> C := HyperellipticCurve(x^5-7);
> Genus(C);
2
> J := Jacobian(C);
> K := KummerSurface(J);
> K;
Kummer surface of Jacobian of Hyperelliptic Curve defined by
    y^2 = x^5 - 7 over Rational Field
> Points(K, [0,1,2]);
{@ (0 : 1 : 2 : 4) @}
> Points(K, [1,3,2]);
{@ @}
> Points(K, [0,1,3]);
{@ (0 : 1 : 3 : 9) @}

Pullback to the Jacobian

Points(J, P) : JacHyp, SrfKumPt -> SetIndx
RationalPoints(J, P) : JacHyp, SrfKumPt -> SetIndx
Given a point P on the Kummer surface associated to the Jacobian J (of a genus 2 curve), the function returns the indexed set of points on J mapping to P.
V2.28, 13 July 2023