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.
The ring over which E was defined, that is, the parent of its coefficients.
The function field of the elliptic curve E : y^2 = f(x) over a ring R, constructed as the field of fractions of the co-ordinate ring R[x, y] / (y^2 - f(x)). If R is a field, then the function field of E is canonically isomorphic to the field of rational functions E -> P^1, where P^1 is the 1-dimensional projective space over R.
> E := EllipticCurve([RationalField() | 1, -2, 3, -4, 5]); > a1, a2, a3, a4, a6 := Explode(aInvariants(E)); > R := BaseRing(E); > Px<x> := FunctionField(R); // The rational function field over R > Py<Y> := PolynomialRing(Px); > F<y> := quo<Py | Y^2 + (a1*x + a3)*Y - (x^3 + a2*x^2 + a4*x + a6)>; > two_torsion := 2*y + a1*x + a3; > two_torsion; 2*y + x + 3 > two_torsion^2; 4*x^3 - 7*x^2 - 10*x + 29
Given an elliptic curve E defined over a field F together with a surjective map h:K -> F, return an elliptic E' defined over K obtained by pulling back the coefficients of E through h. Note that the resulting curve is not unique.
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.
> FF1<w1> := GF(23); > FF2<w2> := GF(23,2); > f := hom<FF2 -> FF1 | w1 >; > E1 := EllipticCurve([FF1 | 1,1]); > E2 := EllipticCurve([FF2 | 1,1]); > assert E1 eq BaseExtend(E2, FF1); > assert E1 eq BaseExtend(E2, f); > assert E2 eq Lift(E1, FF2); > assert E2 eq ChangeRing(E1, FF2);
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.
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.
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.
> EE := EllipticCurve([1/2, 1/2, 1, 1/3, 4]); > 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); > 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); > ME; Elliptic Curve defined by y^2 + x*y + y = x^3 - x^2 + 619*x + 193645 over Rational Field > ma; Mapping from: CurveEll: IE to CurveEll: ME Taking (x, y, 1) to (x + 7, y + x + 104, 1) > mb; Mapping from: CurveEll: ME to CurveEll: IE Taking (x, y, 1) to (x - 7, y - x - 97, 1) > WE := EllipticCurve(Weierstrass(EE)); > WE; Elliptic Curve defined by y^2 = x^3 + 9909/16*x + 6201603/32 over Rational Field > IWE := IntegralModel(WE); > IWE; Elliptic Curve defined by y^2 = x^3 + 649396224*x + 208091266154496 over Rational Field > IsIsomorphic(IWE, ME); true Mapping from: CurveEll: IWE to CurveEll: ME Taking (x, y, 1) to (1/1024*x + 1/4, 1/32768*y - 1/2048*x - 5/8, 1)
Given an elliptic curve E defined over a finite field, returns a simplified model E' for E, together with isomorphisms E -> E' and E' -> E. See Ian Connell's "The Elliptic Curve Handbook" for the definition of a simplified model.
aInvariants(E) : CurveEll -> [ 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).
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 byb_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.
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 byc_4 = b_2^2 - 24b_4 c_6 = -b_2^3 + 36b_2b_4 - 216b_6.
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.
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.
Returns the nth division polynomial.
Returns: (i) a multivariate polynomial in x and y defining the two-torsion subscheme of E; (ii) a univariate polynomial equal to the square of the first value in the function field; this can be used to define a subgroup representing the two-torsion points of E.
> K := GF(101); > E := EllipticCurve([ K | 1, 1]); > D5 := DivisionPolynomial(E, 5); > Roots(D5); [ <86, 1>, <46, 1> ] > [ p : p in RationalPoints(E) | 5*p eq E!0 ]; [ (0, 1, 0), (86, 67, 1), (46, 25, 1), (86, 34, 1), (46, 76, 1) ]
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) : CurveEll -> RngIntElt
The conductor of the elliptic curve E defined over Q.
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.
Given an elliptic curve E defined over Q, this returns the rank of the Mordell-Weil group of E.
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.
Given an elliptic curve E defined over Q with integral coefficients, this returns the Silverman bound of E.
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.
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.
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.
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.
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.
Returns the zeta function for E at the prime p in the indeterminate q.
The L-series of E.
> E := EllipticCurve([1, 1]); > p := 5; > Q<q> := PowerSeriesRing(Rationals()); > Ep := Lift(E, GF(p)); > t := Trace(Ep); > Z1 := (1 - t*q + p*q^2)/((1- q)*(1 - p*q)); > Z2 := Log(Z1); > Z := q*Derivative(Z2); > Z; 9*q + 27*q^2 + 108*q^3 + 675*q^4 + 3069*q^5 + 15552*q^6 + 78633*q^7 + 389475*q^8 + 1954044*q^9 + 9768627*q^10 + 48814533*q^11 + 244166400*q^12 + 1220693769*q^13 + 6103414827*q^14 + 30517927308*q^15 + 152587347075*q^16 + 762939337869*q^17 + 3814700329152*q^18 + 19073477713833*q^19 + O(q^20)
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) : CurveEll -> 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.
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.
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.
> E := EllipticCurve([73, 0]); > E; Elliptic Curve defined by y^2 = x^3 + 73*x over Rational Field > M, mp := MordellWeilGroup(E); > 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); > P0, P1, P2; (0, 0, 1) (36, 222, 1) (657/4, 16863/8, 1) > Order(P0); 2 > Factorization(Integers() ! Discriminant(E)); [ <2, 6>, <73, 3> ] > BadPrimes(E); [ 2, 73 ] > LocalInformation(E); [ <2, 6, 6, 1, II>, <73, 3, 2, 2, III> ]
FF := GF(5); I := [ EllipticCurve([ FF | 0, 1]) ]; for a in FF do for b in FF do parameters := [FF | a, b]; if not IsEllipticCurve(parameters) then continue; end if; G := EllipticCurve([ FF | a, b]); match := false; for E in I do if IsIsomorphicFF(E, G) then match := true; break; end if; end for; if not match then Append( I, G); end if; end for; end for;
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.
Given two elliptic curves E and F defined over Q (respectively, a finite field F_q), this function returns true if an isomorphism phi between E and F over Q (resp F_q) exists, and false otherwise. If E and F are isomorphic, phi is returned as a second value.
Given two elliptic curves E and F defined over a finite field F_q, this function returns true if a non-trivial isogeny phi between E and F over F_q exists, and false otherwise.
Returns true iff E is a simplified model for the abstract elliptic curve.[Next] [Prev] [Right] [Left] [Up] [Index] [Root]