Mordell–Weil Groups and Descent Methods#
The remainder of the chapter describes the functions and methods for determining the Mordell–Weil group (the group of rational points) for a curve defined over \({\mathbb{Q}}\) or a number field.
The Mordell–Weil theorem states that for an elliptic curve \(E\) defined over a global field \(F\) (such as \({\mathbb{Q}}\) or a number field), the set \(E(F)\) of points on \(E\) with \(F\)-rational coordinates forms a finitely generated abelian group. This is called the Mordell–Weil group, and the \({\mathbb{Z}}\)-rank of the free part is called the Mordell–Weil rank of \(E\).
It is an open problem to give an explicit algorithm which can determine the Mordell–Weil group of any elliptic curve over \({\mathbb{Q}}\) (or any number field). The general approach is to use the method of \(n\)-descent, for one or more suitable integers \(n\). There are two main problems with this. Firstly, \(n\)-descent cannot determine the rank of \(E\) if the Tate–Shafarevich group \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E)\) has elements of order \(n\). It is an open conjecture that, for fixed \(E\), this occurs for only finitely many values of \(n\). The second problem is more practical: one cannot implement \(n\)-descent for general \(n\).
Magma has implementations of descent over \({\mathbb{Q}}\) for \(n = 2, 4, 8, 3, 9, 5\) as well as for isogenies of various degrees. It is the only software that has a complete implementation of \(2\)-descent over number fields (in the sense that \(2\)-coverings are reduced and therefore can be used to search for points). In addition, the Cassels-Tate pairing on the \(2\)-Selmer group is implemented over all global fields, and also on the \(4\)-Selmer group over \({\mathbb{Q}}\). All these techniques (and some others) are combined in the main functions to determine ranks and generators. Each of the main functions returns a result together with the status of the result, i.e. whether the rank has been proven, or the group returned is known to be the full Mordell–Weil group.
Prior to version 2.21, the commands MordellWeilGroup, Rank, Generators, etc, did not use all available techniques. Furthermore they did not return the status of their results, but instead a warning was printed in the event of an unproven result; no such warnings are printed now.
Magma provides several ways to ask for information about ranks and Mordell–Weil groups.
- (i)
The main commands are
Rank,RankBounds,MordellWeilGroup,Generators. These apply the available techniques in a suitable order.- (ii)
At a slightly lower level, the routine
MordellWeilShaInformationfollows the same procedure, and also prints a summary of what is known about the rank, generators and sha after applying each technique. The information about sha is also returned at the end.- (iii)
The techniques may be called individually. This is often necessary to get the best results in hard examples – the automated procedure used by the higher level routines cannot always make the best choices. All the descent techniques are described later in this chapter; the other main techniques are
AnalyticRankandHeegnerPoint.
Torsion#
- TorsionSubgroup(E): CrvEll -> GrpAb, Map#
- TorsionSubgroup(H): SetPtEll -> GrpAb, Map#
Given an elliptic curve \(E\) defined over \({\mathbb{Q}}\) or a number field, this returns an abelian group \(A\) isomorphic to the torsion subgroup of the Mordell–Weil group, and a map from this abstract group \(A\) to the elliptic curve providing the isomorphism.
For a curve over \({\mathbb{Q}}\), by a theorem of Mazur, \(A\) is either \(C_k\) (for \(k\) in \(\{1..10\}\) or \(12\)) or \(C_2 \times C_{2k}\) (for k in \(\{1..4\}\)). When there are two generators, they are chosen in such a way that the first generator has order \(2\).
The algorithm (for curves over number fields) is based on the
TorsionBounddescribed in this section. (For curves over \({\mathbb{Q}}\) a similar method is used.)
- TwoTorsionSubgroup(E): CrvEll -> GrpAb, Map#
This returns the group of \(2\)-torsion points on the elliptic curve \(E\) (returned in the same way as the
TorsionSubgroup). Note that this is a very cheap computation.
- TorsionBound(E, n): CrvEll, RngIntElt -> RngIntElt#
Given an elliptic curve \(E\) defined over a number field, returns a bound on the size of the torsion subgroup of \(E\). This is done by considering at least n primes of good reduction (with early exit in some cases, such as when the torsion is shown to be only two-torsion).
- pPowerTorsion(E, p): CrvEll, RngIntElt -> GrpAb, Map#
Bound: RngIntElt Default:
Given an elliptic curve \(E\) defined over \({\mathbb{Q}}\) or a number field, this returns the \(p\)-power torsion subgroup of \(E\) over its base field (returned in the same way as the
TorsionSubgroup). A bound on the size of the \(p\)-power torsion subgroup may be given, as the parameterBound, to cut short the computation in hard cases.
Mordell–Weil Group and Rank#
- RankBounds(H: parameters): SetPtEll -> RngIntElt, RngIntElt#
- RankBounds(E: parameters): CrvEll -> RngIntElt, RngIntElt#
- MordellWeilRankBounds(H: parameters): SetPtEll -> RngIntElt, RngIntElt#
- MordellWeilRankBounds(E: parameters): CrvEll -> RngIntElt, RngIntElt#
Effort: RngIntElt Default: 1
Given an elliptic curve \(E\) defined over \({\mathbb{Q}}\) or a number field, this returns lower and upper bounds on the rank of the Mordell–Weil group of \(E\).
The parameter
Effortmust be an integer at least \(1\) (the default). Its usage is explained underMordellWeilShaInformation.
- Rank(H: parameters): SetPtEll -> RngIntElt, BoolElt#
- Rank(E: parameters): CrvEll -> RngIntElt, BoolElt#
- RankBound(E): CrvEll -> RngIntElt, BoolElt#
- MordellWeilRank(H: parameters): SetPtEll -> RngIntElt, BoolElt#
- MordellWeilRank(E: parameters): CrvEll -> RngIntElt, BoolElt#
Effort: RngIntElt Default: 1
Given an elliptic curve \(E\) defined over \({\mathbb{Q}}\) or a number field, this returns a lower bound \(r\) for the Mordell–Weil group of \(E\). The second value returned is a boolean, which is
trueiff it is known that the rank is exactly \(r\).The parameter
Effortmust be an integer at least \(1\) (the default). Its usage is explained underMordellWeilShaInformation.
- MordellWeilGroup(H: parameters): SetPtEll -> GrpAb, Map, BoolElt, BoolElt#
- MordellWeilGroup(E: parameters): CrvEll -> GrpAb, Map, BoolElt, BoolElt#
- AbelianGroup(H: parameters): SetPtEll -> GrpAb, Map, BoolElt, BoolElt#
- AbelianGroup(E: parameters): CrvEll -> GrpAb, Map, BoolElt, BoolElt#
Effort : RngIntElt Default: 1 HeightBound: RngIntElt Default: 15
The Mordell–Weil group of an elliptic curve \(E\) defined over \({\mathbb{Q}}\). The first two values returned are an abelian group \(A\) and a map \(m\) from \(A\) to \(E\). The map \(m\) provides an isomorphism between the abstract group \(A\) and the Mordell–Weil group.
Additionally the function returns two booleans. The first boolean is
trueiff the rank of the group returned is known to be the rank of the curve. The second boolean istrueiff the group returned is known to be the full Mordell–Weil group.The parameter
Effortmust be an integer at least \(1\) (the default). Its usage is explained underMordellWeilShaInformation.The parameter
HeightBoundlimits the search for points directly on \(E\) to the given naive height. (Note: this affects only saturation of the group, not determination of the rank.)
- Generators(H): SetPtEll -> [ PtEll ]#
- Generators(E): CrvEll -> [ PtEll ]#
This function returns the generators of the
MordellWeilGroupof the elliptic curve \(E\) (listed in the same order).
- NumberOfGenerators(H): SetPtEll -> RngIntElt#
- NumberOfGenerators(E): CrvEll -> RngIntElt#
- Ngens(H): SetPtEll -> RngIntElt#
- Ngens(E): CrvEll -> RngIntElt#
This is equivalent to
NumberOfGenerators(MordellWeilGroup(E)).
- Saturation(points, n): [ PtEll ], RngIntElt -> [ PtEll ]#
TorsionFree: BoolElt Default: false OmitPrimes : [ RngIntElt ] Default: [] Check : BoolElt Default: true
Given a sequence of points on an elliptic curve \(E\) over the rationals or a number field, and an integer \(n\), this function returns a sequence of points generating a subgroup of \(E({\mathbb{Q}})\) which contains the given points and which is \(p\)-saturated for all primes \(p\) up to \(n\). (A subgroup \(S\) is \(p\)-saturated in a group \(G\) if there is no intermediate subgroup \(H\) for which the index \([H:S]\) is finite and divisible by \(p\).)
If
OmitPrimesis set to be a sequence of primes, then the group is not checked to be \(p\)-saturated for those primes. IfTorsionFreeis set totrue, torsion points are omitted from the result (that is, the result contains independent generators modulo torsion). IfCheckis set tofalse, the input sequence of points are assumed to be independent modulo torsion.
- Saturation(points): [ PtEll ] -> [ PtEll ]#
TorsionFree: BoolElt Default: false Check : BoolElt Default: true
Given a sequence of points on an elliptic curve \(E\) over the rationals or a number field, returns generators of the saturation of the given points in the Mordell–Weil group of \(E\).
- Example: Mordell Weil (ex-0fa71f)#
> E := EllipticCurve([73, 0]); > E; Elliptic Curve defined by y^2 = x^3 + 73*x over Rational Field > Factorization(Integers() ! Discriminant(E)); [ <2, 6>, <73, 3> ] > BadPrimes(E); [ 2, 73 ] > LocalInformation(E); [ <2, 6, 6, 1, II, true>, <73, 3, 2, 2, III, true> ] > G, m := MordellWeilGroup(E); > G; Abelian Group isomorphic to Z/2 + Z + Z Defined on 3 generators Relations: 2*G.1 = 0 > Generators(E); [ (0 : 0 : 1), (36 : -222 : 1), (4/9 : 154/27 : 1) ] > 2*m(G.1); (0 : 1 : 0)
- Example: Rank (ex-ee2e20)#
Here is a curve with moderately large rank; we do not attempt to compute the full group since that would be quite time-consuming.
> E := EllipticCurve([0, 0, 0, -9217, 300985]); > T, h := TorsionSubgroup(E); > T; Abelian Group of order 1 > time RankBounds(E); 7 7 Time: 0.070
This curve was well-behaved in that the computed lower and upper bounds on the rank are the same, and so we know that we have computed the rank exactly. Here is a curve where that is not the case:
> E := EllipticCurve([0, -1, 0, -140, -587]); > time G, h := MordellWeilGroup(E); Warning: rank computed (2) is only a lower bound (It may still be correct, though) Time: 0.250 > RankBounds(E); 2 3
The difficulty here is that the Tate–Shafarevich group of \(E\) is not trivial, and this blocks the \(2\)-descent process used to compute the rank. We can compute the
AnalyticRankof the curve to be 2, but this is only conjecturally equal to the rank. In cases like this, higher level descents may provide a more definitive answer; the machinery for two- and four-descents described in the next two sections can be used to confirm that the rank is indeed 2. In any case, we can certainly get the group with rank equal to the lower bound.> G; Abelian Group isomorphic to Z + Z Defined on 2 generators (free) > S := Generators(E); > S; [ (-6 : -1 : 1), (-7 : 1 : 1) ] > [ Order(P) : P in S ]; [ 0, 0 ] > h(G.1) eq S[1]; true > h(G.2) eq S[2]; true > h(2*G.1 + 3*G.2); (-359741403/57729604 : 940675899883/438629531192 : 1) > 2*S[1] + 3*S[2]; (-359741403/57729604 : 940675899883/438629531192 : 1)
As mentioned above, the rank of this curve is actually \(2\), so we have computed generators for the full group of \(E\).
- MordellWeilShaInformation(E: parameters): CrvEll -> [RngIntElt], [PtEll], [Tup]#
- DescentInformation(E: parameters): CrvEll -> [RngIntElt], [PtEll], [Tup]#
RankOnly: BoolElt Default: false ShaInfo : BoolElt Default: false Silent : BoolElt Default: false Effort : RngIntElt Default: 1
This is a special function which uses all relevant Magma machinery to obtain as much information as possible about the Mordell–Weil group and the Tate–Shafarevich group of the given elliptic curve \(E\) over \({\mathbb{Q}}\) or a number field. The tools used include \(2\)-descent, \(4\)-descent, Cassels-Tate pairings, \(8\)-descent, \(3\)-descent. When the conductor is not too large, analytic methods (analytic rank and Heegner points) are also used. The information is progressively refined as the tools are applied (in order of their estimated cost), and a summary is printed at each stage. At the end, all information obtained is returned in three sequences.
The first sequence returned contains lower and upper bounds on the Mordell–Weil rank of \(E({\mathbb{Q}})\), and the second is the sequence of independent generators of the Mordell–Weil group (modulo the torsion subgroup) that have been found. The third sequence returned contains the information obtained about the Tate–Shafarevich group \(Sha(E)\): letting \(r_n\) denote the largest integer such that \({\mathbb{Z}}/n{\mathbb{Z}}\) is contained in \(Sha(E)\), the tuple
<n, [l,u]>would indicate that the computations prove \(l \le r_n \le u\).By default, the routine attempts to determine the rank and generators, and returns whenever it succeeds in determining them. When
RankOnlyis set to true, it returns as soon as the Mordell–Weil rank has been determined. WhenShaInfois set to true, it additionally probes the structure of \(Sha(E)\) using all available tools.The parameter
Effortmust be an integer at least \(1\) (the default). Currently it has the following effect. For curves over \({\mathbb{Q}}\): when the effort is \(1\), the algorithm terminates before attempting the hardest methods (FourDescentis used but notEightDescentorThreeDescent), otherwise all methods are used. For curves over number fields: all available methods are always used, and theEffortis a linear multiplier that controls the time spent in searching for points in some of the methods.
- Example: Mwsha Example (ex-fb2edb)#
Conductor \(389\) is the smallest conductor of a curve with rank \(2\):
> E := EllipticCurve("389a1"); > time rank, gens, sha := MordellWeilShaInformation(E); Torsion Subgroup is trivial Analytic rank = 2 The 2-Selmer group has rank 2 Found a point of infinite order. Found 2 independent points. After 2-descent: 2 <= Rank(E) <= 2 Sha(E)[2] is trivial (Searched up to height 100 on the 2-coverings.) Time: 0.280
We now take a curve of conductor \(571\), which has rank \(0\) and nontrivial Tate–Shafarevich group:
> E := EllipticCurve("571a1"); > time rank, gens, sha :=MordellWeilShaInformation(E); Torsion Subgroup is trivial Analytic rank = 0 ==> Rank(E) = 0 Time: 0.010
We must specify that we want information about the Tate–Shafarevich group:
> time rank, gens, sha :=MordellWeilShaInformation(E : ShaInfo); Torsion Subgroup is trivial Analytic rank = 0 ==> Rank(E) = 0 The 2-Selmer group has rank 2 After 2-descent: 0 <= Rank(E) <= 0 (Z/2)^2 <= Sha(E)[2] <= (Z/2)^2 (Searched up to height 10000 on the 2-coverings.) The Cassels-Tate pairing on Sel(2,E)/E[2] is [0 1] [1 0] After using Cassels-Tate: 0 <= Rank(E) <= 0 (Z/2)^2 <= Sha(E)[4] <= (Z/2)^2 The 3-Selmer group has rank 0 After 3-descent: 0 <= Rank(E) <= 0 (Z/2)^2 <= Sha(E)[12] <= (Z/2)^2 Time: 0.840
Two-Descent#
This section describes the main implementations of two-descent (by the “algebraic” algorithm) in Magma, for curves over \({\mathbb{Q}}\) and for curves over number fields.
The two-descent process determines the locally soluble \(2\)-coverings of a given elliptic curve, returning them as hyperelliptic curves \(C:y^2 = f(x)\) of degree four. The process breaks into two main parts: first to compute the \(2\)-Selmer group, then to construct \(2\)-covering curves corresponding to its elements. To obtain nice models of the coverings, minimisation and reduction techniques are used. This is done over (general) number fields using algorithms developed by Donnelly and Fisher.
A separate implementation is available for the case where \(E\) admits a \(2\)-isogeny: this involves first computing the \(2\)-coverings for the isogeny and its dual (in this case the covering maps have degree \(2\) instead of degree \(4\)), and then lifting these to the level of a “full \(2\)-descent”.
This section also describes functions for dealing with \(2\)-covering curves as binary quartic forms: invariant theory, and minimisation and reduction. This functionality overlaps with the package for genus one models (see Models of Genus One Curves). There is also a straightforward interface to the 2-Selmer group machinery.
- TwoDescent(E: parameters): CrvEll -> [CrvHyp], [Map], Map#
RemoveTorsion: BoolElt Default: false RemoveGens : { PtEll} Default: { } WithMaps : BoolElt Default: true MinRed : BoolElt Default: verbose : TwoDescent Default: Verbose : 1Given an elliptic curve \(E\) over the rationals or a number field, this performs \(2\)-descent on \(E\) producing \(2\)-covering curves that represent the elements of the \(2\)-Selmer group of \(E\). The function returns these as a sequence of hyperelliptic curves, and also returns a corresponding list of maps (unless the parameter
WithMapsis set tofalse).If
RemoveTorsionistrue, the generators of the torsion subgroup are factored out from the group. IfRemoveGensis given, the group spanned by the specified points is factored out.For curves over number fields: a third item is returned which specifies the group structure on the set of \(2\)-coverings. This is a map (with inverse) from an abstract group to the sequence of 2-coverings; the abstract group is either
TwoSelmerGroup(E), or the appropriate quotient in the case whereRemoveTorsionorRemoveGenswere specified.Currently, for curves over number fields: the parameter
MinRedcontrols whether the coverings are to be minimised and reduced. (This may be expensive for various reasons, especially when the field discriminant is not small: in particular, a large integer may need to be factored.)
- AssociatedEllipticCurve(f): RngUPolElt -> CrvEll, Map#
- AssociatedEllipticCurve(C): CrvHyp -> CrvEll, Map#
E: CrvEll Default:
Gives the minimal model of the elliptic curve associated with a two-covering given as a polynomial \(f\) or a hyperelliptic curve \(C\), along with a map from points \([x, y]\) on the two-covering to the curve.
If an elliptic curve is given as
E, this must be isomorphic to the Jacobian of \(C\), and then the map returned will be a map to the givenE.
- TwoCover(e): FldNumElt -> CrvHyp, Map#
- TwoCover(e): RngUPolResElt -> CrvHyp, Map#
The purpose of this function is to calculate the \(2\)-covers that are returned by
TwoDescentindividually rather than all together.The argument \(e\) is an element of a cubic extension \(A/F\), where \(F\) is a number field, and where \(A\) may be either a number field over \(F\) or an affine algebra over \(F\). The element \(e\) determines a \(2\)-cover of some elliptic curve over \(F\) (by the construction given in the description of
DescentMaps).
- Example: twodescent (ex-17ccb5)#
> SetSeed(1); // results may depend slightly on the seed > E := EllipticCurve([0, 1, 0, -7, 6]); > S := TwoDescent(E); > S; [ Hyperelliptic Curve defined by y^2 = x^4 + 4*x^3 - 2*x^2 - 20*x + 9 over Rational Field, Hyperelliptic Curve defined by y^2 = x^4 - x^3 - 2*x^2 + 2*x + 1 over Rational Field, Hyperelliptic Curve defined by y^2 = 2*x^4 - 4*x^3 - 8*x^2 + 4*x + 10 over Rational Field ]
The curve \(E\) has three non-trivial two-descendants, hence its rank is at most 2. The first two curves yield obvious rational points, so we can find two independent points on \(E\) (and it has exact rank 2).
> pt_on_S1 := Points(S[1] : Bound:=10 )[1]; > pt_on_S1; // We obtain the map from S[1] to E by > _, phi := AssociatedEllipticCurve(S[1] : E:=E ); > phi( pt_on_S1 ); (1 : -1 : 1) // Now do the same for the second curve. > pts := Points(S[2] : Bound:=10 ); > if #pts eq 0 then // depends on random state > S[2], S[3] := S[3], S[2]; > pts := Points(S[2] : Bound:=10 ); > end if; > pt_on_S2 := pts[1]; > _, phi := AssociatedEllipticCurve(S[2] : E:=E ); > phi( pt_on_S2 ); (-3 : 3 : 1)
Two Descent Using Isogenies#
- TwoIsogenyDescent(E : parameters): CrvEll -> SeqEnum[CrvHyp], List, SeqEnum[CrvHyp], List, MapSch, MapSch#
Isogeny : MapSch Default: TwoTorsionPoint: PtEll Default:
Given an elliptic curve \(E\) over \({\mathbb{Q}}\) admitting a \(2\)-isogeny \(\phi : E' \rightarrow E\), this function computes \(2\)-coverings representing the nontrivial elements of the Selmer groups of \(\phi\) and of the dual isogeny \(\phi' : E \rightarrow E'\). These coverings are given as hyperelliptic curves \(C : y^2=quartic(x)\). Six objects are returned: (i) the sequence of coverings C of E for \(\phi\); (ii) the corresponding list of maps \(C \rightarrow E\); (iii) and (iv) the coverings \(C'\) and maps \(C' \rightarrow E'\) for \(\phi'\); (v) and (vi) the isogenies \(\phi\) and \(\phi'\) that were used.
- LiftDescendant(C): CrvHyp -> SeqEnum[ CrvHyp ], List, MapSch#
- TwoDescendantsOverTwoIsogenyDescendant(C): CrvHyp -> SeqEnum[ CrvHyp ], List, MapSch#
This routine performs a higher descent on curves arising in
TwoIsogenyDescent(E)on an elliptic curve \(E\) over \({\mathbb{Q}}\). The curves obtained are \(2\)-coverings of \(E\) in the sense of ordinary (full)TwoDescent; more precisely, they are exactly the set of \(2\)-coverings \(D\) for which the covering map \(D \rightarrow E\) factors through \(C\). Up to isomorphism, they are a subset of the \(2\)-coverings returned byTwoDescent(E). The advantage of this approach is that it works entirely over the base field of \(E\), whereasTwoDescentwill in general compute a class group over a quadratic extension of the base field. The example below explains how to recover all coverings produced byTwoDescent(E)using the \(2\)-isogeny approach.This function accepts any curve \(C\) in the first sequence of curves returned by
TwoIsogenyDescent(E)(these are the \(2\)-isogeny-coverings of \(E\)). More generally it accepts any hyperelliptic curve of the form \(y^2 = d_1x^4 + cx^2 + d_2\). A model for the associated elliptic curve \(E\) is then \(y^2 = x(x^2 + cx + d_1 d_2)\).The function returns three objects: a sequence containing the covering curves \(D\), a list containing the corresponding maps \(D \rightarrow C\), and lastly the covering map \(C \rightarrow E\) from the given curve to some model of its associated elliptic curve.
Invariants#
- QuarticIInvariant(q): RngUPolElt -> RngIntElt#
- QuarticJInvariant(q): RngUPolElt -> RngIntElt#
- QuarticG4Covariant(q): RngUPolElt -> RngUPolElt#
- QuarticG6Covariant(q): RngUPolElt -> RngUPolElt#
- QuarticHSeminvariant(q): RngUPolElt -> RngIntElt#
- QuarticPSeminvariant(q): RngUPolElt -> RngIntElt#
- QuarticQSeminvariant(q): RngUPolElt -> RngIntElt#
- QuarticRSeminvariant(q): RngUPolElt -> RngIntElt#
Compute invariants, semivariants, and covariants, as in paper [Cremona, 2001], of a given quartic polynomial \(q\). The G4 and G6 covariants are polynomials of degrees four and six respectively; the I and J invariants are integers that generate the ring of integer invariants of the polynomial and satisfy \(J^2 - 4I^3 = 27 \Delta(f)\). The names \(H\) and \(P\) have been used for essentially the same seminvariant in different papers; they are related by \(H=-P\).
- QuarticNumberOfRealRoots(q): RngUPolElt -> RngUPolElt#
Using invariant theory, compute the number of real roots of a real quartic polynomial \(q\).
- QuarticMinimise(q): RngUPolElt -> RngUPolElt, AlgMatElt#
This computes a minimal model of the quartic polynomial \(q\) over the rationals or a univariate rational function field.
Three objects are returned: the minimised quartic, the transformation matrix, and the scaling factor.
For further explanation see Chapter Models of Genus One Curves. The algorithm can be found in [Cremona et al., 2010].
- QuarticReduce(q): RngUPolElt -> RngUPolElt, AlgMatElt#
Given a quartic \(q\), the algorithm of [Cremona, 1999] is applied to find the reduced quartic and the matrix that reduced it.
- IsEquivalent(f, g): RngUPolElt, RngUPolElt -> BoolElt#
Determines if the quartics \(f\) and \(g\) are equivalent.
Selmer Groups#
First we give a short overview of the theory of Selmer groups. This enables us to fix the notation that is used in the naming of the Magma functions. For a more complete account, see [Silverman, 1986]. The actual algorithms to compute the Selmer groups are closer to the description in [Cassels, 1966].
Let \(E', E\) be elliptic curves over a number field \(K\) and let \(\phi:E' \rightarrow E\) be an isogeny. The only cases currently implemented are where \(\phi\) is a \(2\)-isogeny, i.e., an isogeny of degree \(2\), and where \(E'=E\) and \(\phi\) is multiplication by \(2\).
Let \(E'[\phi]\) be the kernel subscheme of \(\phi\). By taking Galois cohomology of the short exact sequence of schemes over \(K\),
we obtain
For the middle map, we write \(\mu:E(K)\rightarrow H^1(K,E'[\phi])\). Thus, \(E(K)/\phi(E'(K))\) injects in \(H^1(K,E'[\phi])\) and the image consists exactly of the cocycles that vanish in \(H^1(K,E')\).
As an approximation to this image, we define the \(\phi\)-Selmer group of \(E\) over \(K\) to consist of those cocycles \(H^1(K,E'[\phi])\) that vanish in all restrictions \(H^1(K_p,E')\), where \(p\) runs though all places of \(K\). It fits in the exact sequence
The main application of Selmer groups is that they provide the bound: \(\#E(K)/\phi E'(K)\leq \# S^{(\phi)}(E/K).\) If \(\phi^*:E\rightarrow E'\) is the isogeny dual to \(\phi\), then \(\phi\circ\phi^*:E\rightarrow E\) is multiplication by \(d={\rm Deg}(\phi)\). Thus, one can use the \(\phi\) and \(\phi^*\) Selmer groups to provide a bound on \(\#E(K)/dE(K)\) and thus on the Mordell–Weil rank of \(E(K)\).
Representation of \(H^1(K,E'[\phi])\):
If \(\phi\) is a \(2\)-isogeny, then \(H^1(K,E'[\phi])\sim K^*/K^{*2}\). Thus, we can represent elements by \(\delta\in K^*\). In Magma, the map \(\mu\) corresponds to a representation of the map \(E(K)\rightarrow K^*\). The map \(\mu\) also accepts just \(x\)-coordinates.
If \(\phi\) is multiplication-by-2 and \(E : y^2=f(x)\), we write \(A=K[x]/(f(x))\) then
In fact, the full set \(A^*/A^{*2}\) corresponds to \(H^1(K,E[2]\times\{\pm 1\})\).
The set \(H^1(K,E'[\phi])\) also corresponds to the set of covers \(\tau_\delta:T_\delta\rightarrow E\) over \(K\), modulo isomorphy over \(K\), that are isomorphic to \(\phi:E'\rightarrow E\) over the algebraic closure of \(K\) (see [Silverman, 1986], Theorem X.2.2). In this section, we write tor for the map \(\delta\mapsto\tau_\delta\).
- DescentMaps(phi): Map -> Map, Map#
- CasselsMap(phi): Map -> Map, Map#
Fields: SetEnum Default: { }
Given an isogeny \(\phi : E \rightarrow E_1\) of elliptic curves over a number field \(K\) (or \({\mathbb{Q}}\)), the function returns the connecting homomorphism
\[\mu : E_1(K) \rightarrow H^1(K, E[\phi]),\]and a map \(\tau\) sending an element of \(H^1(K, E[\phi])\) to the corresponding homogeneous space. Here elements of \(H^1(K, E[\phi])\) are represented as elements of \(A^*/(A^*)^2\) (as described above). The maps are actually given as maps to, and from, \(A\) (rather than \(A^*/(A^*)^2\)).
The isogeny \(\phi\) must be either a \(2\)-isogeny or multiplication–by–\(2\).
When \(\phi\) is multiplication–by–two, then the computation of \(\mu\) involves a call to
AbsoluteAlgebra. The optional parameterFieldsis passed on to that. If the fields mentioned in this set are found to be of any use, then these will be used and whatever class group and unit data stored on the fields will be used in subsequent computations.When \(\phi\) is multiplication–by–two, the second map \(\tau\) accepts all elements \(\delta \in A^*\). An element \(\delta \in A^*\) represents an element of \(H^1(K, E[2])\) if and only if \(\delta\) must have square norm. In general, \(\delta \in A^*\) represents an element of \(H^1(K,E[2]\times\{\pm 1\})\), in which case \(\tau(\delta)\) is the corresponding covering \(T_\delta\rightarrow{\bf P}^1\). (This covering is a twist of the covering \(E \rightarrow E \rightarrow {\bf P}^1\) given by \(P \mapsto 2P \mapsto x(2P)\).)
- SelmerGroup(phi): Map -> GrpAb, Map, Map, SeqEnum, SetEnum#
Hints : SetEnum Default: { } Raw : BoolElt Default: false Bound : RngIntElt Default: -1 verbose: Selmer Default: Verbose : 4
Given an isogeny \(\phi : E \rightarrow E_1\) defined over a number field \(K\), computes the associated Selmer group \(Sel(\phi) := Sel^{\phi}(E/K)\).
The Selmer group is returned as a finite abelian group \(S\), together with a map \(AtoS : A \rightarrow S\), where \(A\) is as in the introduction. This is a map only in the Magma sense; it is defined only on a finite subset of \(A\). Its “inverse” \(S \rightarrow A\) provides the mathematically meaningful injection \(S \hookrightarrow A^*/(A^*)^2\). The standard map
\[E_1(K) \rightarrow E_1(K)/\phi E(K) \rightarrow Sel(\phi)\]is given by the composition of \(\mu\) with \(AtoS\), where \(\mu : E_1(K) \rightarrow H^1(K, E[\phi])\) is the first map returned by
DescentMaps.If the optional parameter
Hintsis given, it is used as a list of \(x\)-coordinates to try first when determining local images. SupplyingHintsdoes not change the outcome, but may speed up the computation.The calculation of the Selmer group involves possibly expensive class group and unit group computations. If no such data has been precomputed,
SelmerGroupwill attempt to obtain this information unconditionally, unlessBoundis positive. This bound is then passed on to any calledClassGroup. However, if such data is already stored, it will be used and subsequent results will be conditional on whatever assumptions were made while computing this information. If conditional results are desired (for instance, assuming GRH), one should precompute class group information on the codomain ofCasselsMap(phi)prior to callingSelmerGroup(phi).If
Rawistrue, then three technical items are also returned. The first two of these, \(toVec\) and \(FB\), enable one to represent elements of the Selmer group in terms of a “factor base” \(FB\) consisting of elements of \(A\) that generate a relevant subgroup of \(A^*/(A^*)^2\). The map \(toVec\) sends an element of \(S\) to an exponent vector relative to \(FB\). The map from S to A obtained by multiplying out the results is inverse to \(AtoS\).The final returned value (when
Rawistrue) is a set ofHints(just as in the optional parameter).
- TwoSelmerGroup(E): CrvEll -> GrpAb, Map, SetEnum, Map, SeqEnum#
Hints : SetEnum Default: { } Raw : BoolElt Default: false Bound : RngIntElt Default: -1 verbose: TwoDescent Default: Verbose : 2
The \(2\)-Selmer group of an elliptic curve defined over \({\mathbb{Q}}\) or a number field. The function simply calls
SelmerGroupfor the multiplication–by–two isogeny. The given model for \(E\) should be integral. The options and return values are the same as forSelmerGroup.
- Example: selmer (ex-dcb28c)#
In this example, we determine the rank of \(y^2 = x^3+9x^2-10x+1\) by computing the \(2\)-Selmer group.
> E := EllipticCurve([0,9,0,-10,1]); > two := MultiplicationByMMap(E,2); > mu, tor := DescentMaps(two);
The hard work: computing the Selmer group.
> S, AtoS := SelmerGroup(two); > #S; 8
So the Selmer rank is \(3\). We deduce the following upper bound on the rank of \(E({\mathbb{Q}})\), taking into account any \(2\)-torsion.
> RankBound(E : Isogeny := two); 3
In fact, there are \(3\) points: \((0,1), (1,1)\) and \((2,5)\).
> g1 := E![ 0, 1 ]; > g2 := E![ 1, 1 ]; > g3 := E![ 2, 5 ];
We now test these points for linear independence. It will follow that the points generate \(E(K)/2E(K)\), which means they are independent nontorsion points in \(E(K)\) (since we know there is no \(2\)-torsion).
> IsLinearlyIndependent ([g1, g2, g3]); true
Next we compute the homogeneous space associated to the point \(g1+g2\). It must have a rational point mapping to \(g1+g2\). Note that @@ always denotes “preimage” in Magma. The algebra for
AtoSis not the same as the original cubic, so we must translate before applying the requisite map.> K := NumberField(Modulus(Domain(AtoS))); > L := NumberField(Polynomial([1,-10,9,1])); > b, m := IsIsomorphic (K, L); assert b; > theta := (Rationals()! (L.1 - m(K.1))) + Domain(AtoS).1; > H, mp := TwoCover((g1+g2)[1] - theta : E:=E); H; Hyperelliptic Curve defined by y^2 = 9*x^4 - 4*x^3 - 18*x^2 + 4*x + 13
The next command finds all \({\mathbb{Q}}\)-rational points in the preimage of the point \(g1+g2\) on \(E\). (In Magma the preimage is constructed as a scheme.)
> RationalPoints( (g1+g2) @@ mp); {@ (-1 : -2 : 1) @}
- Example: selmer2 (ex-b6ce90)#
We consider the elliptic curve \(E : y^2 = dx(x+1)(x+3)\) where \(d\) is the product of the primes less than \(50\). Since \(E\) has full \(2\)-torsion, we can carry out \(2\)-isogeny descent in three non-equivalent ways, resulting in three different rank bounds.
> P<x> := PolynomialRing(Integers()); > d := &*[ p : p in [1..50] | IsPrime(p) ]; > E := EllipticCurve(HyperellipticCurve(d*x*(x + 1)*(x + 3)));
The nontrivial \(2\)-torsion points in \(E({\mathbb{Q}})\):
> A, mp := TorsionSubgroup(E); > T := [ t : a in A | t ne E!0 where t := mp(a) ];
The corresponding 2-isogenies:
> phis := [ TwoIsogeny(t) : t in T ];
The rank bounds obtained from these isogenies:
> [ RankBound(E : Isogeny := phi) : phi in phis ]; [ 9, 5, 7 ]
We find [9, 5, 7]! Each descent gives a different rank bound. However, a full \(2\)-descent gives:
> two := MultiplicationByMMap(E,2); > RankBound(E : Isogeny := two); 1
Now doing full \(2\)-descent on the three isogenous curves, we see where the obstacle for sharp rank bounds comes from.
> OtherTwos := [ MultiplicationByMMap(Codomain(phi), 2) : phi in phis ]; > [ RankBound(Domain(two) : Isogeny := two) : two in OtherTwos ]; [ 9, 5, 7 ]
We find [9, 5, 7] again.
- Example: selmer3 (ex-fc7e9e)#
The next example is a classic one from [Kramer, 1981].
> E := EllipticCurve([0, 977, 0, 976, 0]); > #TwoTorsionSubgroup(E); 4 > RankBound(E); > ptsE := [E| [-4, 108], [4, 140]]; > IsLinearlyIndependent(ptsE); // they are non-torsion points true > // So E is really of rank 2 > d := 109; > Ed := QuadraticTwist(E, d); > Points(Ed, -976); [ (-976 : 298656 : 1), (-976 : -298656 : 1) ]
Since Ed has a nontorsion point, its rank is at least 1. We will show that its rank is exactly 1, by comparing \(2\)-descent on \(E\) and on its base change.
> _<x> := PolynomialRing(Rationals()); > K := NumberField(x^2 - d); > EK := BaseChange(E, K); > Ngens(TwoSelmerGroup(EK)); 5
Note that the Selmer group contains the \(2\)-torsion subgroup, so this tells us that the rank of \(E(K)\) is at most 3, hence it is exactly 3 because we know 3 independent points. The rank of \(E_d({\mathbb{Q}})\) must equal the rank of \(E(K)\) minus the rank of \(E(Q)\), therefore \(E_d({\mathbb{Q}})\) has rank \(1\). This is smaller than the bound of \(3\) we get from a \(2\)-descent on \(E_d\) alone:
> Ngens(TwoSelmerGroup(Ed)); 5
We may confirm the result as follows (this performs higher descents).
> RankBound(Ed); 1 true
- Example: selmer4 (ex-63feb8)#
Here we give some examples of using
TwoDescent,TwoSelmerGroup, andTwoCover.> E := EllipticCurve( [ 0, 0, 1, -7, 6] ); // rank 3 curve > T := TwoDescent(E); > T[6]; Hyperelliptic Curve defined by y^2 = 3*x^4 - 10*x^3 + 10*x + 1 over Rational Field > G, m := TwoSelmerGroup(E); > G.1 @@ m; theta^2 - 12*theta + 33 > Parent($1); // Modulus has y^2 = modulus isomorphic to E Univariate Quotient Polynomial Algebra in theta over Rational Field with modulus theta^3 - 112*theta + 400 > TwoCover( (G.1 + G.2) @@ m); Hyperelliptic Curve defined by y^2 = 3*x^4 - 10*x^3 + 10*x + 1 over Rational Field > TwoCover( Domain(m) ! 1 ); Hyperelliptic Curve defined by y^2 = 2*x^3 - 12*x^2 - 32*x + 196 over Rational Field
The Cassels-Tate Pairing#
The Tate–Shafarevich group of any elliptic curve \(E\) admits an alternating bilinear form on \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)\) with values in \({\mathbb{Q}}/{\mathbb{Z}}\), known as the Cassels-Tate pairing. The key property is that if \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)\) is finite (as conjectured), the Cassels-Tate pairing is non-degenerate. When restricted to the \(2\)-torsion subgroup, one obtains a non-degenerate alternating bilinear form on \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[2]/2\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[4]\), or equivalently on \(Sel^2(E)\) modulo the image of \(Sel^4(E)\), with values in \({\mathbb{Z}}/2{\mathbb{Z}}\).
This means that if \(C\) and \(D\) are \(2\)-coverings of \(E\) and the pairing \((C,D)\) has value \(1\), then both \(C\) and \(D\) represent elements of order \(2\) in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)\), and moreover there are no locally solvable \(4\)-coverings of \(E\) lying above them (in other words, FourDescent(C) and FourDescent(D) would both return an empty sequence). In this sense the Cassels-Tate pairing provides the same information as \(4\)-descent, but is much easier to compute.
Similarly, for an element in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[4]/2\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[8]\), the values of the pairing between this element and all elements in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[2]/2\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)[4]\) provides the same information as performing an \(8\)-descent on \(C\). These elements may be represented by a \(4\)-covering \(C \rightarrow E\) and a \(2\)-covering \(D \rightarrow E\) respectively.
In Magma the pairing between \(2\)-coverings is implemented over \({\mathbb{Q}}\) number fields, and rational function fields \(F(t)\) for \(F\) finite of odd characteristic. The pairing between a \(2\)-covering and a \(4\)-covering is implemented over \({\mathbb{Q}}\). A new, very efficient implementation of pairing on \(2\)-coverings over \({\mathbb{Q}}\) was released in Magma V2.15.
The algorithms are due to Steve Donnelly and will be described in a forthcoming paper, a draft of which is available on request. For the pairing between \(2\)-coverings, the only nontrivial computation is to solve a conic over the base field of \(E\), so over \({\mathbb{Q}}\) the pairing is easy to compute. For the pairing between \(2\)- and \(4\)-coverings, the key step is to solve a conic defined over a degree \(4\) field; this is also the case for performing \(8\)-descent on the \(4\)-covering, however the advantage here is that there is considerable freedom to choose the field to have small discriminant. Consequently it is more efficient to use the pairing than to apply EightDescent.
To have information about the computation printed while it is running, one may use SetVerbose("CasselsTate",n); with \(n = 1\) (for fairly concise information) or \(n = 2\).
- CasselsTatePairing(C, D): CrvHyp, CrvHyp -> RngIntElt#
verbose: CasselsTate Default: Verbose : 2
This evaluates the Cassels-Tate pairing on \(2\)-coverings of an elliptic curve over \({\mathbb{Q}}\), a number field, or a function field \(F(t)\) where \(F\) is a finite field of odd characteristic. The given curves \(C\) and \(D\) must be hyperelliptic curves of the form \(y^2 = q(x)\) where \(q(x)\) has degree \(4\), and they must admit \(2\)-covering maps to the same elliptic curve. In addition, they must both be locally solvable over all completions of their base field (otherwise the pairing is not defined).
Typically the input curves \(C\) and \(D\) would be obtained using
TwoDescent(E).The pairing takes values in \({\mathbb{Z}}/2{\mathbb{Z}}\) (returned as elements of \({\mathbb{Z}}\)).
- CasselsTatePairing(C, D): Crv, CrvHyp -> RngIntElt#
verbose: CasselsTate Default: Verbose : 2
This evaluates the Cassels-Tate pairing between a \(4\)-covering \(C\) and a \(2\)-covering \(D\) of the same elliptic curve over \({\mathbb{Q}}\). The arguments must be curves over \({\mathbb{Q}}\), with \(C\) an intersection of two quadrics in \({\mathbb{P}}^3\) (for instance, a curve obtained from
FourDescent), and \(D\) a hyperelliptic curve of the form \(y^2 = q(x)\). In addition, they must both be locally solvable over all completions of \({\mathbb{Q}}\) (otherwise the pairing is not defined).The pairing takes values in \({\mathbb{Z}}/2{\mathbb{Z}}\) (returned as elements of \({\mathbb{Z}}\)).
- Example: Cassels Tate Example (ex-a17545)#
We consider the first elliptic curve with trivial \(2\)-torsion and nontrivial Tate–Shafarevich group.
> E := EllipticCurve("571a1"); E; Elliptic Curve defined by y^2 + y = x^3 - x^2 - 929*x - 10595 over Rational Field > #TorsionSubgroup(E); 1 > time covers := TwoDescent(E); covers; Time: 0.270 [ Hyperelliptic Curve defined by y^2 = -11*x^4 - 68*x^3 - 52*x^2 + 164*x - 64 over Rational Field, Hyperelliptic Curve defined by y^2 = -19*x^4 + 112*x^3 - 142*x^2 - 68*x - 7 over Rational Field, Hyperelliptic Curve defined by y^2 = -4*x^4 + 60*x^3 - 232*x^2 + 52*x - 3 over Rational Field ] > time CasselsTatePairing(covers[1], covers[2]); 1 Time: 0.130
This proves that these two coverings both represent nontrivial elements in the Tate–Shafarevich group; in fact our computations show that the \(2\)-primary part of \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt{}(E)\) is precisely \({\mathbb{Z}}/2 \times {\mathbb{Z}}/2\). We could have reached the same conclusion using \(4\)-descent:
> time FourDescent(covers[1]); [] Time: 0.460
Four-Descent#
This section describes an implementation of the algorithm for higher descent given in a 1996 paper [Merriman et al., 1996] by Merriman, Siksek and Smart, for elliptic curves over \({\mathbb{Q}}\). Four-descent is performed as a higher descent on a given two-cover, that is a hyperelliptic curve defined by a polynomial of degree four, as returned by TwoDescent. (The trivial case where the quartic has a rational root is excluded: such a quartic can be transformed to an elliptic curve by a linear transformation, and four-descent then becomes standard two-descent.)
Note: for curves over number fields, the same algorithm is partly implemented by the function TwoCoverDescent. However in that case we lack techniques for reducing the coverings, so this can not be used to find points but only to bound the rank.
A four-covering \(F\) is a pair of symmetric \(4 \times 4\) matrices, defining an intersection of two quadrics in \(P^3\). Associated to \(F\) is an elliptic curve \(E\); there is a rational map from \(F\) to \(E\) of degree \(16\). The four-descent process takes a two-covering curve \(C\) (something of the shape \(y^2 = f(x)\) with \(f\) quartic, and possessing points over \({\mathbb{Q}}_p\) for all \(p\)), and returns a set of four-coverings that arise from \(C\).
In particular, if \(C\) represents an element of order two in the Tate–Shafarevich group of \(E\), then the four-descent process will return the empty set. If \(C\) represents an element of the Mordell–Weil group, at least one of the four-coverings arising from \(C\) will have a rational point — all of them will do so if the Tate–Shafarevich group of \(E\) is trivial — and once found this point can be lifted to a point on \(E\).
- FourDescent(C : parameters): CrvHyp -> [Crv]#
- FourDescent(f : parameters): RngUPolElt -> [Crv]#
- FourDescent(S : parameters): SeqEnum -> [Crv]#
- FourDescent(C : parameters): ModelG1 -> [Crv]#
RemoveTorsion : BoolElt Default: false IgnoreRealSolubility: BoolElt Default: false RemoveGensEC : { PtEll} Default: { } RemoveGensHC : { PtHyp} Default: { } verbose : FourDescent Default: Verbose : 3 verbose : LocalQuartic Default: Verbose : 2 verbose : MinimiseFD Default: Verbose : 2 verbose : QISearch Default: Verbose : 1 verbose : ReduceFD Default: Verbose : 2 verbose : QuotientFD Default: Verbose : 2Performs a four-descent on the curve \(y^2 = f(x)\), where \(f\) is a quartic. Returns a set of four-coverings of size \(2^{s-1}\), where \(s\) is the Selmer \(2\)-rank of the curve. If the verbose level of the main function is set to 3, then the auxiliary verbose levels are all set to at least 1. If
RemoveTorsionistrue, the generators of the torsion subgroup are factored out from the set. The optional argumentRemoveGensHCperforms a quotient by the images of given points that are on the input quartic toFourDescent. The optional argumentRemoveGensECforms a quotient by the images of given points; these can be on any elliptic curve that is isomorphic to theAssociatedEllipticCurveof the quartic (though all given points must be on the same elliptic curve). These options can be used together. It can be non-trivial to remove torsion and generators, as points on the elliptic curve need not pull-back to the given \(y^2 = f(x)\) curve. The algorithm used exploits various primes of good reduction, and attempts to determine whether the images under the \(\mu_p\) are the same. This in turn can be tricky, due to the Cassels kernel, and even more so when there are extra automorphisms (that is, when \(j=0,1728\) over \({\bf F}_p)\).
- Example: simplefourdesc (ex-acf772)#
This example shows that a well-known curve has rank \(0\) and that the \(2\)-torsion subgroup of its Tate–Shafarevich group is isomorphic to \(({\mathbb{Z}}/2{\mathbb{Z}})^2\).
> D := CremonaDatabase(); > E := EllipticCurve(D, 571, 1, 1); > time td := TwoDescent(E); Time: 2.500 > #td; 3
There are three \(2\)-covers, so the \(2\)-Selmer group has order four (since
TwoDescentelides the trivial element).> time [ FourDescent(t) : t in td ]; [ [], [], [] ] Time: 3.290
So none of the two-covers have four-covers lying over them; hence they all represent elements of IIIwidth9.5pt depth0pt height0.3pt, and the Mordell–Weil rank must be zero.
- AssociatedEllipticCurve(qi): Crv -> CrvEll, Map#
- AssociatedHyperellipticCurve(qi): Crv -> CrvHyp, Map#
E: CrvEll Default:
Given an intersection of quadrics \(qi\), return the associated elliptic and hyperelliptic curves, respectively, together with maps to them.
If an elliptic curve is given as \(E\), this must be isomorphic to the Jacobian of the curve \(qi\), and then the map returned will be a map to the given \(E\).
- QuadricIntersection(F): [AlgMatElt] -> Crv#
- QuadricIntersection(P, F): Prj, [AlgMatElt] -> Crv#
Given a pair of symmetric \(4\times 4\) matrices \(F\), this function returns the associated quadric intersection in \(P = P^3\).
- QuadricIntersection(E): CrvEll -> Crv, MapIsoSch#
- QuadricIntersection(C): CrvHyp -> Crv, MapIsoSch#
Given an elliptic curve \(E\) or a hyperelliptic curve \(C\), write it as an intersection of quadrics. The inverse map for the hyperelliptic curve has problems due to difficulties with weighted projective space.
- IsQuadricIntersection(C): Crv -> BoolElt, [AlgMatElt]#
Given a curve \(C\), determines if \(C\) is in \(P^3\) and has two defining equations, both of which involve only quadrics. In the case where \(C\) is a quadric intersection, the associated pair of matrices are also returned.
- PointsQI(C, B : parameters): Crv, RngIntElt -> [Pt]#
OnlyOne : BoolElt Default: false ExactBound: BoolElt Default: false verbose : QISearch Default: Verbose : 1
Given a quadric intersection \(C\), this function searches, by a reasonably efficient method due to Elkies [Elkies, n.d.], for a point on \(C\) of na”̈10ve height up to \(B\); the asymptotic running time is \(O(B^{2/3})\).
If
OnlyOneis set totrue, the search stops as soon as it finds one point; however, the algorithm is \(p\)-adic and there is no guarantee that points with small coordinates in \({\mathbb{Z}}\) will be found first. IfExactBoundis set totrue, then points that are found with height larger than \(B\) will be ignored.
- TwoCoverPullback(H, pt): CrvHyp[FldRat], PtEll[FldRat] -> [PtHyp]#
- TwoCoverPullback(f, pt): RngUPolElt[FldRat], PtEll[FldRat] -> [PtHyp]#
Given a two-covering of a rational elliptic curve (as either a hyperelliptic curve or a quartic) and a point on the elliptic curve, compute the pre-images on the two-covering. This is faster than using the generic machinery.
- FourCoverPullback(C, pt): Crv[FldRat], PtEll[FldRat] -> [Pt]#
- FourCoverPullback(C, pt): Crv[FldRat], PtHyp[FldRat] -> [Pt]#
Given a four-covering of a rational elliptic curve as an intersection of quadrics and a point either on the associated elliptic curve or the associated hyperelliptic curve, this function computes the pre-images on the covering. This is faster than using the generic machinery.
- Example: fourdescent (ex-532591)#
This example exhibits a four-descent computation, and manipulation of points once they have been found, by mapping from the curve to its two- and four-covers.
> P<x> := PolynomialRing(Integers()); > E := EllipticCurve([0, -1, 0, 203, -93]); > f := P!Reverse([-7, 12, 20, -120, 172]); > f; -7*x^4 + 12*x^3 + 20*x^2 - 120*x + 172
The quartic given was obtained with
mwrank; the two-descent routine could have been used instead, although it provides a different (but equivalent) quartic.> time S := FourDescent(f); Time: 4.280 > #S; 1
The single cover indicates that the curve \(E\) has Selmer rank \(1\), though this was already known from the calculation that constructed \(f\).
> _,m := AssociatedEllipticCurve(S[1] : E:=E ); > pts := PointsQI(S[1], 10^4); > pts; [ (-5/3 : 13/3 : -34/3 : 1) ]
We now map this point back to \(E\).
> m(pts[1]); (2346223045599488598/1033322524668523441 : 20326609223460937753264735467/1050397899358266605692672489 : 1) > Height($1); 44.19679596739622477261983370
Eight-Descent#
One may perform \(8\)-descent (ie a further \(2\)-descent) on curves of the kind produced by a \(4\)-descent on an elliptic curve \(E\) over \({\mathbb{Q}}\). These are nonsingular intersections of two quadrics in \({\mathbb{P}}^3\) that are locally soluble. The \(8\)-descent determines whether such a curve has any \(2\)-coverings (in the sense of \(2\)-descent) that are locally soluble everywhere.
The routine can therefore be used to prove, in many cases, that a given \(4\)-covering of \(E\) is in fact an element of order \(4\) in the Tate–Shafarevich group of \(E\). It can also be used to find \(8\)-coverings of \(E\), and to verify these are elements of the \(8\)-Selmer group.
The \(8\)-coverings are given as genus one normal curves of degree \(8\) in \({\mathbb{P}}^8\). They are minimised and reduced, so are useful in searching for points on \(E\).
The algorithm and implementation (from Magma 2.17) are due to Tom Fisher; this implementation partly incorporates and partly replaces an earlier one by Sebastian Stamminger.
- EightDescent(C : parameters): Crv -> [ Crv ], [ MapSch ]#
BadPrimesHypothesis : BoolElt Default: false DontTestLocalSolvabilityAt: { RngIntElt} Default: { } StopWhenFoundPoint : BoolElt Default: false verbose : EightDescent Default: Verbose : 4For a curve \(C\) obtained from
FourDescenton some elliptic curve \(E\) over \({\mathbb{Q}}\), this performs a further \(2\)-descent on \(C\). It returns a sequence of curves \(D\), together with a sequence containing maps \(D \rightarrow C\) from each of these curves to \(C\). The curves returned are precisely the \(8\)-descendants of \(E\) that lie above \(C\) and are locally soluble at all places.When the optional argument
StopWhenFoundPointis set totrue, the computation will stop if it happens to find a rational point on \(C\), and immediately return the point instead of continuing to computing the \(8\)-coverings.In some cases local solubility testing (at large primes which may arise due to choices made in the algorithm) can be time-consuming. Testing at specified primes may be skipped by setting the optional argument
DontTestLocalSolvabilityAtto the desired set of prime integers, or by settingBadPrimesHypothesisto be true. In that case, certain primes are omitted from the set of bad primes (namely those primes at which the intersection of \(C\) with an auxiliary third quadric has bad reduction, and which are not bad primes for any other reason).The algorithm involves class group and unit computations in a number field of degree \(4\) (and sometimes also \(8\)). It is recommended to set the bounds to be used in all such computations before calling EightDescent, via
SetClassGroupBounds.Verbose output: For a readable summary of the computation, set the verbose level to \(1\) by entering
SetVerbose("EightDescent",1).For full information about all the time-consuming steps in the process, set the verbose level to 3. For additional information about solving the conic, set the verbose level for"Conic"to \(1\).
Three-Descent and Five-Descent#
Three descent is implemented for elliptic curves over the rationals. This involves computing the \(3\)-Selmer group of the curve, and then representing the elements as plane cubics. The functions related to \(5\)-descent take a very similar form to those for \(3\)-descent, although they are not listed in the handbook.
There is also a separate implementation of “descent by three isogenies”, for elliptic curves over the rationals which admit a \({\mathbb{Q}}\)-rational isogeny of degree \(3\).
The main application of full three-descent is in studying elements of order \(3\) in Tate–Shafarevich groups. For the problem of determining the Mordell–Weil group, three-descent has no advantage over four descent except in special cases: the cost is greater (three-descent requires computing the class group and \(S\)-units in a degree \(8\) number field, compared with degree \(4\) for four-descent), and the reward is smaller (a point on a \(3\)-coverings has height \(1/6\) as large as its image on the elliptic curve, while with four-descent the ratio is \(1/8\)). However three-descent can be useful when there are elements of order \(4\) in the Tate–Shafarevich group, which four-descent cannot deal with.
On the other hand, for a curve with a \({\mathbb{Q}}\)-rational isogeny of degree \(3\), descent by 3-isogenies is likely to be the most efficient way to bound the Mordell–Weil rank, because it only requires class group and \(S\)-unit computations in quadratic fields.
There are two steps to the \(3\)-descent process: firstly, computing the \(3\)-Selmer group as a subgroup of \(H^1({\mathbb{Q}}, E[3])\) (explicitly, as a subgroup of \(A^{\times}/{A^{\times}}^3\) for a suitable algebra \(A\)), and secondly, expressing the elements as genus one curves with covering maps to \(E\). The elements of the \(3\)-Selmer group are given as plane cubics, and the process of obtaining these cubics is far from trivial. (Note that in general, an element of \(H^1({\mathbb{Q}}, E[3])\) can only be given as a curve of degree \(9\) rather than degree \(3\)). The main commands are ThreeSelmerGroup(E), which performs the first step, and ThreeDescent(E), which performs both steps together, while ThreeDescentCubic performs the second step for a given element of \(3\)-Selmer group.
The algorithm for the first step is presented in [Schaefer and Stoll, 2004], while the theory and algorithms for the second step are developed in the forthcoming series of papers [Cremona et al., 2008], [Cremona et al., 2009], [Cremona et al., n.d.]. The bulk of the code was written by Michael Stoll and Tom Fisher (however, responsibility for the final version rests with Steve Donnelly).
The following verbose flags provide information about various stages of the three descent process: Selmer, ThreeDescent, CSAMaximalOrder, Minimise and Reduce. For instance, to see what ThreeSelmerGroup is doing while it is running, first enter SetVerbose("Selmer",2);. The verbose levels range from \(0\) to \(3\).
- ThreeDescent(E : parameters): CrvEll -> [ Crv ], List#
Method : MonStgElt Default: "HessePencil" verbose: Selmer Default: Verbose : 3 verbose: ThreeDescent Default: Verbose : 3
Given an elliptic curve over the rationals, this function returns the elements of the \(3\)-Selmer group as projective plane cubic curves \(C\), together with covering maps \(C \rightarrow E\). Two objects are returned: a sequence containing one curve for each inverse pair of nontrivial elements in the \(3\)-Selmer group, and a corresponding list of maps from these curves to \(E\). (Note that a pair of inverse elements in the \(3\)-Selmer group both correspond to the same cubic curve \(C\), and their covering maps \(C \rightarrow E\) differ by composition with the negation map \(E \rightarrow E\).)
The function is equivalent to calling
ThreeSelmerGroup(E), and then callingThreeDescentCubicon each of the Selmer elements.For more information see the description of
ThreeDescentCubicbelow.
- Example: Selmer Famous Example (ex-e7c713)#
Here is Selmer’s famous example \(3x^3+4y^3+5z^3 = 0\), which is an element of order \(3\) in the Tate–Shafarevich group of its Jacobian, the elliptic curve \(x^3 + y^3 + 60z^3 = 0\).
> Pr2<x,y,z> := ProjectiveSpace(Rationals(),2); > J := x^3 + y^3 + 60*z^3; > E := MinimalModel(EllipticCurve(Curve(Pr2,J))); > cubics, mapstoE := ThreeDescent(E); > cubics; [ Curve over Rational Field defined by 2*x^3 + 30*y^3 - z^3, Curve over Rational Field defined by x^3 + 5*y^3 - 12*z^3, Curve over Rational Field defined by 6*x^3 + 5*y^3 - 2*z^3, Curve over Rational Field defined by 3*x^3 + 5*y^3 - 4*z^3 ]
The \(3\)-Selmer group of \(E\) is isomorphic to \({\mathbb{Z}}/{3{\mathbb{Z}}} \oplus {\mathbb{Z}}/{3{\mathbb{Z}}}\), and one element for each (nontrivial) inverse pair is returned. (Note: \(3x^3+4y^3+5z^3\) will not necessarily appear; due to random choices in the program, an equivalent model may appear instead.)
The covering maps from these curves to \(E\) have degree \(9\), and are given by forms of degree \(9\) in \(x,y,z\). For example, the map from the first curve \(2x^3 - 3y^3 + 10z^3\) to \(E\) is given by:
> DefiningEquations(mapstoE[1]); [ -1377495072000*x*y^7*z + 4591650240000*x*y^4*z^4 - 15305500800000*x*y*z^7, 24794911296000*y^9 - 123974556480000*y^6*z^3 - 413248521600000*y^3*z^6 + 918330048000000*z^9, -4251528000*x^3*y^3*z^3 ]
Since \(E\) has trivial Mordell–Weil group, we should not find any rational points on these curves! (In fact they are all nontrivial in the Tate–Shafarevich group.) Here we search for rational points on the first cubic, up to height roughly \(10^4\):
> time PointSearch( cubics[1], 10^4); [] Time: 0.490
An extended example, concerning “visible” \(3\)-torsion in a Tate–Shafarevich group, can be found at the end of Chapter Models of Genus One Curves.
- ThreeSelmerGroup(E : parameters): CrvEll -> GrpAb, Map#
ThreeTorsPts: Tup Default: verbose : Selmer Default: Verbose : 3
Given an elliptic curve \(E\) over the rationals, this function returns the \(3\)-Selmer group as an abelian group, together with a map to the natural affine algebra.
When the optional parameter
ThreeTorsPtsis given, this determines the number fields used in the computation, and also the affine algebra.Typically much of the computation time is spent on class group and unit group computations. In many instances it will not be feasible to do these calculations rigorously – in this situation the user must request a heuristic class group computation. The recommended way to do this is (in advance):
SetClassGroupBounds("GRH"). See Section Setting the Class Group Bounds for details. An alternative way is to precompute class groups (and possibly units) for the fields of theThreeTorsPts.The algorithm is described in [Schaefer and Stoll, 2004].
- ThreeDescentCubic(E, α : parameters): CrvEll, Tup -> Crv, MapSch#
ThreeTorsPts: Tup Default: Method : MonStgElt Default: "HessePencil" verbose : ThreeDescent Default: Verbose : 3
Given an elliptic curve \(E\) over the rationals, and an element \(\alpha\) in the 3-Selmer group of \(E\), the function returns a projective plane cubic curve \(C\), together with a map of schemes \(C \rightarrow E\). The cubic is a principal homogeneous space for \(E\), and the covering map \(C \rightarrow E\) represents the same Selmer element as either \(\alpha\) or \(1/\alpha\) (and \(\alpha\) can be recovered, up to inverse, by calling
ThreeSelmerElementof the cubic).The \(3\)-Selmer element \(\alpha\) is given as an element of the algebra associated to the \(3\)-Selmer group (the algebra is the codomain of the map returned by
ThreeSelmerGroup, as inS3, S3toA := ThreeSelmerGroup(E)). In this situation, where \(\alpha\) isS3toA(s)for somes, there is no need to specify the optional parameterThreeTorsPts.The algorithm comes from the series of papers cited in the introduction. There are three alternative ways to perform the final step of computing a ternary cubic. All three ways are implemented, and the optional parameter
Methodmay be “HessePencil” (default), “FlexAlgebra” or “SegreEmbedding”. However, the choice ofMethodis not expected to make a big difference to the running time.The optional parameter
ThreeTorsPtsis a tuple containing one representative from each Galois orbit of \(E[3] \setminus O\). Its purpose is to fix an embedding of the \(3\)-Selmer group in \(A^{\times}/{A^{\times}}^3\) (otherwise there is ambiguity when the fields involved have nontrivial automorphisms, or occur more than once). WhenThreeTorsPtsis not specified,ThreeTorsionPoints(E)is called (its value is stored internally and used throughout the Magma session).
- ThreeIsogenyDescent(E : parameters): CrvEll -> [ Crv ], List, [ Crv ], List, MapSch#
Isog : MapSch Default: verbose: Selmer Default: Verbose : 3 verbose: ThreeDescent Default: Verbose : 3
Given an elliptic curve \(E\) over \({\mathbb{Q}}\) that admits a \({\mathbb{Q}}\)-rational isogeny \(E \rightarrow E_1\) of degree \(3\), the function performs “descent by 3-isogenies” on \(E\). This involves computing the Selmer groups attached to the isogeny and its dual, and representing the elements of both Selmer groups as plane cubics, with covering maps of degree \(3\) to \(E_1\) or \(E\) respectively. One cubic is given for each nontrivial pair of inverse Selmer elements, and one covering map is given for each cubic (the other covering map, which can be obtained by composing with the negation map on the elliptic curve, would correspond to the inverse Selmer element.)
There are five returned values, in the following order: a list of curves for \(Sel(E \rightarrow E_1)\), a corresponding list of covering maps to \(E_1\), a list of curves for the dual isogeny Selmer group \(Sel(E_1 \rightarrow E)\), a corresponding list of covering maps to \(E\), and finally the isogeny \(E \rightarrow E_1\).
This function works simply by calling
ThreeIsogenySelmerGroups(E), and then callingThreeIsogenyDescentCubicfor each Selmer element.The isogeny \(E \rightarrow E_1\) may be passed in as
Isog. IfIsogis not specified, and \(E\) admits more than one such isogeny, then this is chosen at random.
- ThreeIsogenySelmerGroups(E : parameters): CrvEll -> GrpAb, Map, GrpAb, Map, MapSch#
Isog : MapSch Default: verbose: Selmer Default: Verbose : 3
Given an elliptic curve \(E\) over the rationals that admits a \({\mathbb{Q}}\)-rational isogeny \(E \rightarrow E_1\) of degree \(3\), the function computes the Selmer groups associated to the isogeny, and to its dual isogeny \(E_1 \rightarrow E\). The Selmer groups are returned as abstract groups, together with maps to the relevant algebra. There are five returned values, in the following order: the group, and the map, for \(E \rightarrow E_1\), the group, and the map, for \(E_1 \rightarrow E\), and finally the isogeny \(E \rightarrow E_1\).
A bound for the rank of \(E({\mathbb{Q}})\) can be deduced, by taking the sum of the ranks of the Selmer groups for the two isogenies, and subtracting \(1\) if the kernel of one of the isogenies consists of rational points.
The isogeny \(E \rightarrow E_1\) may be passed in as
Isog. IfIsogis not specified, and \(E\) admits more than one such isogeny, then this is chosen at random.The algebra in which the Selmer group of a particular isogeny is exhibited is the etale algebra corresponding to the nontrivial points in the kernel of the dual isogeny; it is either a quadratic field, or a Cartesian product of two copies of \({\mathbb{Q}}\).
- ThreeIsogenyDescentCubic(φ, α): MapSch, Any -> Crv, MapSch#
verbose: ThreeDescent Default: Verbose : 3
Given an isogeny \(\phi\) of degree \(3\) between elliptic curves over \({\mathbb{Q}}\), and any element \(\alpha\) of \(H^1({\mathbb{Q}}, E[\phi])\), this function returns a plane cubic curve \(C\) representing \(\alpha\), together with a covering map \(C \rightarrow E\) of degree \(3\).
The element \(\alpha\) is given as an element in the algebra \(A\) associated to the Selmer group of \(\phi\); the algebra can be obtained from
ThreeIsogenySelmerGroups. \(H^1({\mathbb{Q}}, E[\phi])\) is represented as the subgroup of \(A^{\times}/(A^{\times})^3\) consisting of elements whose norm is a cube.
- ThreeDescentByIsogeny(E): CrvEll -> [ Crv ], [ Map ]#
verbose: Selmer Default: Verbose : 3
This performs a full \(3\)-descent, returning models for the nontrivial inverse pairs in the \(3\)-Selmer group and maps to \(E\) making them into \(3\)-coverings. The only difference with
ThreeDescentis that the computation is by first and second \(3\)-isogeny descents. This restricts the number fields used to cubic extensions, rather than the sextic fields which may be needed for the genericThreeDescentroutine. The advantage is noticeable for larger examples.
- Example: Three Descent By Isogeny (ex-a782ba)#
> E := EllipticCurve([0,0,0,0,131241]); > G,m := TorsionSubgroup(E); > #G; 1 > Rank(E); 2 > S1,_,S2 := ThreeIsogenyDescent(E); > #S1,#S2; 0 4
This shows that there is nontrivial \(3\)-torsion in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt\) on some isogenous curve. Without computing the full \(3\)-Selmer group of \(E\) it is impossible to tell if there is any nontrivial \(3\)-torsion in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E/{\mathbb{Q}}\)).
> time Sel3 := ThreeDescentByIsogeny(E); Time: 5.280
This shows that \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E/{\mathbb{Q}})[3] = 0\) (since we know the rank is \(2\)). Alternatively one could get the same by calling
ThreeDescent. This requires computing the class group and unit group information in the sextic field shown below.> E3reps := ThreeTorsionPoints(E); > Parent(E3reps[2,1]); Number Field with defining polynomial x^6 + 14174028 over the Rational Field > SetClassGroupBounds("GRH"); > time Sel3 := ThreeDescent(E); Time: 14.700
- Jacobian(C): RngMPolElt -> CrvEll#
Given the equation of a nonsingular projective plane cubic curve \(C\) over the rationals, this function returns the Jacobian of \(C\) as an elliptic curve.
- ThreeSelmerElement(E, C): CrvEll, RngMPolElt -> Tup#
- ThreeSelmerElement(E, C): CrvEll, Crv -> Tup#
- ThreeSelmerElement(C): RngMPolElt -> Tup#
- ThreeSelmerElement(C): Crv -> Tup#
Given an elliptic curve \(E\) over the rationals, and a plane cubic \(C\) with the same invariants as \(E\) (for instance, with \(E\) equal to
Jacobian(C)) the function returns an element \(\alpha\) in the algebra \(A\) associated to the \(3\)-Selmer group of \(E\). This \(\alpha\) represents the same element of \(H^1({\mathbb{Q}}, E[3])\) that is represented by a covering \(C \rightarrow E\) that takes the flex points of \(C\) to \(O\). Note that \(\alpha\) is only determined up to inverse in \(H^1({\mathbb{Q}}, E[3])\).In particular, if we have computed
S3, S3toA := ThreeSelmerGroup(E), and if \(C\) is an everywhere locally soluble covering corresponding to the elementsinS3, then \(\alpha\) equals eitherS3toA(s)orS3toA(-s)in \(A^{\times}/(A^{\times})^3\).
- AddCubics(cubic1, cubic2 : parameters): RngMPolElt, RngMPolElt -> RngMPolElt#
E : CrvEll Default: ReturnBoth: BoolElt Default: false
Given equations of two plane cubics over the rationals with the same invariants (in other words, they are homogeneous spaces for the same elliptic curve \(E\), which is their Jacobian, over the rationals), the function computes the sum of the corresponding elements of \(H^1({\mathbb{Q}},E[3])\). The sum is returned as another plane cubic, if possible (and otherwise an error results).
An element of \(H^1({\mathbb{Q}},E[3])\) may be expressed as a plane cubic when it has index \(3\), equivalently when the so-called “obstruction” is trivial. This is always the case for elements that are everywhere locally soluble. In particular, the function will always succeed when the two given cubics are everywhere locally soluble (in other words, when they belong to the \(3\)-Selmer group). The computation is done by converting the cubics to elements of \(H^1({\mathbb{Q}},E[3])\) as given by
ThreeSelmerElement, adding the cocycles, and then converting the result to a cubic.Note that a cubic only determines an element of \(H^1({\mathbb{Q}},E[3])\) up to taking inverse, so the sum is not well defined; if the function is called with
ReturnBoth := true, it returns both of the possible cubics.
- ThreeTorsionType(E): CrvEll -> MonStgElt#
For an elliptic curve \(E\) over the rationals, this function classifies the Galois action on \(E[3]\). The possibilities are “Generic”, “2Sylow”, “Dihedral”, “Generic3Isogeny”, “Z/3Z-nonsplit”, “mu3-nonsplit”, “Diagonal” and “mu3+Z/3Z”.
- ThreeTorsionPoints(E : parameters): CrvEll -> Tup#
OptimisedRep: BoolElt Default: true
For an elliptic curve \(E\) over the rationals, this function returns a tuple containing one representative point from each set of Galois conjugates in \(E[3] \setminus O\).
Each point belongs to a point set \(E(L)\), where \(L\) is the field generated by the coordinates of that point.
If
OptimisedRepis set tofalse, then optimised representations of the fields will not be computed, in general.
- ThreeTorsionMatrices(E, C): CrvEll, RngMPolElt -> Tup#
Given an elliptic curve \(E\) over the rationals, and a plane cubic with the same invariants as \(E\) (in other words, a principal homogeneous space for \(E\) of index \(3\)), the function returns a tuple of matrices. The matrices \(M_i\) correspond to the points \(T_i\) in
ThreeTorsionPoints(E), and have the corresponding base fields. Each matrix describes the action-by-translation on \(C\) of the corresponding point: the action of \(P_i\) on \(C\) is the restriction to \(C\) of the automorphism of the ambient projective space \({\mathbb{P}}^2\) given by the image of \(M_i\) in \(PGL_3\).Note that only the images in \(PGL_3\) of the matrices are well-determined.
Six and Twelve Descent#
If a \(3\)-descent has been performed, the results can be used in conjunction with a \(2\)-descent or a \(4\)-descent to obtain coverings of degree \(6\) or \(12\) respectively. These “combined” coverings can be useful for finding Mordell–Weil generators of large height on the underlying elliptic curve.
The coverings are given as genus one normal curves (of degree \(6\) in \({\mathbb{P}}^5\), and of degree \(12\) in \({\mathbb{P}}^11\), respectively).
The algorithms are described in [Fisher, 2008].
- SixDescent(C2, C3): CrvHyp, Crv -> Crv, MapSch#
- SixDescent(model2, model3): ModelG1, ModelG1 -> Crv, MapSch#
Given a \(2\)-covering and a \(3\)-covering of an elliptic curve \(E\) (either as curves or as genus one models), this returns the \(6\)-covering that represents their sum in the \(6\)-Selmer group. The covering map \(C6 \rightarrow C3\) is also returned.
- TwelveDescent(C3, C4): Crv, Crv -> SeqEnum, MapSch#
- TwelveDescent(model3, model4): ModelG1, ModelG1 -> SeqEnum, MapSch#
Given a \(3\)-covering and a \(4\)-covering of an elliptic curve \(E\) (either as curves or as genus one models), this returns the two \(12\)-coverings that represent their sum and difference in the \(12\)-Selmer group. The covering maps to \(C12 \rightarrow C4\) are also returned.
Nine-Descent#
A nine-descent is performed on an everywhere locally solvable plane cubic curve. The cubic represents a class in the \(3\)-Selmer group of its Jacobian (up to sign). A nine-descent computes the fibre above this class under the map from the \(9\)-Selmer group to the \(3\)-Selmer group induced by multiplication by \(3\). This fibre is the set of everywhere locally solvable \(3\)-coverings of the cubic. These coverings are given as intersections of 27 quadrics in \({\mathbb{P}}^8\). As with four-descents the terminology “nine-descent” is slightly incorrect, as Magma performs a second \(3\)-descent on a specific \(3\)-covering and does not try to combine such information from all \(3\)-coverings to form the \(9\)-Selmer group.
The algorithm was developed in the PhD thesis of Brendan Creutz [Creutz, 2010]. Typically most of the computation time is spent on class group and unit group computations in the constituent fields of the degree \(9\) etale algebra associated to the flex points on the cubic. The primary use is to obtain information on the \(3\)-primary part of the Shafarevich–Tate group. It is only in very rare circumstances that a nine descent is required (in addition to the other descent machinery) to determine the Mordell–Weil rank (e.g. if there were elements of order \(24\) in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt\)).
- NineDescent(C : parameters): Crv -> SeqEnum, List#
ExtraReduction: RngIntElt Default: 10 verbose : NineDescent Default: Verbose : 3
Given a plane cubic curve \(C\) over \({\mathbb{Q}}\) this returns a sequence of curves in \({\mathbb{P}}^8\) defined by \(27\) quadrics and a list of degree \(9\) maps making these curves into \(3\)-coverings of \(C\). This is the \(3\)-Selmer set of \(C\) (i.e. the set of everywhere locally solvable \(3\)-coverings of \(C\)). If there are no coverings, then \(C({\mathbb{Q}}) = \emptyset\) and the class of \(C\) in the Shafarevich-Tate group of its Jacobian is not divisible by \(3\). Otherwise the coverings returned are lifts of \(C\) to the \(9\)-Selmer group.
The coverings returned are minimised and reduced in an ad hoc fashion. If
ExtraReductionis set to a larger value, more time will be spent reducing possibly resulting in smaller models. The current implementation requires that Galois act transitively on the flex points. If this is not the case, then one can usepIsogenyDescentinstead.
- NineSelmerSet(C): Crv -> RngIntElt#
verbose: NineDescent Default: Verbose : 3
Computes the \(3\)-rank of the \(3\)-Selmer set of plane cubic curve \(C\) defined over \({\mathbb{Q}}\). The value \(-1\) is returned when the \(3\)-Selmer set is empty. In this case \(C({\mathbb{Q}}) = \emptyset\) and the class of \(C\) in the Shafarevich-Tate group of its Jacobian is not divisible by \(3\). If the \(3\)-Selmer set is nonempty, its \(3\)-rank is the same as that of the \(3\)-Selmer group of the Jacobian. In this case the class of \(C\) in the Shafarevich-Tate group of the Jacobian is divisible by \(3\).
Higher 2-power Isogeny Descents#
Given an elliptic curve \(E/{\mathbb{Q}}\) with a rational \(2\)-torsion point \(T \in E({\mathbb{Q}})[2]\), there is an degree-\(2\) isogeny \(\phi : E \to E'\) with kernel \(\{0,T\}\). Computing the Selmer groups attached to \(\phi\) and the dual isogeny \(\widehat{\phi} : E' \to E\) gives an upper bound for the rank of \(E({\mathbb{Q}})\). In many cases this upper bound may be improved by performing higher descents. These higher descents can also help find generators of \(E({\mathbb{Q}})\) of large height. See for example the paper of Bremner and Cassels [Bremner and Cassels, 1984] on the elliptic curves \(Y^2 = X(X^2+p)\) where \(p\) is a prime with \(p \equiv 5\pmod{8}\).
The function below applies these methods, together with use of the Cassels-Tate pairing and other refinements. The algorithm is fully described in [Fisher, n.d.]. No class group and unit calculations are required; instead the global parts of the calculation involve solving quadratic forms of ranks \(3\) and \(4\) over \({\mathbb{Q}}\).
The same information is obtained by calling this for \((E,T)\) and for the isogenous \((E',T')\). In fact, the output and the verbose printing will be the same, but in the opposite order, for the two computations.
- TwoPowerIsogenyDescentRankBound(E, T : parameters): CrvEll[FldRat], PtEll[FldRat] ) -> RngIntElt, SeqEnum, SeqEnum#
- TwoPowerIsogenyDescentRankBound(E : parameters): CrvEll[FldRat], PtEll[FldRat] ) -> RngIntElt, SeqEnum, SeqEnum#
Cutoff : RngIntElt Default: 2 MaxSteps : RngIntElt Default: 5 ReturnFourCoverings: BoolElt Default: false verbose : cbrank Default: Verbose : 3
This calculates an upper bound on the Mordell–Weil rank of the elliptic curve \(E/{\mathbb{Q}}\). The second argument \(T\) must be a \({\mathbb{Q}}\)-rational \(2\)-torsion point on \(E\), specifying which \(2\)-isogeny is to be used. When there is only one \(2\)-torsion point, the second argument can be omitted.
Let \(\phi : E \to E'\) be the isogeny with kernel generated by \(T\), and \(\widehat{\phi} : E' \to E\) the dual isogeny, with kernel generated by \(T'\). Let \(\phi_m\) and \(\widehat{\phi}_m\) be the isogenies of degree \(2^m\) obtained by composing \(\phi\) and \(\widehat{\phi}\) a total of \(m\) times. Then the rank bound after \(m\) steps is that obtained by computing the images of the Selmer groups attached to \(\phi_m\) and \(\widehat{\phi}_m\) in the Selmer groups attached to \(\phi\) and \(\widehat{\phi}\). The dimensions of these images are also returned. At each step, the rank bound improves by an even integer (or stays the same).
A summary table is printed after each step, if the verbose flag
cbrankis set to \(1\), which displays the rank bounds obtained so far.If the current rank bound is strictly less than the
Cutoff, then the program returns immediately without performing any further descents. By default theCutoffis \(2\), so the program ends if a bound of \(0\) or \(1\) is obtained (since no stronger bound can then be obtained).The maximum number of descent steps carried out can be controlled by specifying
MaxSteps(\(5\) by default). For example, ifMaxStepsis \(1\), then the program carries out a descent by \(2\)-isogeny. IfMaxStepsis \(2\), then the upper bound on the rank is at least as good as that obtained by carrying out a \(2\)-descent on either of the curves \(E\) or \(E'\). In cases where \(E\) or \(E'\) has full rational \(2\)-torsion, a 6th step, corresponding to 8-descent, is also possible. Note that this is not done by default, but only whenMaxStepsis set to 6.If
ReturnFourCoveringsistrue, then the function also returns a list of quadric intersections (i.e. genus one models of degree \(4\)). These may be used in the same way as those returned byFourDescent, to search for rational points of large height on \(E\). A total of \(2^d\) quadric intersections are returned, where \(d\) is the dimension of the image of the \(4\)-Selmer group of \(E\) in the \(2\)-Selmer group of \(E\). To obtain from these a complete list of quadric intersections (i.e. one for each element of the \(4\)-Selmer group) the functionsTwoDescentandAddCoversshould be used. IfReturnFourCoveringsistrue, the descent steps done are the minimum necessary to get this set of \(4\)-coverings (that is, \(4\) steps for \(E\) and \(3\) steps for \(E'\)), and the values ofCutoffandMaxStepsare ignored.
\(p\)-Isogeny Descent#
Given an isogeny \(\phi: E_1 \rightarrow E_2\) of elliptic curves, one may define the \(\phi\)-Selmer group of \(E_2\) to be the set of everywhere locally solvable \(\phi\)-coverings of \(E_2\). Given a genus one curve \(C\) with Jacobian \(E_2\), one may define its \(\phi\)-Selmer set to be the set of everywhere locally solvable \(\phi\)-coverings of \(C\). A \(\phi\)-isogeny descent computes the \(\phi\)-Selmer group (or \(\phi\)-Selmer set).
We denote the dual isogeny by \(\phi^{\vee}\). In the case of elliptic curves, performing \(\phi\)- and \(\phi^\vee\)-descents can be used to bound the Mordell–Weil rank and get information on \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt\). For general genus one curves descent by isogeny can be used to rule out divisibility in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt\) and consequently prove that there are no rational points.
In practice it is often easier to compute a ‘fake’ Selmer set. This is a set parameterising everywhere locally solvable unions of \(\phi\)-coverings, with the property that every \(\phi\)-covering lies in exactly one such union. Any locally soluble \(\phi\)-covering gives rise to a locally soluble union, hence there is a map from the Selmer set to the fake Selmer set. In general this map may be neither surjective nor injective. However, if the fake Selmer set is empty, then this is also true of the Selmer set.
Current functionality allows one to compute \(\phi\)-Selmer groups for an isogeny \(\phi\) of prime degree in a number of situations. For isogenies of degree \(2\) or \(3\), they may be computed using TwoIsogenyDescent and ThreeIsogenyDescent. When \(\phi\) is the quotient by a subgroup generated by a \({\mathbb{Q}}\)-rational point of order \(p \in \{5,7\}\) the dimensions of the \(\phi\)- and \(\phi^\vee\)-Selmer groups can be computed using an algorithm of Fisher [Fisher, 2000] and [Fisher, 2001]. This method also produces models for the everywhere locally solvable \(\phi^\vee\)-coverings of \(E\).
Given a genus one normal curve \(C\) of prime degree \(p\) produced by a \(\phi\)-isogeny descent on an elliptic curve, the \(\phi^\vee\)-Selmer set of \(C\) can be computed using an algorithm of Creutz described in [Creutz, 2010] and [Creutz and Miller, 2012]. Computing the \(\phi^\vee\)-Selmer sets of all elements in the \(\phi\)-Selmer group yields information that is equivalent to that given by the \(\phi^\vee\circ\phi\)-Selmer group.
Current functionality allows one to perform these second isogeny descents when \(\phi\) has degree \(p = 3\) or when \(p \in \{ 5,7\}\) and the flex points of \(C\) lie on the coordinate hyperplanes in \({\mathbb{P}}^{p-1}\). If the kernel of the isogeny is generated by a \({\mathbb{Q}}\)-rational point of order \(p\), then such a model always exists. Moreover, the models returned by the algorithm of Fisher have this property. For \(p = 7\), computation of the coverings is not practical and only a ‘fake’-Selmer set can be computed (see [Creutz and Miller, 2012]).
- pIsogenyDescent(E, P): CrvEll, PtEll -> RngIntElt, RngIntElt, SeqEnum, CrvEll#
- pIsogenyDescent(E, p): CrvEll, RngIntElt -> RngIntElt, RngIntElt, SeqEnum, CrvEll#
- pIsogenyDescent(lambda, p): FldRatElt, RngIntElt -> RngIntElt, RngIntElt, SeqEnum, CrvEll, CrvEll#
This performs a \(\phi\)-descent on an elliptic curve over \({\mathbb{Q}}\) using the algorithm of Fisher. The descent requires an isogeny \(\phi\) whose kernel is generated by a \({\mathbb{Q}}\)-rational point of order \(p \in \{5,7\}\).
The input can be specified in one of three ways: (1) by giving an elliptic curve and a point of order \(p\) on the curve; (2) by giving an elliptic curve containing a point of order \(p\) and specifying \(p\); or (3) by specifying \(p\) and a \({\mathbb{Q}}\)-rational point on the modular curve \(X_1(p )\). In the final case the choice for the coordinate \(\lambda\) on \(X_1(p )({\mathbb{Q}})\) is as described in [Fisher, 2000].
The return values are the \(p\)-ranks of the \(\phi\)- and \(\phi^\vee\)-Selmer groups, a sequence of genus one normal curves of degree \(p\) representing the inverse pairs of nontrivial elements of the \(\phi^\vee\)-Selmer group modulo the image of the subgroup generated by the \(p\)-torsion point, and the isogenous elliptic curve. If the input is a coordinate on \(X_1(p )\), the curve \(E\) is also returned.
- pIsogenyDescent(C, phi): Crv, MapSch -> SeqEnum, List#
- pIsogenyDescent(C, E1, E2): Crv, CrvEll, CrvEll -> SeqEnum, List#
- pIsogenyDescent(C, P): Crv, PtEll -> SeqEnum, List#
verbose: Selmer Default: Verbose : 3
This performs an isogeny descent on a genus one normal curve \(C\) over \({\mathbb{Q}}\) of degree \(p \in \{3,5\}\), as described in [Creutz and Miller, 2012]. The curve \(C\) must be a projective plane cubic (in case \(p = 3\)) or an intersection of \(5\) quadrics in \({\mathbb{P}}^4\), with the additional requirement that the flex points of \(C\) lie on the coordinate hyperplanes. For the descent one must specify: (1) the isogeny \(\phi\); (2) the domain \(E1\) and the codomain \(E2\) of the isogeny; or (3) a \({\mathbb{Q}}\)-rational point \(P\) of order \(p\) on an elliptic curve \(E\) which generates the kernel of the isogeny.
The return values are a sequence consisting of genus one normal curves of degree \(p\) representing the elements of the \(\phi\)-Selmer set and a list of maps making these into \(\phi\)-coverings of \(C\).
- FakeIsogenySelmerSet(C, phi): Crv, MapSch -> RngIntElt#
- FakeIsogenySelmerSet(C, E1, E2): Crv, CrvEll, CrvEll -> RngIntElt#
- FakeIsogenySelmerSet(C, P): Crv, PtEll -> RngIntElt#
verbose: Selmer Default: Verbose : 3
This determines the \({\mathbb{F}}_p\)-dimension of the ‘fake’-\(\phi\)-Selmer set of the genus one normal curve \(C\) of degree \(p \in \{3,5,7\}\) (see [Creutz and Miller, 2012] for the definition). By convention the empty set has dimension \(-1\). The input is exactly as for
pIsogenyDescent, however coverings are not produced. This makes the computations feasible as well for \(p = 7\).
- Example: p Isogeny Descent (ex-a5a6be)#
We use a \(5\)-isogeny descent to show that the elliptic curve with Cremona reference 570l3 has rank \(0\) and that there are nontrivial elements of order \(5\) in its Shafarevich-Tate group.
> lambda := 48/5; > r_phiSel,r_phidualSel,Sha,E1,E2 := pIsogenyDescent(lambda,5); > CremonaReference(E1); 570l1 > CremonaReference(E2); 570l3 > TorsionSubgroup(E1); Abelian Group isomorphic to Z/10 Defined on 1 generator Relations: 10*$.1 = 0 > r_phiSel; 0 > r_phidualSel; 3
This shows that \(E_2({\mathbb{Q}})/\phi(E_1({\mathbb{Q}})) \simeq 0\), while the \(\phi^\vee\)-Selmer group gives an exact sequence: \(0 \rightarrow E_2({\mathbb{Q}})/\phi^\vee(E_1({\mathbb{Q}})) \subset ({\mathbb{Z}}/5{\mathbb{Z}})^3 \rightarrow \rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E_2/{\mathbb{Q}})[\phi^\vee] \rightarrow 0\). From this we conclude that the rank (for both curves) is \(0\), and so \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E_2/{\mathbb{Q}})[\phi^\vee]\) has \({\mathbb{F}}_5\)-dimension \(2\). Representatives for the inverse pairs of nontrivial elements are given by the third return value.
> #Sha*2 + 1; 25 > C := Sha[1]; > CremonaReference(Jacobian(GenusOneModel(C))); 570l3
The above computation does not conclusively show that \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E_1/{\mathbb{Q}})\) has no nontrivial \(5\)-torsion. For this we need a second isogeny descent. Namely we show that the \(C\) is not divisible by \(\phi\) in \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt\).
> time DimSelC := FakeIsogenySelmerSet(C,E1,E2); Time: 2.950 > DimSelC; -1
- Example: p Isogeny Descent2 (ex-900bfb)#
Now we use a full \(5\)-descent to find a large generator.
> r1,r2,SelModTors,E,EE := pIsogenyDescent(326/467,5); > r1,r2; 0 2 > E5,m := TorsionSubgroup(E); > E5; Abelian Group isomorphic to Z/5 Defined on 1 generator Relations: 5*E5.1 = 0 > time ConjecturalRegulator(E); 242.013813460415708000138268958 1 Time: 70.180 > Conductor(E); 271976526950 > ThreeTorsionType(E); Generic
This shows that \(E({\mathbb{Q}}) \simeq {\mathbb{Z}}\times{\mathbb{Z}}/5{\mathbb{Z}}\) and that (assuming \(\rm III\hskip-10.2pt{\vrule width9.5pt depth0pt height0.3pt}\hskip 2pt(E/{\mathbb{Q}})\) is trivial) that the regulator is 242.01… This means one probably needs more than a \(4\)-descent to find the generator. The conductor is too large for Heegner point techniques and the \(3\)-torsion on \(E\) is generic, meaning \(6\)- or \(12\)-descent will be very slow (even if they are performed nonrigorously). We can do a further isogeny descent to obtain a full \(5\)-covering.
> P := m(E5.1); > C := Curve(Minimize(GenusOneModel(SelModTors[2]))); > time Ds,Pis := pIsogenyDescent(C,P); 7.880 > D := Ds[1]; > pi := Pis[1]; > time rp := PointSearch(D,10^10 : > Dimension := 1, OnlyOne := true, Nonsingular := true); Time: 39.410 > Q := rp[1]; > Q; (-11610740223/2573365369 : 1350220049/2573365369 : -110993809/2573365369 : -3970329088/2573365369 : 1) > piQ := pi(Q); // gives the point on C > Dnew,Enew,FiveCovering := nCovering(GenusOneModel(D)); > Qnew := Dnew(Rationals())!Eltseq(Q); > Ecan,EnewtoEcan := MinimalModel(Enew); > P2 := EnewtoEcan(FiveCovering(Qnew)); > P2; (18742046893875394386310714878805837118945751672332464430219783625592 23533610794664163106345898123969229661/991466716729115905824131485387 000945412007497180441812893340644055454270710030810641619997008843128 1 : 71245662543288432230853647434377610311616709098508077082874898143 715069493690489458124709392518651254352942841744887961253603235705564 184725054480767436761578/98722742040021206194215985208166099089985806 405143789926209543140373470096170812446567353837866650186446834616709 6101096776119973657047069330277618071 : 1) > CanonicalHeight(P2); 242.013813460415708000138268957
- Example: p Isogeny Descent3 (ex-0153da)#
Finally we give an example which shows that the map from the genuine Selmer set to the fake Selmer set need not be surjective.
> E1 := EllipticCurve("254a1"); > E2 := EllipticCurve("254a2"); > bool, phi := IsIsogenous(E1,E2); > phicoveringsofE2,_,phidualcoveringsofE1,_,phi := ThreeIsogenyDescent(E1); > C := phicoveringsofE2[1]; > C; x^3 - x^2*y - x^2*z - 2*x*y^2 + 3*x*y*z - 2*x*z^2 + 2*y^2*z > phidual := DualIsogeny(phi); > MinimalModel(Codomain(phidual)) eq MinimalModel(Jacobian(C)); true > time FakeIsogenySelmerSet(C,phidual); 2 Time: 0.620 > time SelC := pIsogenyDescent(C,phidual); Time: 1.160 > Ilog(3,#SelC); 1