#7576: improvements to the prove_BSD function
-------------------------------+--------------------------------------------
Reporter: rlm | Owner: cremona
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-4.3.1
Component: elliptic curves | Keywords:
Work_issues: | Author: Robert Miller
Upstream: N/A | Reviewer:
Merged: |
-------------------------------+--------------------------------------------
Changes (by was):
* status: needs_review => needs_work
Comment:
REFEREE REPORT:
1. For proper Sphinx the indention has to be consistent. Your docstring is
wrong:
{{{
INPUT:
- ``verbosity`` - int, how much information about the proof to
print.
- 0 - print nothing
- 1 - print sketch of proof
- 2 - print information about remaining primes
- ``simon`` - bool (default False), whether to use two_descent
or
simon_two_descent at p=2.
- ``proof`` - bool or None (default: None, see
proof.elliptic_curve or sage.structure.proof). If False,
this
function just immediately returns the empty list.
- ``secs_hi`` - how many seconds to try to compute the Heegner
index
before switching over to trying to compute the Heegner index
bound.
(Rank 0 only!)
}}}
E.g., the proof one should be:
{{{
- ``proof`` - bool or None (default: None, see
proof.elliptic_curve or sage.structure.proof). If False,
this
function just immediately returns the empty list.
}}}
I find it useful to try making a simple function with the given docstring
in the notebook, then evaluate and introspect that, to see what Sphinx
does.
2. {{{``secs_hi`` - how many seconds to try to compute the Heegner
index}}} -- change "how many seconds" to "maximum number of seconds",
which is more precise.
3. Add something to the verbose output when secs_hi interrupts a
calculation.
4. Once you have 3, add an example that illustrates it.
5. Unfortunately, evidently hitting control-c doesn't work for some
reason:
{{{
for E in cremona_optimal_curves([1..1000]):
if E.rank() == 0:
print E.label(), E.prove_BSD(secs_hi=0.1, verbosity=1)
....
<try hitting control-c -- ignored. :-(>
....
}}}
This might be related to how you setup the alarm. It's hard to tell.
6. The multiple uses of D here seems potentially confusing:
{{{
5993 for D in
self.heegner_discriminants_list(100):
5994 heegner_primes, D =
self.heegner_index_bound(D, verbose=False)
5995 if isinstance(heegner_primes, list):
5996 break
}}}
Also, the above hard-coded 100 makes me a little nervous. What happens if
we go through the whole list of 100 and don't find one that works?
(Highly unlikely in practice, of course.) Then we think the last one we
looked at does work. Not good.
7. What is the point of this line?:
{{{
6157 print ' ord_p(#Sha) >= 0'
}}}
It's trivial that {{{ord_p(#Sha)>=0}}}, since {{{#Sha}}} is an integer,
and {{{ord_p(n)>=0}}} for any integer n.
8. In the docstring you should give precise references for the results
you're using later. E.g., instead of just "by Jetchev", you could explain
that this means "by Theorem xyz" in his Compositio paper xxx. "by Mazur"
you mean theorem blah of blah, etc. This could just go in the docstring,
not the actual output (your choice).
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7576#comment:3>
Sage <http://www.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.