#6958: [with patch, positive review] prove_BSD function for elliptic curves over
QQ
-----------------------------+----------------------------------------------
Reporter: rlm | Owner: davidloeffler
Type: enhancement | Status: new
Priority: major | Milestone: sage-4.1.2
Component: elliptic curves | Keywords:
Reviewer: | Author: Robert Miller
Merged: |
-----------------------------+----------------------------------------------
Comment(by was):
Given the nature of this function, i.e., it should never raise an
exception with the default inputs, I think it should run successfully for
all curves of conductor up to 100 (say) before getting into Sage. It
fails already on 11a2.
{{{
for E in cremona_curves([1..100]+[389]):
print E.cremona_label(), E.prove_BSD(verbosity=2)
}}}
{{{
11a1 p = 2: true by 2-descent
True for p not in {2, 5} by Kolyvagin.
True for p=5 by Mazur
[]
11a2 p = 2: true by 2-descent
True for p not in {2, 5} by Kolyvagin.
---------------------------------------------------------------------------
AssertionError Traceback (most recent call
last)
/Users/wstein/.sage/temp/flat.local/1342/_Users_wstein__sage_init_sage_0.py
in <module>()
/Users/wstein/sage/build/64bit/sage/local/lib/python2.6/site-
packages/sage/schemes/elliptic_curves/ell_rational_field.pyc in
prove_BSD(self, verbosity, simon, proof)
5270 # Kato's bound
5271 if rank == 0 and not E.has_cm():
-> 5272 assert E.optimal_curve() == E
5273 L_over_Omega = E.lseries().L_ratio()
5274 kato_primes = Sha.bound_kato()
AssertionError:
}}}
Also, I think the fix for the above is to just switch to the optimal
curve.
OK, done by changing the code that raises the error to:
{{{
# We can replace E by the corresponding optimal curve without
changing truth
# of BSD at p.
E = E.optimal_curve()
}}}
A quicker test once we always first switch to the optimal curve is to do:
{{{
for E in cremona_optimal_curves([1..100]):
print E.cremona_label()
try:
E.prove_BSD(verbosity=2)
except Exception, msg:
print "** problem !!", msg
}}}
This test passes right now up to 91, then this hangs forever (=15
minutes):
{{{
90c1
p = 2: true by 2-descent
True for p not in {2, 3} by Kolyvagin.
...
}}}
With set_verbose(2) we see that:
{{{
True for p not in {2, 3} by Kolyvagin.
verbose 1 (6244: heegner.py, heegner_index) computing heegner point
height...
verbose 1 (6244: heegner.py, heegner_index) Height of heegner point =
41.383? (time = 0.195229)
verbose 1 (6244: heegner.py, heegner_index) Heegner height bound = 41.384
verbose 1 (6244: heegner.py, heegner_index) CPS bound = 8.48553581472
verbose 1 (6244: heegner.py, heegner_index) Search would have to be up to
height = 18.832
verbose 1 (6244: heegner.py, heegner_index) doing point search
...
}}}
so doing the index bound as a future patch is the way to go.
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/6958#comment:2>
Sage <http://sagemath.org/>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---