# Points on the Kummer Surface

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

## 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 $x_1$, $x_2$, $x_3$, and $x_4$.

### `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 = [x_1,x_2,x_3,x_4]$ 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 $[x_1, x_2, x_3]$.

## Access Operations

### `P[i]: SrfKumPt, RngIntElt -> RngElt`

Returns the $i$-th coordinate of the point $P$, for $1\leq i\leq 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 $P_1$, $P_2$, and $P_3$ 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 $P_1$, $P_2$, and $P_3$ 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: Kummer Rational Points (ex-51064e)`

We search for some points on the Kummer surface of the hyperelliptic curve $y^2=x^5-7$ defined over the rational field.

```magma
> 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$.
