#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
-~----------~----~----~----~------~----~------~--~---

Reply via email to