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#
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 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#
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.

> _<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;
{}

Run in calculator

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.

For \(q\) prime the \(\phi\)-Selmer group may be computed using an algorithm of Poonen-Schaefer [Poonen and Schaefer, 1997]. 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], or consider the example below.

PhiSelmerGroup(f, q): RngUPolElt, RngIntElt -> GrpAb, Map#
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. 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]. 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#
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.

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.

RankBound(f, q): RngUPolElt, RngIntElt -> RngIntElt#
RankBounds(f, q): RngUPolElt, RngIntElt -> RngIntElt, RngIntElt#
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.

> _<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

Run in calculator

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]). We can use the information about the Pic\(^1\) torsor to get a better bound

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

Run in calculator

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.

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

Run in calculator

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:

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

Run in calculator

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).

> 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;

Run in calculator

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#
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)\).

> _<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 ]
@}

Run in calculator

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

> 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>;

Run in calculator

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.

> 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];

Run in calculator

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

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

Run in calculator

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\).

> 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)

Run in calculator

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)\}\).