Navigation

You can define arbitrary algebraic varieties in Sage, but sometimes
nontrivial functionality is limited to rings over \(\QQ\) or
finite fields. For example, we compute the union of two affine
plane curves, then recover the curves as the irreducible components
of the union.

Elliptic curve functionality includes most of the elliptic curve
functionality of PARI, access to the data in Cremona’s online
tables (this requires an optional database package), the
functionality of mwrank, i.e., 2-descents with computation of the
full Mordell-Weil group, the SEA algorithm, computation of all
isogenies, much new code for curves over \(\QQ\), and some of Denis
Simon’s algebraic descent software.

The command EllipticCurve for creating an elliptic curve has many
forms:

where the \(a_i\)‘s are coerced into the parent of
\(a_1\). If all the \(a_i\) have parent \(\ZZ\), they are
coerced into \(\QQ\).

EllipticCurve([\(a_4\), \(a_6\)]): Same as above, but
\(a_1=a_2=a_3=0\).

EllipticCurve(label): Returns the elliptic curve over from the
Cremona database with the given (new!) Cremona label. The label is
a string, such as "11a" or "37b2". The letter must be lower
case (to distinguish it from the old labeling).

The pair \((0,0)\) is a point on the elliptic curve
\(E\) defined by \(y^2 +
y = x^3 - x\). To create this
point in Sage type E([0,0]). Sage can add points on such an
elliptic curve (recall elliptic curves support an additive group
structure where the point at infinity is the zero element and three
co-linear points on the curve add to zero):

The objects returned from the database are not of type
EllipticCurve. They are elements of a database and have a couple
of fields, and that’s it. There is a small version of Cremona’s
database, which is distributed by default with Sage, and contains
limited information about elliptic curves of conductor
\(\leq 10000\). There is also a large optional version, which
contains extensive data about all curves of conductor up to
\(120000\) (as of October 2005). There is also a huge (2GB)
optional database package for Sage that contains the hundreds of
millions of elliptic curves in the Stein-Watkins database.

It is also possible to compute the action of the Galois group
\(\text{Gal}(\QQ(\zeta_N)/\QQ)\) on these characters, as well
as the direct product decomposition corresponding to the
factorization of the modulus.

Here NumberField(x^4+1,'a') tells Sage to use the symbol “a” in
printing what K is (a Number Field in a with defining polynomial
\(x^4 + 1\)). The name “a” is undeclared at this point. Once
a=K.0 (or equivalently a=K.gen()) is evaluated, the symbol
“a” represents a root of the generating polynomial
\(x^4+1\).