sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.23k stars 430 forks source link

Add proof=False and proof=True flags analytic_rank() #11023

Open 0696ee0e-d321-4676-b19e-a37806b3200e opened 13 years ago

0696ee0e-d321-4676-b19e-a37806b3200e commented 13 years ago

If the analytic rank of an elliptic curve over QQ is computed to be 0, it is a theorem that the algebraic rank is 0, and we can set the generators to be []. This is not done.

sage: E=EllipticCurve([1, 0, 0, -1319539461660, -159402536950172400])
sage: E.analytic_rank()
0
sage: E.rank()
BOOM!
RuntimeError: Rank not provably correct.

I suppose because analytic_rank() returns an integer that is probably the analytic rank, not provably the analytic rank. For example:

sage: EllipticCurve([0,0,1,-7,36]).analytic_rank()
4

We should keep the current implementation under a flag of proof=False, and see how much can be said for proof=True. It seems like we should at least be able to prove that a curve of smallish conductor has analytic rank 0 without too much trouble.

CC: @JohnCremona @williamstein

Component: elliptic curves

Keywords: rank, gens

Issue created by migration from https://trac.sagemath.org/ticket/11023

0696ee0e-d321-4676-b19e-a37806b3200e commented 13 years ago

Description changed:

--- 
+++ 
@@ -6,16 +6,16 @@
 sage: E.analytic_rank()
 0
 sage: E.rank()
-Unable to compute the rank with certainty (lower bound=0).
-This could be because Sha(E/Q)[2] is nontrivial.
-Try calling something like two_descent(second_limit=13) on the
-curve then trying this command again.  You could also try rank
-with only_use_mwrank=False.
----------------------------------------------------------------------------
 BOOM!
+RuntimeError: Rank not provably correct.
+```

-RuntimeError: Rank not provably correct.
+I suppose because analytic_rank() returns an integer that is *probably* the analytic rank, not *provably* the analytic rank. For example:

+sage: EllipticCurve([0,0,1,-7,36]).analytic_rank() +4 +```

-We could also set the rank to 1 if the analytic rank is provably 1, but it seems customary only to set the rank when we can also set the generators, so that shouldn't be done until improved Heegner point functionality is available. +We should keep the current implementation under a flag of proof=False, and see how much can be said for proof=True. It seems like we should at least be able to prove that a curve of smallish conductor has analytic rank 0 without too much trouble. +

0696ee0e-d321-4676-b19e-a37806b3200e commented 13 years ago
comment:2

Ooops! I misread the documentation, which says that analytic_rank returns an integer that is probably the analytic rank of E, as opposed to provably.

Perhaps the documentation should be changed to make this clearer. The letters b and v are right next to each other on the keyboard.

Much like #1848 we should probably put a proof=False flag here with the current implementation and try to run something as provable as possible for a proof=True. It seems reasonable that this could be done at least in the case of analytic rank 0.