The BSD conjecture — working back to the order of a group not even known to be finite
We work back to the order of a group that is not even known to be finite.
What the problem is
For an elliptic curve E, the rank of the group of rational points (the algebraic rank) equals the order of vanishing of the L-function L(E,s) at s=1 (the analytic rank) — that is the BSD conjecture in its weak form. One of the Millennium Prize Problems.
The strong form goes further and writes the value of the L-function itself in terms of invariants of the curve.
|Ш| is the order of the Tate–Shafarevich group. Here is what is known about that group.
If the recovered value lands cleanly on an integer — better still, on a perfect square — that is a non-trivial check.
If BSD were false, this is a place where the value ought to fall off an integer.
How far the world has come
| Result | Who, when | What it says |
|---|---|---|
| A theorem for rank ≤ 1 | Gross–Zagier (1986), Kolyvagin (1988) | If the analytic rank is 0 or 1, both the weak and the strong form hold |
| Rank 2 and above is open | — | Not even the weak form is proved. This is where the numerical check in this article is aimed |
| Finiteness of |Ш| | — | Not proved in general. Conjecturally finite, with square order |
| Millennium Prize Problem | Clay Mathematics Institute (2000) | One million dollars |
What was done ① — recovering |Ш| for ranks 0 through 7
For each rank, the curve known to have the smallest conductor was taken, and |Ш| recovered.
| Rank | Curve | Conductor | |Ш| recovered | Time | Status of BSD |
|---|---|---|---|---|---|
| 0 | 11a1 | 11 | 1.0000000000000 | 0.0 s | theorem |
| 1 | 37a1 | 37 | 1.0000000000000 | 0.1 s | theorem (Kolyvagin) |
| 2 | 389a1 | 389 | 1.0000000000000 | 0.1 s | ★ open |
| 3 | 5077a1 | 5,077 | 1.0000000000000 | 0.1 s | ★ open |
| 4 | 234446a1 | 234,446 | 1.0000000000000 | 0.2 s | ★ open |
| 5 | 19047851a1 | 19,047,851 | 1.0000000000000 | 0.5 s | ★ open |
| 6 | 5187563742a1 | 5,187,563,742 | 1.0000000000000 | 8.3 s | ★ open |
| 7 | 382623908456a1 | 382,623,908,456 | 1.0000000000000 | 58.6 s | ★ open |
Rank 2 and above is out of range of Gross–Zagier–Kolyvagin. In territory where BSD is not a theorem, the value agreed with 1 to thirteen decimal places.
The conductor goes from 11 to 382.6 billion — a factor of 34.8 billion. The computation time still only goes from 0.1 s to 58.6 s, a factor of 586. That is because the cost of computing the L-function scales with the square root of the conductor.
Checking examples where |Ш| is not 1
If everything comes out as 1, a broken formula would go unnoticed. Curves with non-trivial Ш were checked as well.
| Curve | Conductor | Rank | |Ш| recovered | Literature |
|---|---|---|---|---|
| 571a1 | 571 | 0 | 4.0000000000000 | 4 |
| 681b1 | 681 | 0 | 9.0000000000000 | 9 |
4 and 9. Both perfect squares, both matching the literature. Confirmation that the formula does not simply return 1 for whatever you put in.
What was done ② — sweeping the weak form over 2,596 curves
The strong form is one curve at a time. The weak form (analytic rank = algebraic rank) can be pushed on by sheer number.
All combinations of |a|, |b| ≤ 25 in y² = x³ + ax + b were swept.
| Rank | Number of curves | Status of BSD |
|---|---|---|
| 0 | 896 | theorem |
| 1 | 1,326 | theorem |
| 2 | 361 | ★ open |
| 3 | 13 | ★ open |
| Disagreements: 0 / curves whose rank could not be determined: 0 | ||
374 curves have rank 2 or more — territory where BSD is not a theorem. It agreed there too.
What was done ③ — recording the holes fallen into
Computational holes — all three were of the form "the name does not match the contents"
The first implementation returned |Ш| = 1/18 for 37a1, a curve for which BSD is a theorem. Three errors were layered on top of one another.
| Error | What it was | Fix |
|---|---|---|
the points ellrank returns are not saturated | They only generate a subgroup of finite index. For 37a1 the index is 3 (height 0.4600 = 9 × 0.05111) | put them through ellsaturation |
elltamagawa includes the factor at the infinite place | The name suggests a product of Tamagawa numbers at finite places, but c∞ is in there. The real period was being doubled, so the same factor was counted twice | use the real period as E.omega[1], unmodified |
ellanalyticrank(E)[2] is not divided by r! | What comes back is L(r)(E,1) itself. It was off by exactly 2 at rank 2, exactly 6 at rank 3 | insert /r! |
The third one was the rescue. The discrepancies were 2 and 6 — factorials exactly — so the cause was obvious at once.
Had it stayed the ugly number 1/18, it would have taken a long while.
One PARI/GP pitfall while we are here. Inside a { … } block newlines are ignored, so a \\ comment swallows the whole rest of the block. That broke the first script outright (inside a block, use /* */).
A hole of my own — I made up curve labels three times
This is not a computational error but an error of transcription from memory. A curve label written from memory did not match the actual curve — and that happened three times.
| Label written | Actual conductor | Where it was caught |
|---|---|---|
2849a1 | 124,141,949,524,922 | found only after it had been put at the centre of another article |
2900d1 | 28,063,320 | caught right after the check was built into the script |
457532830151a1 | 249,649,566,346,838 | caught on the spot, in the middle of attempting rank 8 |
After the second time, the check went into the script. Pull the leading number off the label and compare it with the conductor returned by ellglobalred. If they disagree, throw the label away and print only the conductor.
The third time, this mechanism caught it on the spot. Which is why the rank 8 result is not in this article: no number has come out that is entitled to be here.
Before writing, I was confident all three times.
What works is only this: writing a mechanism that does not trust memory, and applying it to the one who wrote it.
Every label in the table for ranks 0–7 has been through this check.
What remains
What this check does and does not say
| Content | |
|---|---|
| can say | For ranks 0–7, the |Ш| demanded by the strong form of BSD agreed with an integer to thirteen decimal places |
| can say | The weak form of BSD holds for 2,596 curves, 374 of them in territory where BSD is not a theorem |
| cannot say | That |Ш| is finite. The recovery only produces "the value it would have, assuming finiteness" |
| cannot say | This is evidence, not proof. It is information of the form "a place that ought to be broken if the conjecture were false is not broken" |
| could not do | Rank 8. The coefficients were written from memory and turned out to be a different curve (above) |
Something written in another article applies here too. Mertens' conjecture looked true up to 10¹⁴ and was false. Thirteen digits of agreement carry thirteen digits' worth of information.
What to take up next
Where each of these open items now stands is collected in What remains.
| Open item | Where it stands |
|---|---|
| Rank 8 | The coefficients were written from memory and became a different curve (actual conductor 249,649,566,346,838). With the right coefficients taken from a primary source, the same machinery should just run |
| Curves with large |Ш| | Only 1, 4 and 9 were checked here. Whether the formula holds for larger squares (25, 49, …) would be a stronger check |
| Widening the sweep | 2,596 curves at |a|,|b| ≤ 25. Widening it until rank 4 and above appears would enlarge the sample in the open territory |
Sources and reproduction
| Item | Kind | Source / tool |
|---|---|---|
| The strong BSD formula | conjecture | Birch–Swinnerton-Dyer / Tate |
| BSD for rank ≤ 1 | theorem | Gross–Zagier, Kolyvagin |
| Curves of smallest conductor at each rank | known | Published records. Labels verified against the conductor |
| Recovery of |Ш| (ranks 0–7) | computed on this machine | PARI/GP 2.15.4, 40-digit precision |
| The sweep over 2,596 curves | computed on this machine | PARI/GP, ellrank and ellanalyticrank |
There is no new mathematics in this article. Numerical verification of strong BSD is standard work. What this article did was to run it up to rank 7 on my own machine, and to record the holes fallen into and the labels got wrong.
The rank 7 curve has a conductor of 382.6 billion, and evaluating its L-function takes 58 seconds. The 1.0000000000000 that comes out at the end of that is not evidence that the conjecture is true. It is that a place which ought to be broken if the conjecture were false is not broken — that is the shape of the information. Evidence and not-being-broken are different things.