# Cyclic Covers of ${\mathbb{P}}^1$

A $q$-cyclic cover of the projective line is a curve $C$ which admits a degree $q$ morphism to ${\mathbb{P}}^1$ such that the associated extension of function fields is (geometrically) cyclic. By Kummer theory, such a curve has an affine model of the form $y^q = f(x)$ (at least when the base field contains the q-th roots of unity). This class of curve includes hyperelliptic curves. Current functionality for cyclic covers includes testing local solubility, searching for points and performing descents on curves and their Jacobians when they are defined over a number field.

Most functionality is implemented in the cases where $f(x)$ is a separable polynomial of arbitrary degree and $q$ is prime. One notable exception is that the method of descent on the curve is available for any $f(x)$ that is $q$-th power free.

## Points

A point on a cyclic cover $C : y^q = f_dx^d + f_{d-1}x^{d-1} + ... + f_0$ is specified by a triple representing a point in the appropriate weighted projective plane.

When $d =$ Degree($f(x)$) is divisible by $q$, we consider points the weighted projective plane ${\mathbb{P}}^2(1:d/q:1)$. In this case a point is represented by a triple $[X,Y,Z]$ satisfying

$$
Y^q = f_dX^d + f_{d-1}X^{d-1}Z + ... + f_0Z^d.
$$

When $d =$ Degree($f(x)$) is not divisible by $q$, we consider points in the weighted projective plane ${\mathbb{P}}^2(q:d:1)$. In this case a point is represented by a triple $[X,Y,Z]$ satisfying

$$
Y^q = f_dX^d + f_{d-1}X^{d-1}Z^q + ... + f_0Z^{dq}.
$$

### `RationalPoints(f, q): RngUPolElt, RngIntElt -> SetIndx`

### `Points(f, q): RngUPolElt, RngIntElt -> SetIndx`

```magma
Bound           : RngIntElt                    Default: 0
DenominatorBound: RngIntElt                    Default: 0
NPrimes         : RngIntElt                    Default: 0
```

For a polynomial $f$ defined over a number field (or ${\mathbb{Q}}$), this searches for rational points on the curve $y^q = f(x)$. The search region is controlled by the parameters `Bound` (which must be specified) and `DenominatorBound`. The function returns a set of triples $(x,y,z)$ satisfying $y^q = F(x,z)$ where $F(x,z)$ is the homogenisation of $f(x)$ taking $x$ to have weight LCM($q$,Degree($f(x)$))/Degree($f(x)$).

The algorithm, and the parameters, are the same as for [`RationalPoints`](points.md#function-rationalpointscrvhyplabel) of a hyperelliptic curve.

### `HasPoint(f, q, v): RngUPolElt, RngIntElt, RngIntElt -> BoolElt, SeqEnum`

### `HasPoint(f, q, v): RngUPolElt, RngIntElt, RngOrdIdl -> BoolElt, SeqEnum`

For a polynomial $f$ defined over a number field $k$, this checks if the curve defined by $y^q=f(x)$ has any points over the completion $k_v$. The second return value is a triple of elements in the completion of $k$ at $v$ giving a point on the curve. The triple $(x,y,z)$ returned satisfies $y^q = F(x,z)$ where $F(x,z)$ is the homogenisation of $f(x)$ taking $x$ to have weight LCM($q$,Degree($f(x)$))/Degree($f(x)$).

The current implementation for testing local solubility of cyclic covers is polynomial time in the cardinality of the residue field, making it somewhat impractical for larger primes.

### `HasPointsEverywhereLocally(f, q): RngUPolElt, RngIntElt -> BoolElt`

For a polynomial $f$ defined over a number field $k$, this returns true if and only if the curve $y^q=f(x)$ has points over all nonarchimedean completions of $k$.

## Descent

Let $C$ be a curve with Jacobian $J$ and suppose $\psi: A \rightarrow J$ is an isogeny of abelian varieties. We say that a morphism of curves $\pi : D \rightarrow C$ is a $\psi$-covering of $C$ if, over an algebraic closure, $\pi$ is isomorphic as a cover to the pull-back of an embedding of $C$ into $J$ along $\psi$.

Now suppose that $C : y^q = f(x)$ is a $q$-cyclic cover of the projective line defined over a number field $k$. Any primitive $q$-th root of unity $\zeta$ gives rise to an automorphism: $\iota$ sending a point $(x,y)$ to $(x,\zeta y)$. This induces an automorphism of the Jacobian. Hence the endomorphism ring of the Jacobian contains the cyclotomic ring ${\mathbb{Z}}[\zeta]$, and in particular the endomorphism $\phi = 1 - \zeta$. The $\phi$-Selmer set of $C$ classifies isomorphism classes of $\phi$-coverings of $C$ which are everywhere locally soluble. There is an action of $\iota$ on these coverings. The quotient by this action is known as the fake $\phi$-Selmer set of $C$. If this set is empty, then $C$ has no $k$-rational points. This can happen even if $C$ itself has points everywhere locally. Even when this set is non-empty, it gives information about rational points on $C$. When $q = 2$, $\phi$ is multiplication by $2$, in which case the $\phi$-Selmer set is the same as the $2$-Selmer set described in `TwoCoverDescent`.

### `qCoverDescent(f, q): RngUPolElt, RngIntElt -> Set, Map`

```magma
PrimeBound : RngIntElt                    Default: 0
PrimeCutOff: RngIntElt                    Default: 0
KnownPoints: Set                          Default: {}
verbose    : CycCov                       Default: Verbose : 3
```

Computes the fake $\phi$-Selmer set of the cyclic cover $C: y^q=f(x)$ as an abstract set. The first return value is the fake $\phi$-Selmer set given as a subset of the cartesian product of number fields having defining polynomials the irreducible factors of $f$. The map returned is from this cartesian product into the abstract group $A(S,q)$ involved in the computation (the unramified outside $S$ subgroup of the quotient of the etale algebra associated to the ramification points of $C$ by the subgroup generated by scalars and $q$-th powers).

The input `f` must be a $q$-th power free polynomial defined over a number field $k$ with class number $1$.

The optional parameters `PrimeBound` and `PrimeCutoff` have the same meaning as those used the `TwoCoverDescent` for hyperelliptic curves. Only good primes up to `PrimeBound` and bad primes up to `PrimeCutoff` will be considered in the local computations. If either of these parameters is not set to default, the set returned might be strictly larger than the fake $\phi$-Selmer set.

One can obtain a lower bound for the size of the $\phi$-Selmer set by considering the images of known global points on $C$. This often speeds up the computation considerably as the first few primes might be sufficient to show that the $\phi$-Selmer set is equal to the set of images of the known rational points. A set of known points may be passed in using the parameter `KnownPoints`. These should be given as triples of the type returned by `RationalPoints`.

### `Example: qcoverdescent (ex-66395c)`

The following computation shows that the genus $15$ curve defined by the equation $y^7=2x^7+6$ has no rational points even though it is everywhere locally solvable.

```magma
> _<x> := PolynomialRing(Rationals());
> RationalPoints(3*x^7+6,7 :  Bound := 1000);
{@ @}
> HasPointsEverywhereLocally(3*x^7+6,7);
true
> time Sel := qCoverDescent(3*x^7+6,7 : PrimeBound := 1000);
Time: 0.450
> Sel;
{}

```

## Monic Models

Some of the descent algorithms described below must work with a cyclic cover $y^q = f(x)$ where $f(x)$ is of the form $c\cdot h(x)$ where $h$ is a monic integral polynomial and $c$ is a constant (equal to 1 in the case that the degree $d$ of $f$ is not divisible by $q$). Such an model can be obtained using the intrinsic `MonicModel` described below. If the input is not of the required form, `MonicModel` will be called automatically.

### `MonicModel(f, q): RngUPolElt, RngIntElt -> RngUPolElt, SeqEnum`

Returns a polynomial $g(x)$ of the form $c\cdot h(x)$ where $h$ is monic and integral and $c$ lies in the base ring of the input polynomial, $f$. If the degree of the input polynomial is not divisible by $q$ then $g$ will itself be monic and integral. The second return value is a pair of polynomials $a(x),b(y)$ giving a change of variables which determine an isomorphism between the cyclic covers $y^q = f(x)$ and $y^q = g(x)$.

## Descent on the Jacobian

Suppose $J$ is the Jacobian of the cyclic cover $C$ defined by $y^q=f(x)$ over a field $k$ containing the $q$-th roots of unity. If $k$ is a number field, then the $\phi$-Selmer group of $J$ is a finite group which contains $J(k)/\phi(J(k))$. Computing the $\phi$-Selmer group can be used to give an upper bound for the rank of $J(k)$. In the case $q = 2$, this reduces to the $2$-Selmer group computed with [`TwoSelmerGroup`](jacobians-number-fields.md#function-twoselmergroup).

For $q$ prime the $\phi$-Selmer group may be computed using an algorithm of Poonen-Schaefer [[Poonen and Schaefer, 1997](../../references.md#cite-poonen-schaefer)]. Their algorithm actually computes a fake Selmer group, which is a quotient of the true Selmer group by a subgroup of order dividing $q$.

When the base field does not contain the $q$-th roots of unity, one still obtains information by computing the $\phi$-Selmer group over the cyclotomic extension. For details see [[Poonen and Schaefer, 1997](../../references.md#cite-poonen-schaefer)], or consider the example below.

### `PhiSelmerGroup(f, q): RngUPolElt, RngIntElt -> GrpAb, Map`

```magma
ReturnRawData: BoolElt                    Default: false
verbose      : Selmer                     Default: Verbose : 3
```

For a polynomial $f$ over a number field $k$, this computes the (fake) $\phi$-Selmer group of the Jacobian of the curve $y^q = f(x)$ over the field $k(\mu_q)$ obtained by adjoining the $q$-th roots of unity to $k$. The polynomial $f(x)$ must be separable and $q$ must be prime.

There are two steps in the algorithm which may require a significant amount of time: the first is the computation of class groups of the extensions of $k(\mu_q)$ given by the irreducible factors of $f(x)$; the second is the computation of the local images of the descent map at the prime(s) above $q$.

The (fake) Selmer group is returned as a finite abelian group $S$, together with a map from $S$ to some affine algebra $A$, which represents the standard map from the Selmer group to $A^*/k^*(A^*)^q$ or to $A^*/(A^*)^q$ correspondingly as the degree of $f(x)$ is or is not divisible by $q$.

When called with `ReturnRawData` the program will yield three additional return values, `expvecs`, `factorbase` and `selpic1`. The first two are used to specify the images in $A^*/k^*(A^*)^q$ of the (fake) Selmer group generators (in unexpanded form). This is done exactly as for [`TwoSelmerGroup`](jacobians-number-fields.md#function-twoselmergroup). `selpic1` is an element of the supergroup containing the (fake) Selmer group, or it is the empty set. This specifies the coset of the (fake) Selmer group corresponding to the (fake) Selmer set of the Pic$^1$ torsor as described in [[Creutz, 2012](../../references.md#cite-creutzantsx)]. When the curve has points everywhere locally this determines whether or not the torsor is divisible by $\phi$ in Sha, which in turn yields more information on the rank.

Note: this function calls `PicnDescent` and repackages the information.

### `PicnDescent(f, q): RngUPolElt, RngIntElt -> RngIntElt, GrpAb, Tup, RngIntElt, Map, GrpAb`

```magma
Safety : RngIntElt                    Default: 0
Fields : SetEnum                      Default: {{ }}
verbose: Selmer                       Default: Verbose : 3
```

This function returns information at a slightly lower level than `PhiSelmerGroup`. It returns eight values, which we will call `dimSel`, `SelfakeJ`, `SelfakePic1`, `ranktorsglobal`, `ASqmodktoA`, `muJktors`, `toVec`, `FB`.

The return value `ASqmodktoA` is a map $m:G \rightarrow A$, where $A = k[x]/f(x)$ and $G$ is an elementary abelian $q$-group. The group $G$ is isomorphic to the unramified outside $S$ subgroup of $A*$ modulo $q$-th powers and scalars. (Here $S$ is the set of bad primes used for the computation.) The value `dimSel` is an upper bound for the rank of the $\phi$-Selmer group of $J/k$. It is not always sharp. It tries to determine the kernel of the map from Selmer to fake Selmer but doesn’t always succeed. `SetVerbose("Selmer",1)` should give some details about this. The group `SelfakeJ` is the subgroup of $G$ corresponding to the fake-$\phi$-Selmer group of $J/k$. The return value `SelfakePic1` is `<SelfakeJ,g>` with $g$ in $G$ such that the coset $(g + \rm{SelfakeJ})$ in $G$ corresponds to the fake-$\phi$-Selmer set of $Pic1/k$. The value `ranktorsglobal` is a lower bound for rank of $J(k)[\phi]$ (just coming from factorization of f over k, so not sharp in all cases). The group `muJktors` is the subgroup of $G$ corresponding to the image under the descent map of the part of $J(k)[\phi]$ computed above. The return values `toVec` and `FB` are similar to `expvecs` and `factorbase` returned by [`TwoSelmerGroup`](jacobians-number-fields.md#function-twoselmergroup).

There are optional parameters which have the following roles. The local images are determined by computing images of random points until they generate a group that is large enough. Setting `Safety := N` will force it to compute the images of $N$ extra random points (and throw an error if they generate a larger group). The parameter `Fields` has the same role as in [`TwoSelmerGroup`](jacobians-number-fields.md#function-twoselmergroup).

### `RankBound(f, q): RngUPolElt, RngIntElt -> RngIntElt`

### `RankBounds(f, q): RngUPolElt, RngIntElt -> RngIntElt, RngIntElt`

```magma
ReturnGenerators: BoolElt                    Default: false
verbose         : Selmer                     Default: Verbose : 3
```

An upper (or a lower and upper) bound for the rank of the Jacobian of the cyclic cover defined by $y^q = f(x)$. The upper bound is obtained by performing a descent as described above and incorporates the information on the Pic$^1$ torsor thus obtained. The lower bound is obtained by a naive (and rather inefficient) search for divisors on the curve.

If the optional parameter `ReturnGenerators` is set to `true`, then a third value will be returned. This will be a list of univariate polynomials defining divisors on ${\mathbb{P}}^1$ that lift to divisors on the curve. The images of these in the Mordell–Weil group generate a subgroup of rank at least as large as the lower bound provided. Independence of these points is determined by considering their images in the (fake) Selmer group.

### `Example: qcoverdescent (ex-ddca22)`

In this example we use descents to determine both the rank of the Mordell–Weil group and the $3$-primary part of Sha for the Jacobian $J$ of a genus $4$ curve $C$ over the rationals.

```magma
> _<x> := PolynomialRing(Rationals());
> f := 3*(x^6 + x^4 + 4*x^3 + 2*x^2 + 4*x + 3);
> k := CyclotomicField(3);
> IsIrreducible(PolynomialRing(k)!f);
true
> SelJ,m,expvecs,fb,SelPic1 := PhiSelmerGroup(f,3 : ReturnRawData);
> Ilog(3,#SelJ);
2

```

In this example the map from the genuine Selmer group to the fake Selmer group has a kernel of order $3$. This is because $f$ has degree divisible by $q = 3$ and is irreducible. Hence the $\phi$-Selmer group has $3$-rank $3$. The fact that $f$ is irreducible also implies that there is no nontrivial $\phi$-torsion on $J$ defined over $k$. Thus the $\phi$-Selmer group gives an upper bound of $2*3 = 6$ for the rank of $J$ over $k$ and an upper bound of $3$ for the rank over ${\mathbb{Q}}$ (see [[Poonen and Schaefer, 1997](../../references.md#cite-poonen-schaefer)]). We can use the information about the Pic$^1$ torsor to get a better bound

```magma
> HasPointsEverywhereLocally(f,3);
true
> SelPic1;
{}

```

This means that the Pic$^1$ torsor represents a $\phi$-torsion class in the Shafarevich-Tate group of $J$ that is not divisible by $\phi$. In particular it is nontrivial, and because the Cassels-Tate pairing is alternating this implies the $\phi$-torsion subgroup of Sha contains a nontrivial subgroup with even $3$-rank. Hence, we deduce that $J(k)/\phi(J(k))$ has $3$-rank at most $3-2 = 1$, and consequently that $J({\mathbb{Q}})$ has rank $\le 1$. Calling `RankBounds` will deduce these bounds, and search for generators to obtain a lower bound.

```magma
> r_l, r_u, gens := RankBounds(f,3 : ReturnGenerators);
> [r_l,r_u];
[1,1]
> gens;
[*
    x^3 - x^2 + 4*x + 4
*]

```

This polynomial defines a divisor on ${\mathbb{P}}^1$ that lifts to a degree $3$ divisor $D$ on $C : y^3 = f(x)$. One way to verify this is the following:

```magma
> K := NumberField(gens[1]);
> IsPower(Evaluate(f,K.1),3);
true 1/4*(-3*K.1^2 + 9*K.1 + 6)

```

Let $D_0$ denote the pullback of some point $P \in {\mathbb{P}}^1$ under the degree $3$ map $C \rightarrow {\mathbb{P}}^1$. Then $D - D_0$ is a degree $0$ defined over the rationals. According to `RankBounds` its class has infinite order in $J({\mathbb{Q}})$. This was determined by considering its image under the composition, $J({\mathbb{Q}}) \rightarrow J(k) \rightarrow Sel^\phi(J/k)$. Since there is no nontrivial $\phi$-torsion, this amounts to saying that the image is nontrivial. We can verify this with the following computations (carried out internally by `RankBounds`).

```magma
> A<theta> := Domain(m); // the algebra representing Sel
> D := Evaluate(gens[1],theta);
> imD := m(D);
> assert imD ne SelJ!0;
> assert imD in SelJ;

```

Since the rank over ${\mathbb{Q}}$ has been computed unconditionally it follows that the $\phi$-torsion subgroup of Sha is isomorphic to $({\mathbb{Z}}/3)^2$, and since it contains a element not divisible by $\phi$ in Sha one can deduce that the $3$-primary part of Sha is also isomorphic to $({\mathbb{Z}}/3)^2$.

## Partial Descent

The (fake) $\phi$-Selmer set of the curve $C : y^q = f(x)$ defined over a number field $k$ is computed using a map which sends a point $(x,y)$ of $C$ to $x - \theta$, where $\theta$ is a generic root of $f$. This map takes values in the product of the extensions of $k$ defined by the irreducible factors of $f(x)$. More generally one can specify a partial descent map as follows. For each irreducible factor $f_i(x)$ of $f(x)$, fix an extension $K_i/k$ and an irreducible factor $h_i(x) \in K_i[x]$ of $f_i(x)$. The map sending $(x,y)$ to $(h_1(x),...,h_n(x))$ induces a well defined map from $C(k)$ to an appropriate quotient of the units in the product of the $K_i$. A partial descent computes the set of elements which restrict into the image of $C(k_v)$ for every prime $v$ of $k$. This set gives information on the set of rational points of $C$. If it is empty, then the curve has no rational points.

Geometrically this set can be understood as follows. The coverings parameterised by the $\phi$-Selmer set are Galois covers of $C$ with group isomorphic (as a Galois module) to the $\phi$-torsion subgroup of the Jacobian. By Galois theory, any Galois submodule gives rise to intermediate coverings. A partial descent computes a set of everywhere locally solvable intermediate coverings corresponding to some Galois submodule of $J[\phi]$.

### `qCoverPartialDescent(f, factors, q): RngUPolElt, [* RngUPolElt *], RngIntElt -> Set, Map`

```magma
PrimeBound : RngIntElt                    Default: 0
PrimeCutoff: RngIntElt                    Default: 0
KnownPoints: Set                          Default: {}
verbose    : CycCov                       Default: Verbose : 3
```

Performs a partial descent on the curve $y^q = f(x)$ with respect to the descent map given by `factors`. The map returned is from this cartesian product into the abstract group $A(S,q)$ involved in the computation (the unramified outside $S$ subgroup of the quotient of the etale algebra associated to the orbits of ramification points of $C$ determined by `factors` by the subgroup generated by scalars and $q$-th powers).

The input `f` must be a separable polynomial defined over a number field $k$ with class number $1$. For each irreducible factor $h_i \in k[x]$ of $f$, the list `factors` must contain an irreducible factor of $h_i$ defined over some (possibly trivial) extension of $k$. The optional parameters are the same as for `qCoverDescent`.

### `Example: qcoverpartialdescent (ex-9ab341)`

Consider the cyclic cover $D : y^3=3(x^2+1)(x^2+17)(x^2-17)$.

```magma
> _<x>:=PolynomialRing(Rationals());
> f := 3*(x^2+1)*(x^2+17)*(x^2-17);
> pts := RationalPoints(f,3 : Bound:=100);
> pts;
{@
    [ -1, -12, 1 ],
    [ 1, -12, 1 ]
@}

```

So this appears to have only two rational points. We now apply partial descent by only factorising the third factor as follows:

```magma
> K<th> := NumberField(x^2-17);
> factor := Factorisation(x^2-17,K)[1,1];
> time selmerset, algebra:=qCoverPartialDescent(
>  3*(x^2+1)*(x^2+17)*(x^2-17),[*x^2+1,x^2+17,factor*],3
>  : KnownPoints := pts, PrimeBound := 1000 );
Time: 0.530
> selmerset;
{
    <1, 9, $.1 + 9>,
    <1, 9, 2*$.1 + 2>
}
> delta := <1,9,2+2*th>;

```

Each element of `selmerset` corresponds to a covering of $D$ and every rational point on $D$ lifts to one of these two coverings. For example $\delta$ corresponds to a covering $Y_\delta$ of $D$ with defining equations

$$
\lambda^2y_1^3=x^2+1,
$$

$$
9\lambda^2y_2^3=x^2+17,
$$

$(2\theta+2)\lambda y_3^3= x-\theta,$ where $\theta$ is a square root of $17$. This covering of $D$ also evidently covers the genus one curve defined over ${\mathbb{Q}}(\theta)$, $C : (2\theta+2)v^3 = (x^2+1)(x-\theta)\,.$ One can now use the method of Elliptic Curve Chabauty to find all points of $Y_\delta(K)$ which map to points of $D({\mathbb{Q}})$. Namely any such point gives rise to a point of $C(K)$ with $x$-coordinate in ${\mathbb{Q}}$. Provided we can obtain generators for $C(K)$, such points can be determined using `Chabauty`.

```magma
> P2<x,v,w>:=ProjectivePlane(K);
> C:=Curve(P2, -(delta[3])*v^3 + (x^2+w^2)*(x-th*w) );
> E,CtoE:=EllipticCurve(C);
> twotors := TorsionSubgroup(E);
> #twotors;
1
> covers,coverstoE:=TwoDescent(E);
> #covers;
1
> cover:=covers[1];
> covertoE:=coverstoE[1];
> pts:={@pt@covertoE : pt in RationalPoints(cover : Bound:=100)@};
> pts;
{@ (1/128*(-153*th + 1377) : 1/1024*(-8109*th + 28917) : 1),
(1/128*(-153*th + 1377) : 1/1024*(6885*th - 17901) : 1),
(1/194688*(-171346689*th + 708942857) : 1/60742656*(-4566609746937*th
    + 18826158509345) : 1), (1/194688*(-171346689*th + 708942857) :
1/60742656*(4566537140481*th - 18825505051241) : 1) @}
> gen := pts[1];

```

This shows that $E(K) \simeq {\mathbb{Z}}$, so `gen` generates a finite index subgroup.

```magma
> A:=FreeAbelianGroup(1);
> AtoE:=map<A -> E | elt :-> Eltseq(elt)[1]*gen >;

```

To apply Chabauty, we want to use a map $E \rightarrow {\mathbb{P}}^1$ such that the composition $C \rightarrow E \rightarrow {\mathbb{P}}^1$ sends $(x,v,w)$ to $x$.

```magma
> P1:=ProjectiveSpace(Rationals(),1);
> CtoE;
Mapping from: CrvPln: C to CrvEll: E
with equations :
1/16*(9*th - 153)*v
1/128*(-729*th + 1377)*x
-1/17*th*x + w
and inverse
th*$.2
1/16*(-9*th + 153)*$.1
$.2 + 1/128*(1377*th - 12393)*$.3
> EtoP1:=map<E -> P1 | [th*E.2,E.2 + 1/128*(1377*th - 12393)*E.3]>;
> Chabauty(AtoE,EtoP1);
{
    -A.1
}
126
> Chabauty(AtoE,EtoP1 : IndexBound:=126);
{
    -A.1
}
126
> pointC:= (-A.1)@AtoE@@CtoE;
> pointC;
(-1 : -1 : 1)

```

Any preimage of this point on $Y_\delta$ has $x = -1$, and as such must lie above $(-1,-12) \in D({\mathbb{Q}})$. A similar argument proves that the only rational point coming from the other element of the partial Selmer set is $(1,-12)$, proving $D({\mathbb{Q}}) = \{ (1,12),(-1,-12)\}$.
