[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Structure Operations

Structure Operations

Except in the case for curves over the rationals, only a very limited number of structural operations are currently available. Note that some operations for curves over Q require the curve to have integral coefficients; the function IntegralModel can be used to find such a model for arbitrary curves over Q.

Subsections

Related Structures

CoefficientRing(E) : GeomEC -> Rng
The ring over which E was defined, that is, the parent of its coefficients.

Change Ground Ring

Lift(E, K, h) : GeomEC, Rng, Map -> GeomEC
Lift(E, K) : GeomEC, Rng -> GeomEC
Given an elliptic curve E defined over a field F together with a map h:F -> K, return an elliptic E' defined over K by applying h to the coefficients of E. If the map h is not defined the coefficients will be coerced into K using the standard map; an error occurs if this fails.

Alternative Models

Weierstrass(E) : GeomEC -> [ Rng ]
Given an elliptic curve E defined over a field K, this function return a sequence [a, b] of two elements of K defining a short Weierstrass model for a curve E' isomorphic to E.
IntegralModel(E) : GeomEC -> GeomEC, Map
Given an elliptic curve E defined over the rational field Q, this function returns an isomorphic curve I defined over Q but with integral coefficients; the second return value is the map E -> I.
MinimalModel(E) : GeomEC -> GeomEC, Map
Given an elliptic curve E defined over Q, determine a global minimal model for E; that is, an elliptic curve E' in Weierstrass form isomorphic to E, with integer coefficients, and such that the discriminant of E' has minimal p-adic valuation at every prime p.

The function returns three values: the elliptic curve E', and isomorphisms E -> E' and E' -> E.


Example Elcu_Models (H46E2)

We define an elliptic curve over the rationals, find an integral model, a minimal model and an integral model for the short Weierstrass form.

> EE := EllipticCurve([1/2, 1/2, 1, 1/3, 4]);
> print EE;
Elliptic Curve defined by y^2 + 1/2*x*y + y = x^3 + 1/2*x^2 + 1/3*x + 4 over 
Rational Field
> IE := IntegralModel(EE);
> print IE;
Elliptic Curve defined by y^2 + 3*x*y + 216*y = x^3 + 18*x^2 + 432*x + 186624 over 
Rational Field
> ME, ma, mb := MinimalModel(IE);
> print ME;
Elliptic Curve defined by y^2 + x*y + y = x^3 - x^2 + 619*x + 193645 over Rational 
Field
> print ma;
Mapping from: GeomEC: IE to GeomEC: ME
Taking (x, y, 1) to (x + 7, y + x + 104, 1)
> print mb;
Mapping from: GeomEC: ME to GeomEC: IE
Taking (x, y, 1) to (x - 7, y - x - 97, 1)
> WE := EllipticCurve(Weierstrass(EE));
> print WE;
Elliptic Curve defined by y^2 = x^3 + 9909/16*x + 6201603/32 over Rational Field
> IWE := IntegralModel(WE);
> print IWE;
Elliptic Curve defined by y^2 = x^3 + 649396224*x + 208091266154496 over Rational 
Field
> print IsIsomorphic(IWE, ME);
true Mapping from: GeomEC: IWE to GeomEC: ME
Taking (x, y, 1) to (1/1024*x + 1/4, 1/32768*y - 1/2048*x - 5/8, 1)

Invariants

aInvariants(E) : GeomEC -> [ RngElt ]
Coefficients(E) : GeomEC -> [ RngElt ]
ElementToSequence(E) : GeomEC -> [ RngElt ]
Eltseq(E) : GeomEC -> [ RngElt ]
Given an elliptic curve E, this function returns a sequence consisting of the Weierstrass coefficients of E; this is the sequence [a_1, a_2, a_3, a_4, a_6] such that E is defined by y^2z + a_1xyz + a_3yz^2=x^3 + a_2x^2z + a_4xz^2 + a_6z^3. Note that even if E was defined from a sequence [a, b] of length 2, this function returns the 5 coefficients (the first 3 being zero in that case).
bInvariants(E) : GeomEC -> [ RngElt ]
This function returns a sequence of length 4 containing the b-invariants of the elliptic curve E, namely [b_2, b_4, b_6, b_8]. In terms of the coefficients a_1, a_2, a_3, a_4, a_6 these invariants are defined by
b_2 = a_1^2 + 4a_2
b_4 = a_1a_3 + 2a_4
b_6 = a_3^2 + 4a_6
b_8 = a_1^2a_6 + 4a_2a_6 - a_1a_3a_4 + a_2a_3^2 - a_4^2.
The common parent of these elements will be the field over which E is defined.
cInvariants(E) : GeomEC -> [ RngElt ]
This function returns a sequence of length 2 containing the c-invariants of the elliptic curve E, namely [c_4, c_6]. In terms of the b-invariants b_2, b_4, b_6, b_8 these invariants are defined by
c_4 = b_2^2 - 24b_4
c_6 = -b_2^3 + 36b_2b_4 - 216b_6.
Discriminant(E) : GeomEC -> RngElt
Return the discriminant of the elliptic curve E, which equals -b_2^2b_8 - 8b_4^3 - 27b_6^2 + 9b_2b_4b_6, in terms of the b-invariants of the curve. The discriminant will be an element of the field of definition of E.
jInvariant(E) : GeomEC -> RngElt
Returns the j-invariant of the elliptic curve E, which equals c_4^3/Delta, in terms of the c-invariants and the discriminant of the curve.

Special Invariants for Rational Curves

The functions in this subsection are only defined for elliptic curves over Q. Some of them require the curve to have integral coefficients.

Conductor(E) : GeomEC -> RngIntElt
The conductor of the elliptic curve E defined over Q.
Regulator(E) : GeomEC -> FldPrElt
Given an elliptic curve E defined over Q, this function returns the regulator of E (as a real number). Note that the computation of the Mordell-Weil group for E is triggered by this function.
MordellWeilRank(E) : GeomEC -> RngIntElt
Rank(E) : GeomEC -> RngIntElt
Given an elliptic curve E defined over Q, this returns the rank of the Mordell-Weil group of E.
MordellWeilRankBounds(E) : GeomEC -> RngIntElt, RngIntElt
RankBounds(E) : GeomEC -> RngIntElt, RngIntElt
Given an elliptic curve E defined over Q, this returns the lower and upper bounds on the rank of the Mordell-Weil group of E.
SilvermanBound(E) : GeomEC -> FldPrElt
Given an elliptic curve E defined over Q with integral coefficients, this returns the Silverman bound of E.
BadPrimes(E) : GeomEC -> [ RngIntElt ]
Given an elliptic curve E defined over Q, return the sequence of primes dividing the minimal discriminant of E. These are the primes at which the minimal model for E has bad reduction; note that there may be other primes dividing the discriminant for the given model of E.
TamagawaNumber(E, p) : GeomEC -> RngIntElt
Given an elliptic curve E, defined over Q and a prime number p, this function returns the local Tamagawa number of E at p, which is the index in E[Q_p] of the subgroup E^0[Q_p] consisting of points with non-singular reduction modulo p. For any integer p that is not a bad prime for E, this function returns simply 1.
TamagawaNumbers(E) : GeomEC -> [ RngIntElt ]
Given an elliptic curve E defined over Q, this function returns the sequence of Tamagawa numbers at each of the bad primes of E, as defined above.
LocalInformation(E, p) : GeomEC, RgIntElt -> < RngIntElt, RngIntElt, RngIntElt, RngIntElt, KodSym>
Given an elliptic curve E defined over Q and a prime number p, this function returns the local information at the prime p as a 5-tuple, consisting of p, its multiplicity in the discriminant, its multiplicity in the conductor, the Tamagawa number at p and the Kodaira symbol.
LocalInformation(E) : GeomEC, RgIntElt -> [ Tup ]RngIntElt, KodSym>
Given an elliptic curve E this function returns a sequence of tuples, each of which contains the local information at a bad prime. The tuples consist of a bad prime p, its multiplicity in the discriminant, its multiplicity in the conductor, the Tamagawa number at p and the Kodaira symbol.

Mordell-Weil group

The Mordell-Weil group of an elliptic curve over the rationals is the finitely generated group of points with rational coordinates. As is customary in cases of this kind, the functions return an abstract group together with a map from that group to (the points on) the curve.

MordellWeilGroup(E) : GeomEC -> GrpAb, Map
Compute the Mordell-Weil group of an elliptic curve E defined over Q. The function returns two values: 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.
TorsionSubgroup(E) : GeomEC -> GrpAb, Map
Given an elliptic curve E defined over Q, this function returns an abelian group A isomorphic to the finite part of the Mordell-Weil group, as well as a map from the abstract group A to the elliptic curve providing the isomorphism. The generators are given in order of non-decreasing order.
Generators(E) : GeomEC -> [ GeomECElt ]
Given an elliptic curve E defined over Q, this function returns generators for the Mordell-Weil group of E, in the form of a sequence of points of E. The i-th element of the sequence corresponds to the i-th generator of the group as returned by the function Mordell-Weil.

Example Elcu_MordellWeil (H46E3)

> E := EllipticCurve([73, 0]);
> print E;
Elliptic Curve defined by y^2 = x^3 + 73*x over Rational Field
> M, mp := MordellWeilGroup(E);
> print M;
Abelian Group isomorphic to Z/2 + Z + Z
Defined on 3 generators
Relations:
    2*M.1 = 0
> P0 := mp(M.1);
> P1 := mp(M.2);
> P2 := mp(M.3);
> print P0, P1, P2;
(0, 0, 1) (36, 222, 1) (657/4, 16863/8, 1)
> print Order(P0);
2
> print Factorization(Integers() ! Discriminant(E));
[ <2, 6>, <73, 3> ]
> print BadPrimes(E);
[ 2, 73 ]
> print LocalInformation(E);
[ <2, 6, 6, 1, II>, <73, 3, 2, 2, III> ]

Predicates and Boolean Operators

IsIsomorphic(E, F) : GeomEC, GeomEC -> BoolElt
Given two elliptic curves E and F defined over Q, this function returns true if an isomorphism phi between E and F over Q exists, and false otherwise. If E and F are isomorphic, phi is returned as a second value.
E eq F : GeomEC, GeomEC -> BoolElt
True if and only if E and F are identical; that is, they are defined over the same ring R and have the same coefficients.
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]