Loading [MathJax]/jax/output/HTML-CSS/jax.js
The Riemann Hypothesis and The Birch and Swinnerton-Dyer Conjecture
or
Counting Prime Numbers and Counting Points on Cubic Curves
by William Stein
Feb 10, 2017
SageMath, Inc. and University of Washington (Seattle)
Screencast: https://youtu.be/NrIuFh8OV7s
Video: https://youtu.be/oHyelBHHhAQ
prime_range(10000)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, 4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, 6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, 8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, 9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973]
@interact
def _(B=20):
print prime_range(B)
Question: How are the prime numbers distributed amongst all numbers?
Consider the “Staircase of Primes”:
π(x)=#{p prime with p≤x}
plot(prime_pi, 0, 100000)
def staircase(B, d=75):
g = plot(prime_pi, 0, B, gridlines=True)
g += points([(p,0) for p in prime_range(B+1)], color='red', pointsize=d)
show(g)
staircase(25)
staircase(100)
staircase(1000, 20)
Up close, distribution of primes look very unpredictable.
- Sometimes their are twin primes (infinitely many? – we don’t know; but Zhang et al. have made massive progress recently)
- Sometimes there are very big gaps
prime_range(1990, 2050)
[1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039]
But from a distance things look shockingly clean:
plot(prime_pi, 0, 6*10^6)
The nice clean smooth-from-a-distance plot is just begging to be understood.
This is what RH is about.
The Prime Number Theorem:
π(x)∼x/log(x)
So how about:
A first guess:
The above plot “is basically” x/log(x).
(Issue: how can we decide if we are right or wrong?)
@interact
def _(B=100):
show( plot(prime_pi, 0, B) + plot(x/log(x), (2,B), color='red') )
float(prime_pi(10^8)/(10^8/log(10^8)))
float(prime_pi(10^9)/(10^9/log(10^9)))
float(prime_pi(10^10)/(10^10/log(10^10)))
1.0612992317564809
1.053726964235171
1.047797128358109
g = plot(prime_pi, 0, 10^6)
g += plot(x/(log(x)-1), 3, 10^6, color='red')
show(g)
B = 10^10
prime_pi(B), float(B/(log(B)-1))
(455052511, 454011971.2880956)
However, x/(log(x)−1) is much better (it’s the best you can get):
@interact
def _(B=100):
show( plot(prime_pi, 0, B) + plot(x/(log(x)-1), (3,B), color='red') )
Second guess:
The above plot of π(x) “is basically” the (offset) Logarithmic integral
Li(x)=∫x2dtlog(t).
@interact
def _(B=100):
show( plot(prime_pi, 0, B) + plot(Li, (2,B), color='red') + plot(x/(log(x)-1), (4,B), color='green'))
B = 10^10
prime_pi(B), float(B/(log(B)-1)), float(Li(B))
(455052511, 454011971.2880956, 455055613.5414593)
The Riemann Hypothesis: |π(x)−Li(x)|≤√x⋅log(x)
Basically, if you compute π(x) and Li(x) for large values of x,
then the first half of the digits will be the same.
The above is equivalent to the million dollar Clay Math Institute problem.
prime_pi(10^10)
float(10^10/log(10^10))
float(Li(10^10))
Why? Imagine adding a little “random walk” to π(x) with step size of 1.
Its expected size after x steps would be roughly √x. In fact, assuming RH,
π(x)=Li(x)+lower order highly-oscillatory terms involving zeros of ζ(s)
where
ζ(s)=∏p11−p−s
plot(lambda x: prime_pi(x) - Li(x), 2, 10000)
g = complex_plot(zeta, (0, 1), (1,50))
g + points([[1/2,z] for z in zeta_zeros()[:10]], pointsize=40, color='black', zorder=10)
A generalization of ζ(s)=∏p11−p−s.
A congruent number is an integer that is the area of a right triangle with
rational side lengths.
The Congruent Number Problem: Give an algorithm to decide whether or
not an integer n is a congruent number.
“The congruent number problem, the written history of which can be traced back at least a millennium, is the oldest unsolved major problem in number theory, and perhaps in the whole of mathematics.” – John Coates
a = 3; b = 4; c = 5
a^2 + b^2 == c^2
1/2 * a * b
True
6
(Easy) Theorem: An integer n is a congruent number if and only if the cubic curve
En:y2=x3−n2x
has infinitely many rational solutions.
The proof is to just setup a bijection between non-torsion points on the curve, and rational right
triangles with area n:

E = EllipticCurve([-6^2,0])
show(E)
plot(E)
E.rank()
1
P = E.gens()[0]; P
(-3 : 9 : 1)
congnum(n, x, y) = ((x^2-n^2)/y, 2*n*x/y, (x^2+n^2)/y)
congnum(6, -3, 9)
(-3, -4, 5)
The set of points on an elliptic curve forms an abelian group…
P + P + P + P + P + P + P
(-583552361658258723/4023041763448204561 : -18433964971574382270849196761/8069224743013821217381442809 : 1)
[a,b,c] = congnum(6, -583552361658258723/4023041763448204561, -18433964971574382270849196761/8069224743013821217381442809)
a,b,c
(13932152355102290403/884619602260392601, 3538478409041570404/4644050785034096801, -64777297161660083702224674830494320965/4108218358333926731621213541698169401)
1/2*a*b
6
a^2 + b^2
c^2
4196098227570015536181717307056998500537202867254564476717797975116438531225/16877458079751904022257924210576462032214437173909499515113558394492698801
4196098227570015536181717307056998500537202867254564476717797975116438531225/16877458079751904022257924210576462032214437173909499515113558394492698801
But how can we tell whether or not the elliptic curve En given by y2=x3−n2x has infinitely
many solutions?
This is where the generalization of ζ(s) and the Birch and Swinnerton-Dyer conjecture comes in.
Let
L(En,s)=∏11−app−s+p1−2s,
where the product is over primes p∤2n and
ap=p+1−#E(Fp)
is how close the E is to having exactly p+1 solution modulo p.
E6 = EllipticCurve([-6^2,0])
show(E6)
E6.aplist(50)
[0, 0, -2, 0, 0, -6, -2, 0, 0, -10, 0, 2, -10, 0, 0]
EllipticCurve([-3^2,0]).aplist(50)
[0, 0, 2, 0, 0, 6, -2, 0, 0, 10, 0, -2, -10, 0, 0]
EllipticCurve([-5^2,0]).aplist(50)
[0, 0, 0, 0, 0, -6, -2, 0, 0, -10, 0, 2, 10, 0, 0]
set_verbose(-2)
L = E6.lseries()
%time complex_plot(L, (0,2), (-4,4), plot_points=15)
L(1)
Let E:y2=x3+AX+B be an elliptic curve.
Conjecture (Birch and Swinnerton-Dyer): L(E,1)=0 if and only if E(Q) is infinite. More precisely, the million dollar Clay Math Institute question is:
E(Q)≈Zr+{easy finite group},
where r=ords=1L(E,s).
- Choose a positive integer n.
- Determine whether or not it is a congruent number.
- Depending on n say what we know for sure (hence brining in theorems…)
n = 2018
E = EllipticCurve([-2018^2,0])
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.
Error in lines 1-1
Traceback (most recent call last):
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 982, in execute
exec compile(block+'\n', '', 'single') in namespace, locals
File "", line 1, in
File "/projects/sage/sage-7.5/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 2088, in rank
raise RuntimeError('Rank not provably correct.')
RuntimeError: Rank not provably correct.
L = E.lseries()
L.taylor_series()
1.86780536111856 - 12.2921463048870*z + 96.8423130460936*z^2 - 459.117778433146*z^3 + 1533.27766138128*z^4 - 3957.21363408321*z^5 + O(z^6)
%var A, B
EllipticCurve([A,B])
Elliptic Curve defined by y^2 = x^3 + A*x + B over Symbolic Ring
E.rank()
0
There is also a generalization of the Riemann Hypothesis for L(E,s).
RH for E: The nontrivial zeros of L(E,s) all lie on the line Re(s)=1.
It might have a similar interpretation like our bound on |π(x)−Li(s)|.
This is a subject of active investigation by Barry Mazur, Peter Sarnak, and I.
And let me leave you with a very specific unsolved problem.
Open Problem: Prove there is an elliptic curve E such that ords=1L(E,s)=4.
Here is the simplest candidate:
E = elliptic_curves.rank(4)[0]
E.conductor()
E.rank()
234446
4
E
Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 79*x + 289 over Rational Field
L = E.lseries()
L.taylor_series()
6.11756737403338e-24 + (-2.30473083385553e-23)*z + (-4.12120024296914e-22)*z^2 + (1.66411019119833e-21)*z^3 + 8.94384739590089*z^4 - 33.6950287693207*z^5 + O(z^6)
E.rank()
4
E.gens()
[(4 : 3 : 1), (5 : -2 : 1), (6 : -1 : 1), (8 : 7 : 1)]
Numerically, it looks clear that ords=1L(E,s)=4. However, it is so far impossibly difficult to prove that those numbers that numerically look like 0 in the series above actually are 0.