Curves over Number Fields

The functions in this section are for elliptic curves defined over number fields. For the most part, the functionality is a subset of that available for curves over Q, with functions having similar names and arguments.

Note that functions related to Mordell-Weil groups and descent are in Section Mordell-Weil Groups and Descent Methods rather than this section.

Contents

Local Invariants

The routines listed here, when nontrivial, are based on an implementation of Tate's algorithm.

Conductor(E) : CrvEll -> RngOrdIdl
The conductor is part of the data computed by LocalInformation (described below).
BadPlaces(E) : CrvEll -> SeqEnum
Given an elliptic curve E defined over a number field K, returns the places of K of bad reduction for E. i.e., the places dividing the discriminant of E.
BadPlaces(E, L) : CrvEll, FldNum -> SeqEnum
Given an elliptic curve E defined over a number field K and a number field L, such that K is a subfield of L, returns the places of L of bad reduction for E.
LocalInformation(E, P) : CrvEll, RngOrdIdl -> Tup, CrvEll
    UseGeneratorAsUniformiser: BoolElt  Default: false
Implements Tate's algorithm for the elliptic curve E over a number field. This intrinsic computes local reduction data at the prime ideal P, and a local minimal model. The model is not required to be integral on input. Output is < P, vp(d), fp, cp, K, s > and Emin where P is the prime ideal, vp(d) is the valuation of the local minimal discriminant, fp is the valuation of the conductor, cp is the Tamagawa number, K is the Kodaira Symbol, and s is false if the curve has non-split multiplicative reduction at P and true otherwise. Emin is a model of E (integral and) minimal at P.

When the optional parameter UseGeneratorAsUniformiser is set true, the computation checks whether P is principal, and if so, uses generator of P as the uniformiser. This means that at primes other that P, the returned model will still be integral or minimal if the given curve was.

LocalInformation(E) : CrvEll -> [ Tup ]
Return a sequence of the tuples returned by LocalInformation(E, P) for all prime ideals P in the decomposition of the discriminant of E in the maximal order of the number field the elliptic curve E is over.
Reduction(E, p) : CrvEll, RngOrdIdl -> CrvEll, Map
Given an elliptic curve E over a number field given by a model which is integral at p and has good reduction at p, returns an elliptic curve over the residue field of p which represents the reduction of E at p. The reduction map is also returned.

Complex Multiplication

HasComplexMultiplication(E) : CrvEll -> BoolElt, RngIntElt
Given an elliptic curve E over a number field, the function determines whether the curve has complex multiplication and, if so, also returns the discriminant of the CM quadratic order. The algorithm uses fairly straightforward analytic methods, which are not suited to very high degree j-invariants with CM by orders with discriminants more than a few thousand.

Heights

NaiveHeight(P) : PtEll -> FldPrElt
Given a point P on an elliptic curve over a number field K, the function returns the naive height of P; i.e., the absolute logarithmic height of the x-coordinate.
Height(P : parameters) : PtEll -> FldPrElt
    Precision: RngIntElt                Default: 27
    Extra: RngIntElt                    Default: 8
Given a point P on an elliptic curve defined over a number field K, returns the N{éron-Tate height of P . (This is based on the absolute logarithmic height of the x-coordinate.) The parameter Precision may be used to specify the desired precision of the output. The parameter Extra is used in the cases when one of the points 2n P gets too close to the point at infinity, in which case there is a huge loss in precision in the archimedean height and increasing Extra remedies that problem.
HeightPairingMatrix(P : parameters) : [PtEll] -> AlgMatElt
Compute the height pairing matrix for an array of points. Same parameters as above.
LocalHeight(P, Pl : parameters) : PtEll, PlcNumElt -> FldPrElt
    Precision: RngIntElt                Default: 0
    Extra: RngIntElt                    Default: 8
Given a point P on an elliptic curve defined over a number field K, and a place Pl (finite or infinite) of K, returns the local height λPl(P) of P at (Pl). The parameter Precision sets the precision of the output. A value of 0 takes the default precision.

When Pl is an infinite place, the parameter Extra can be used to remedy the huge loss in precision when one of the points 2n P gets too close to the point at infinity.

HeightDifferenceBounds(E) : CrvEll -> FldReElt, FldReElt
HeightDifferenceLowerBound(E) : CrvEll -> FldReElt
HeightDifferenceUpperBound(E) : CrvEll -> FldReElt
These functions return bounds for the difference between the naive and canonical heights on the elliptic curve E. Here all heights are absolute logarithmic heights with respect to the x-coordinate on E. The functions return real numbers l and u such that l ≤ NaiveHeight(P) - Height(P) ≤u for all points P ∈E(K), where K is the base field of E. Note that the lower bound l is negative.

The bounds are the strongest available, choosing between the Cremona--Prickett--Siksek bounds and the Silverman bounds.

CPSHeightBounds(E) : CrvEll -> FldReElt, FldReElt
The Cremona--Prickett--Siksek bounds for the height difference.
SilvermanHeightBounds(E) : CrvEll -> FldReElt, FldReElt
The Silverman bounds for the height difference.

Integral Points

IntegralPoints(E) : CrvEll[FldNum] -> [ PtEll ]
    FBasis: [ PtEll ]                   Default: 
    SafetyFactor: RngIntElt             Default: 2
Given an elliptic curve E over a number field which is a direct extension of the rational field, this intrinsic returns a sequence containing all integral points on the given model of E, up to sign (only one of P and -P is listed).

The parameters FBasis and SafetyFactor have exactly the same meaning as in the function IntegralPoints for curves over Q.

Currently, FBasis must be specified: it must be a (nonempty) sequence of points in the Mordell-Weil group of E. The routine finds all integral points in the group generated by the given points.

The base field of E must also current be totally real and E must have nontrivial torsion.

Elliptic Curve Chabauty

This refers to a method for finding the rational points on a curve, if the curve admits a suitable map to an elliptic curve over some extension field. The method was developed by Nils Bruin (see [Bru03] or [Bru04]). The first intrinsic follows a Mordell-Weil sieve based strategy, similar to that used in Chabauty for genus 2 curves (see [BS10]).

Chabauty(MWmap, Ecov) : Map, MapSch -> SetEnum, RngIntElt
    InertiaDegreeBound: RngIntElt       Default: 20
    SmoothBound: RngIntElt              Default: 50
    PrimeBound: RngIntElt               Default: 30
    IndexBound: RngIntElt               Default: 
    InitialPrimes: RngIntElt            Default: 50
    SetVerbose("EllChab", n):           Maximum: 3
Let E be an elliptic curve defined over a number field K. This function attempts to determine the subset of E(K) consisting of those points that have a Q-rational image under a given map E -> (P)1.

The arguments are:

a map MWmap: A -> E from an abstract abelian group into E(K),
a map Ecov : E -> (P)1 defined over K.

The returned values are a finite subset V of A and an integer R. The set V consists of all the points in the image of A in E(K) that have a Q-rational image under the given map Ecov. If the index of A in E(K) is finite and coprime to R then V consists of all points in E(K) with Q-rational image. Changing the various optional parameters can change the performance of this routine considerably. In general, it is not proven that this routine will return at all.

The parameter InertiaDegreeBound determines the maximum inertia degree of primes at which local information is obtained.

Only places for which the group order of the rational points on the reduction of E is smooth relative to SmoothBound are used.

The Mordell-Weil sieving process only uses information from E(K)/ B E(K), where B is smooth relative to PrimeBound.

If IndexBound is specified, then the returned value R will only contain prime divisors from IndexBound. Setting this parameter may make it impossible for the routine to terminate.

Chabauty(MWmap, Ecov, p) : Map, MapSch, RngIntElt -> RngIntElt, SetEnum, RngIntElt, Tup
    Cosets: Tup                         Default: 
    Aux: SetEnum                        Default: 
    Precision: RngIntElt                Default: 
    Bound: RngIntElt                    Default: 
    SetVerbose("EllChab", n):           Maximum: 3
Let E be an elliptic curve defined over a number field K. This function bounds the set of points in E(K) whose images under a given map E -> (P)1 are Q-rational.

The arguments are as follows:

a map MWmap : A -> E from an abstract group into E(K) (as returned by MordellWeilGroup),
a map of varieties Ecov : E -> (P)1 defined over K, and
a rational prime p, such that E and the map Ecov have good reduction at primes above p.

The returned values are N, V, R and L as follows. Let G denote the image of A in E(K).

N is an upper bound for the number of points P ∈G such that (Ecov)(P) ∈(P)1(Q) (note that N can be ∞).
V is a set of elements of A found by the program that have images in (P)1(Q),
R is a number with the following property: if [E(K) : G] is finite and coprime to R, then N is also an upper bound for the number of points P ∈E(K) such that (Ecov)(P) ∈(P)1(Q), and
L is a collection of cosets in A such that (bigcup L)∪V contains all elements of A that have images in (P)1(Q).

If Cosets (<Cj>) are supplied (a coset collection of A), then the bounds and results are computed for A ∩(bigcup Cj).

If Aux is supplied (a set of rational primes), then the information at p is combined with the information at the other primes supplied.

If Precision is supplied, this is the p-adic precision used in the computations. If not, a generally safe default is used.

If Bound is supplied, this determines a search bound for finding V.

The algorithm used is based on [Bru03] and [Bru02].

Further examples and discussion can be found in [Bru04].

Example CrvEllQNF_ECchabauty (H130E24)

This example is motivated and explained in detail in [Bru04] (Section 7). Let E be the elliptic curve y2 = x3 + ( - 3ζ3 - ζ + 1)dx2 + ( - ζ2 - ζ - 1)d2x, d = 2ζ3 - 2ζ2 - 2 over K := Q(ζ) where ζ is a primitive 10th root of unity.

> _<z> := PolynomialRing(Rationals());
> K<zeta> := NumberField(z^4-z^3+z^2-z+1);
> OK := IntegerRing(K);
> d := 2*zeta^3-2*zeta^2-2;
> E<X,Y,Z> := EllipticCurve(
>         [ 0, (-3*zeta^3-zeta+1)*d, 0, (-zeta^2-zeta-1)*d^2, 0 ]);
Next we determine as much as possible of E(K), allowing Magma to choose the method.
> success, G, GtoEK := PseudoMordellWeilGroup(E);
> G;
Abelian Group isomorphic to Z/2 + Z/2 + Z + Z
Defined on 4 generators
Relations:
    2*G.1 = 0
    2*G.2 = 0
> success;
true
Here G is an abstract group and GtoEK injects it into E(K). Since the flag is true, this is a subgroup of finite, odd index in E(K). Next, we determine the points (X:Y:Z) in this subgroup for which the function u : E -> (P)1 : (X:Y:Z) -> d ( - X + (ζ3 - 1) Z : X + d ( - ζ3 - ζ) Z) takes values in (P)1(Q).
> P1 := ProjectiveSpace(Rationals(),1);
> u := map< E->P1 | [-X + (zeta^3 - 1)*d*Z, X+(-zeta^3-zeta)*d*Z] >;
> V, R := Chabauty( GtoEK, u);
> V;
{
    0,
    G.3 - G.4,
    -G.3 + G.4,
    G.3 + G.4,
    -G.3 - G.4
}
> R;
320
We see that the routine assumed that the image of GtoEK is 2- and 5-saturated in E(K). We can ask it to not assume anything outside 2.
> V2, R := Chabauty( GtoEK, u: IndexBound:= 2);
> V eq V2;
true
> R;
16
This means that we have found all points in E(K) that have a rational image under u. If one wants to find the images of these points then it is necessary in this example to first extend u (by finding alternative defining equations for it) so that it is defined on all the points.
> u := Extend(u);
> [ u( GtoEK(P) ) : P in V ];
[ (-1 : 1), (-1/3 : 1), (-1/3 : 1), (-3 : 1), (-3 : 1) ]
Alternatively, we can apply Chabauty's method without Mordell-Weil sieving.
> N, V, R, C := Chabauty( GtoEK, u, 3);
> N;
5
> V;
{
    0,
    G.3 - G.4,
    -G.3 + G.4,
    G.3 + G.4,
    -G.3 - G.4
}
> R;
4
The Chabauty calculations prove that there are at most N elements in G whose image under u is Q-rational. Also, V is a set of elements with this property. Since here N = 5 = #V, these are the only such elements. Moreover, the calculations prove that if [E(K) : G] is coprime to R, then N is actually an upper bound on the number of elements in E(K) whose image under u is Q-rational. We know from the PseudoMordellWeilGroup computation that [E(K) : G] is odd. Therefore we have solved our problem for E(K), not just for G.

Auxiliary Functions for Etale Algebras

This section contains machinery for number fields (and more generally "etale algebras", i.e. algebras of the form Q[x]/p(x)), intended to perform the number field calculations that are involved in computing Selmer groups of geometric objects.

It has become conventional to refer to "the p-Selmer group" of a number field K (or, more generally, of an etale algebra) relative to a finite set S of K-primes. It means the finite subgroup K(S, p) of K * /(K * )p, consisting of those elements whose valuation at every prime outside S is a multiple of p.

AbsoluteAlgebra(A) : RngUPolRes -> SetCart, Map
    Fields: SetEnum                     Default: { }
    SetVerbose("EtaleAlg", n):          Maximum: 1
Given a separable commutative algebra over Q, an absolute number field or a finite field, the function returns the isomorphic direct sum of absolute fields as a cartesian product and the isomorphisms to and from this product. The optional parameter Fields enables the user to suggest representations of the absolute fields. If this function finds it needs a field isomorphic to one occurring in the supplied list, then it will use the given field. Otherwise it will construct a field itself. The isomorphism is returned as a second argument. If called twice on the same algebra, it will recompute if the Fields argument is given. Otherwise it will return the result computed the first time.
pSelmerGroup(A, p, S) : RngUPolRes, RngIntElt, SetEnum[RngOrdIdl] -> GrpAb, Map
    SetVerbose("EtaleAlg", n):          Maximum: 1
Returns the p-Selmer group of a semi-simple algebra A. The set S of ideals should be prime ideals of the underlying number field. The group returned is the direct sum of the p-Selmer groups of the irreducible summands of A and the map is the obvious embedding in the multiplicative group of A. An implied restriction is that BaseRing(A) be of type FldNum. See also pSelmerGroup. If an algebra over the rationals is required, create a degree 1 extension by

RationalsAsNumberField();

LocalTwoSelmerMap(P) : RngOrdIdl -> Map
Let K be the number field associated with the prime ideal P. The map returned is K * -> KP * / KP * 2, where KP is the completion of K at P. The codomain is represented as a finite abelian group.
LocalTwoSelmerMap(A, P) : RngUPolRes, RngOrdIdl -> Map, SeqEnum
Let K be the base field of the commutative algebra A and let P be a prime ideal in K. Then this function returns a map A * -> A * /A * 2 tensor KP, where KP is the completion of K at P. The codomain is represented as a finite abelian group.

This map is computed by using LocalTwoSelmerMap(Q) for the various extensions Q of P to the fields making up AbsoluteAlgebra(A). The map returned is essentially the direct sum of all these maps. For technical purposes, one may also wish to use the components of the map coming from each number field; these are given by the second return value, which is a sequence of records (ordered in the same way as the results are concatenated in the returned map). Each record contains items i, p, map and vmap. Here i is an index indicating which number field in AbsoluteAlgebra(A) the record corresponds to, p is an extension of P to a prime in that number field, map is LocalTwoSelmerMap(p), and vmap is the valuation map at p on that number field.

Example CrvEllQNF_selmer-etale (H130E25)

> P<x> := PolynomialRing(Rationals());
> A := quo<P | x^3 - 1>;
> AA := AbsoluteAlgebra(A);
> AA;
Cartesian Product
<Number Field with defining polynomial x - 1 over the Rational Field,
 Number Field with defining polynomial x^2 + x + 1 over the Rational Field>

Analytic Information

RootNumber(E, P) : CrvEll, RngOrdIdl -> RngIntElt
The local root number of the elliptic curve E (defined over a number field) at the prime ideal P. The formulae are due to Rohrlich, Halberstadt, Kobayashi and the Dokchitser brothers.
RootNumber(E) : CrvEll -> RngIntElt
Calculates the global root number of an elliptic curve E defined over a number field K. This is the product of local root numbers over all places of K (-1 from each infinite place), and is the (conjectural) sign in the functional equation relating L(E/K, s) to L(E/K, 2 - s).
AnalyticRank(E) : CrvEll -> RngIntElt, FldReElt
    Precision: RngIntElt                Default: 6
Determine the analytic rank of the elliptic curve E, which is defined over a number field K. The algorithm used is heuristic, computing derivatives of the L-function L(E/K, s) at s=1 until one appears to be nonzero; it also assumes the analytic continuation and the functional equation for the L-function. The function returns the first nonzero derivative L(r)(1)/r! as a second argument. The precision is optional, and is taken to be 6 digits if omitted.
ConjecturalRegulator(E) : CrvEll -> FldReElt, RngIntElt
    Precision: RngIntElt                Default: 10
Using the AnalyticRank function, this function calculates an approximation, assuming that the Birch--Swinnerton-Dyer conjecture holds, to the product of the regulator of the elliptic curve E and the order of the Tate--Shafarevich group. The (assumed) analytic rank is returned as a second value.
ConjecturalSha(E, Pts) : CrvEll, SeqEnum[PtEll] -> FldReElt
    Precision: RngIntElt                Default: 6
For an elliptic curve E defined over a number field K and a sequence of points in E(K) which purportedly form its basis modulo torsion, computes the conjectural order of the Tate-Shafarevich group Sha(E/K). This function computes the product of the regulator and Sha from the Birch--Swinnerton-Dyer conjecture (using ConjecturalRegulator) and divides by the determinant of the height pairing matrix for the points supplied in Pts. It returns 0 if the points are linearly dependent or they generate a group of rank less than the analytic rank. If the points generated a subgroup of index n>1, it returns n2.|Sha|.

Elliptic Curves of Given Conductor

This section describes search routines for finding elliptic curves with given conductor, or with good reduction outside a given set of primes. The aim is not to provably find all such curves; in most cases, this would be a very difficult task using current algorithms. Rather the aim is to efficiently search for these curves, using a variety of techniques, taking advantage of all available information, and taking advantage of all the tools available in Magma which can be applied to the problem.

The routine is very much more effective when some traces of Frobenius are known for the desired curve. The principal application of this is for finding elliptic curves that match known modular forms.

These functions are effective for finding elliptic curves over Q, as well as over number fields. For this, one must create Q using RationalsAsNumberField().

EllipticCurveSearch(N, Effort) : RngOrdIdl, RngIntElt -> SeqEnum
EllipticCurveWithGoodReductionSearch(S, Effort) : Set, RngIntElt -> SeqEnum
EllipticCurveWithGoodReductionSearch(N, Effort) : RngOrdIdl, RngIntElt -> SeqEnum
    Full: BoolElt                       Default: false
    Max: RngIntElt                      Default: 
    Primes: SeqEnum                     Default: 
    Traces: SeqEnum                     Default: 
    SetVerbose("ECSearch", n):          Maximum: 2
These functions perform a search for elliptic curves with specified conductor(s). The first function finds curves with conductor equal to the given ideal N. The "good reduction" functions find curves with conductors divisible only by primes that belong to the given set S or that divide the given ideal N. The functions aim to find as many distinct isogeny classes as possible (or Max classes, if Max is specified). A sequence is returned containing all curves found that have the specified conductor(s). It will not return more than one curve in the same isomorphism class. It may return several curves in the same isogeny class, although no attempt is made to find all isogenous curves.

The second argument, Effort, is an integer which controls how much effort is used before returning; the running time depends on this variable in a roughly linear way, except with significant step-ups at values where an additional technique begins to be used. Currently, Effort := 400 is the smallest value where all available techniques are used. (This may be changed in the future.)

There are two ways to specify an early stopping condition:

(i)
If the optional argument Max is set to some positive integer, the routine terminates as soon as Max non-isogenous curves are found.

(ii)
The optional arguments Primes and Traces may be used together to specify some traces of Frobenius of the desired curve(s). Here Primes is a sequence of prime ideals coprime to the conductor(s), and Traces is a sequence of integers of the form [ aP : P ∈(Primes) ]. Alternatively, Traces may be a sequence of sequences of that form. The routine aims to find curves whose traces match the specified sequences, and terminates as soon as one curve of each kind has been found. The algorithm uses the trace information to cut down the search by a large factor.

Warning: ALL curves found during the search are returned (possibly including curves whose traces do not match the specified data).

If an early stopping condition has been specified, the routine initially tries with lower effort, so that it will succeed quickly for easier input. The effort is incremented exponentially up to the specified Effort. (This is a breadth-first search strategy. The algorithm involves doing a large number of independent searches, and each elliptic curve can be found in only one of these searches, so it is necessary to alternate between them. There is no way to reliably predict how much effort will be needed, but the search usually takes far longer when the effort is larger than necessary.) To override this behaviour and begin with the full specified Effort, the option Full should be used. (This is intended for the case where the same search has already been done with a lower Effort).

If SetVerbose("ECSearch", 1) is used, information about the search is printed during computation. In particular, curves with the desired conductor are printed when they are found, so that they can be obtained without waiting for the routine to finish.

V2.28, 13 July 2023