# Two Descent

In odd characteristic the 2-Selmer group can be computed and its elements can be represented as minimised 2-coverings. A search for points on these 2-coverings can be made.

In characteristic 2 descent by $2$-isogeny can be performed for an ordinary curve $E$ using the isogenies $E \to E^{frob} \to E$. The Selmer groups for both isogenies are computed; if these have ranks $s_1$ and $s_2$ then the rank of $E$ is at most $s_1+s_2-1$.

## `TwoSelmerGroup(E): CrvEll[FldFunG] -> GrpAb, MapSch`

This function computes the 2-Selmer group of an elliptic curve $E$ defined over a rational function field ${\mathbb{F}}_q(t)$ of odd characteristic. This is returned as an abstract group together with a map from the group to the relevant algebra.

The algorithm is standard (similar to the one used for elliptic curves over number fields).

## `TwoDescent(E): CrvEll[FldFunG] -> SeqEnum[CrvHyp], List[MapSch]`

This represents the nontrivial elements of the $2$-Selmer group of $E$ as hyperelliptic curves $C : y^2 = f(x)$ of degree $4$, and returns a sequence containing the curves together with a list containing the corresponding covering maps $C \to E$. The elliptic curve should be defined over a rational function field ${\mathbb{F}}_q(t)$ of odd characteristic.

The curves returned have polynomial coefficients and are minimised at all finite places. The conic parametrisation step uses the algorithm by Cremona and van Hoeij.

## `QuarticMinimize(f): RngMPolElt[FldFunRat] -> RngMPolElt[FldFunRat]`

This is the routine used by `TwoDescent` to minimise two-coverings. The function takes a homogeneous quartic in two variables with coefficients in a rational univariate function field and returns a minimal quartic equivalent to $f$ together with the appropriate transformation matrix.

## `Points(C : parameters): CrvHyp -> [Pt]`

```magma
Bound: RngIntElt                    Default: 
```

This finds all rational points with height up to the given `Bound` on the hyperelliptic curve $C$, which must be defined over a rational function field ${\mathbb{F}}_q(t)$. The parameter `Bound` is *not optional*, and it refers to the $x$-coordinate (logarithmic) height of the points: In other words, the routine finds all projective points $(X:Y:Z)$ where $X$ and $Z$ are polynomials in $t$ of degree less than or equal to `Bound`.

## `PointsQI(C, H): Crv, RngIntElt -> [Pt]`

```magma
OnlyOne   : BoolElt                    Default: false
ExactBound: BoolElt                    Default: false
```

This is an optimised routine for finding rational points on a curve given as an intersection of two quadrics defined over a rational function field ${\mathbb{F}}_q(t)$. It searches for projective points whose coordinates are polynomials in $t$ of degree up to $H$. To guarantee finding *all* such points the parameter `ExactBound` must be set to true.

The algorithm uses a lattice reduction method described in [[Roberts, 2007](../../references.md#cite-roberts-phd)].

## `TwoIsogenySelmerGroups(E): CrvEll[FldFunG] -> GrpAb, GrpAb, MapSch, MapSch`

This performs descent by $2$-isogenies for a non-supersingular elliptic curve $E$ defined over a rational function field $k(t)$ where $k$ is finite *of characteristic 2*. The isogenies used are the Frobenius map $E \to E^{frob} : (x,y) \mapsto (x^2,y^2)$ and the dual isogeny $E^{frob} \to E$ (which is separable). The function returns four objects: the Selmer group $S^{sep}$ of the separable isogeny (as an abstract group), followed by the Selmer group $S^{Frob}$ of the Frobenius isogeny, followed by maps $S^{sep} \to k(t)/\Phi(k(t))$ and $S^{Frob} \to k(t)^*/(k(t)^*)^2$. Here $\Phi$ denotes the Artin–Schreier map $a \mapsto a^2 + a$.

Notes describing the algorithm will be made available (on request). The theoretical background is presented in [[Kramer, 1977](../../references.md#cite-kramer-two-descent)].
