Package sage :: Package libs :: Package mwrank :: Module interface :: Class mwrank_EllipticCurve
[hide private]
[frames] | no frames]

Class mwrank_EllipticCurve

source code

                      object --+    
                               |    
structure.sage_object.SageObject --+
                                   |
                                  mwrank_EllipticCurve


The \class{mwrank_EllipticCurve} class represents an MWRANK
elliptic curve.



Instance Methods [hide private]
 
__init__(self, ainvs, verbose=False)
Create the mwrank elliptic curve with invariants \code{a_invs}, which is a list of $\leq 5$ \emph{integers} $a_1$, $a_2$, $a_3$, $a_4$, and $a_6$.
source code
 
__reduce__(self)
helper for pickle
source code
 
set_verbose(self, verbose)
Set the verbosity of printing of output by the 2-descent and other functions.
source code
 
_curve_data(self) source code
 
ainvs(self) source code
 
isogeny_class(self, verbose=False) source code
 
__repr__(self)
File: sage/structure/sage_object.pyx (starting at line 86)
source code
 
two_descent(self, verbose=True, selmer_only=False, first_limit=20, second_limit=8, n_aux=-1, second_descent=True)
Compute 2-descent data for this curve.
source code
 
__two_descent_data(self) source code
 
conductor(self)
Return the conductor of this curve, computed using Cremona's implementation of Tate's algorithm.
source code
 
rank(self)
Returns the rank of this curve, computed using 2-descent.
source code
 
selmer_rank_bound(self)
Bound on the rank of the curve, computed using the 2-selmer group.
source code
 
regulator(self)
Return the regulator of the saturated Mordell-Weil group.
source code
 
saturate(self, bound=-1)
Compute the saturation of the Mordell-Weil group at all primes up to bound.
source code
 
gens(self)
Return a list of the generators for the Mordell-Weil group.
source code
 
certain(self)
True if the last \method{two_descent} call provably correctly computed the rank.
source code
 
CPS_height_bound(self)
Return the Cremona-Prickett-Siksek height bound.
source code
 
silverman_bound(self)
Return the Silverman height bound.
source code

Inherited from structure.sage_object.SageObject: __hash__, __new__, _axiom_, _axiom_init_, _gap_, _gap_init_, _gp_, _gp_init_, _interface_, _interface_init_, _interface_is_cached_, _kash_, _kash_init_, _macaulay2_, _macaulay2_init_, _magma_, _magma_init_, _maple_, _maple_init_, _mathematica_, _mathematica_init_, _maxima_, _maxima_init_, _octave_, _octave_init_, _pari_, _pari_init_, _r_init_, _sage_, _singular_, _singular_init_, category, db, dump, dumps, plot, rename, reset_name, save, version

Inherited from object: __delattr__, __getattribute__, __reduce_ex__, __setattr__, __str__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, ainvs, verbose=False)
(Constructor)

source code 

Create the mwrank elliptic curve with invariants
\code{a_invs}, which is a list of $\leq 5$ \emph{integers}  $a_1$,
$a_2$, $a_3$, $a_4$, and $a_6$.

If strictly less than 5 invariants are given, then the first
ones are set to 0, so, e.g., \code{[3,4]} means $a_1=a_2=a_3=0$ and
$a_4=3$, $a_6=4$.

INPUT:
    ainvs  --  a list of <= 5 integers
    verbose -- if True, then all Selmer group computations
               will be verbose. (default: False).
               
EXAMPLES:
We create the elliptic curve $y^2 + y = x^3 + x^2 - 2x$.

    sage: e = mwrank_EllipticCurve([0, 1, 1, -2, 0])
    sage: e.ainvs()
    [0, 1, 1, -2, 0]

This example illustrates that omitted $a$-invariants default to $0$:
    sage: e = mwrank_EllipticCurve([3, -4])
    sage: e
    y^2 = x^3 + 3*x - 4
    sage: e.ainvs()
    [0, 0, 0, 3, -4]

The entries of the input list are coerced to \class{int}.
This has the effect that for float input, the integer parts of
the input coefficients are taken.
    sage: e = mwrank_EllipticCurve([3, float(-4.8)]); e
    y^2 = x^3 + 3*x - 4

When you enter a singular model you get an exception:
    sage: e = mwrank_EllipticCurve([0, 0])
    Traceback (most recent call last):
    ...
    ArithmeticError: Invariants (= [0, 0, 0, 0, 0]) do not describe an elliptic curve.

Overrides: object.__init__

__reduce__(self)

source code 
helper for pickle

Overrides: object.__reduce__
(inherited documentation)

set_verbose(self, verbose)

source code 

Set the verbosity of printing of output by the 2-descent and
other functions.
INPUT:
    verbosity -- bool; if True print lots of output

__repr__(self)
(Representation operator)

source code 
File: sage/structure/sage_object.pyx (starting at line 86)

Overrides: structure.sage_object.SageObject.__repr__
(inherited documentation)

two_descent(self, verbose=True, selmer_only=False, first_limit=20, second_limit=8, n_aux=-1, second_descent=True)

source code 

Compute 2-descent data for this curve.

INPUT:
    verbose     -- (default: True) print what mwrank is doing
    selmer_only -- (default: False) selmer_only switch
    first_limit -- (default: 20) firstlim is bound on |x|+|z|
    second_limit-- (default: 5)  secondlim is bound on log max {|x|,|z| },
                                 i.e. logarithmic
    n_aux       -- (default: -1) n_aux only relevant for general
                   2-descent when 2-torsion trivial; n_aux=-1 causes default
                   to be used (depends on method)
    second_descent -- (default: True) second_descent only relevant for
                   descent via 2-isogeny
OUTPUT:
    Nothing -- nothing is returned

conductor(self)

source code 

Return the conductor of this curve, computed using Cremona's
implementation of Tate's algorithm.

NOTE: This is independent of PARI's.

selmer_rank_bound(self)

source code 

Bound on the rank of the curve, computed using the 2-selmer
group.  This is the rank of the curve minus the rank of the
2-torsion, minus a number determined by whatever mwrank was
able to determine related to $\Sha(E)[2]$ (e.g., using a
second descent or if there is a rational $2$-torsion point,
then there may be an isogeny to a curve with trivial
$\Sha(E)$).  In many cases, this is the actual rank of the
curve, but in general it is just $\geq$ the true rank.

EXAMPLES:
The following is the curve 960D1, which has rank 0,
but Sha of order 4.

    sage: E = mwrank_EllipticCurve([0, -1, 0, -900, -10098])
    sage: E.selmer_rank_bound()
    0

In this case this was resolved using a second descent.

    sage: E = mwrank_EllipticCurve([0, -1, 0, -900, -10098])
    sage: E.two_descent(second_descent = False, verbose=False)
    sage: E.selmer_rank_bound()
    2
    
Above, the \method{selmer_rank_bound} gives 0 instead of 2,
because it knows Sha is nontrivial.  In contrast, for the
curve 571A, also with rank 0 and $\Sha$ of order 4, we obtain
a worse bound:

    sage: E = mwrank_EllipticCurve([0, -1, 1, -929, -10595])
    sage: E.selmer_rank_bound()
    2
    sage: E.rank()
    0

regulator(self)

source code 

Return the regulator of the saturated Mordell-Weil group.

    sage: E = mwrank_EllipticCurve([0, 0, 1, -1, 0])
    sage: E.regulator()
    0.05111140823996884

saturate(self, bound=-1)

source code 

Compute the saturation of the Mordell-Weil group at all
primes up to bound.

INPUT:
    bound -- int (default: -1)   -1 saturate at *all* primes,
                                  0 -- do not saturate
                                  n -- saturate at least at all primes <= n.

certain(self)

source code 

True if the last \method{two_descent} call provably correctly
computed the rank.  If \method{two_descent} hasn't been
called, then it is first called by \method{certain}
using the default parameters.

EXAMPLES:
A $2$-descent does not determine $E(\Q)$ with certainty 
for the curve $y^2 + y = x^3 - x^2 - 120x - 2183$.

    sage: E = mwrank_EllipticCurve([0, -1, 1, -120, -2183])
    sage: E.two_descent(False)
    ...
    sage: E.certain()
    False
    sage: E.rank()   
    0

The rank of $E$is actually 0 (as one could see by computing
the L-function), but $\Sha$ has order 4 and the $2$-torsion is
trivial, so mwrank does not conclusively determine the rank.

    sage: E.selmer_rank_bound()
    2

CPS_height_bound(self)

source code 

Return the Cremona-Prickett-Siksek height bound.  This is a
floating point number $B$ such that if $P$ is a point on the curve,
then the naive logarithmetic height of $P$ is off from the
canonical height by at most $B$.

\begin{notice}
We assume the model is minimal!
\end{notice}

silverman_bound(self)

source code 

Return the Silverman height bound.  This is a number $B$ such
that if $P$ is a point on the curve, then the naive
logarithmetic height of $P$ is off from the canonical height by
at most $B$.

\begin{notice}
We assume the model is minimal!
\end{notice}