Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Project: Math 582b
Views: 2495

February 19, 2016: Elliptic curves (part 2)

William Stein

Review

EllipticCurve([1,2,3,4,5])
Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over Rational Field
E = EllipticCurve_from_j(2016) factor(E.conductor())
2^7 * 3^4 * 7^2
E.rank()
0
E.analytic_rank()
0
E.torsion_order()
1
E.analytic_rank_upper_bound()
0
︠3eeb5d29-6e3a-4ed4-b3d7-d6cff446e9eci︠ %md **Birch and Swinnerton-Dyer Conjecture:** For elliptic curves over $\QQ$ we have `E.analytic_rank() == E.rank()`

Birch and Swinnerton-Dyer Conjecture: For elliptic curves over Q\QQ we have E.analytic_rank() == E.rank()

︠c89481ad-ad99-4550-85d0-a687b34834b9i︠ %md **Exercise:** Verify (assuming that the output of Sage is correct...!) the above BSD rank conjecture for one elliptic curve of $j$-invariant equal each of $0,1,2,\ldots, 10$. If necessary, you may assume the (very deep) theorem that if the analytic rank is $0$ or $1$, then BSD rank is true...

Exercise: Verify (assuming that the output of Sage is correct...!) the above BSD rank conjecture for one elliptic curve of jj-invariant equal each of 0,1,2,,100,1,2,\ldots, 10.

If necessary, you may assume the (very deep) theorem that if the analytic rank is 00 or 11, then BSD rank is true...

# make a loop and run some functions... ︠9f0ca06a-abdc-48d6-b5bb-c576ef03d070︠ ︠03cef148-686c-4100-9653-bf685bba3dea︠ ︠bcaaba19-9450-4bfe-8e37-c1379c2be127︠ ︠8ec5d6c5-937e-410b-ac5d-edd4d090b693︠ ︠e9019265-9095-4234-910c-aa6a7e521438︠ ︠6e5ad789-7402-458c-9850-2f6c9b36a1fd︠ ︠b19b93d8-febf-4fef-9510-7fb6c77ade95︠ ︠749e5005-3a6f-444e-ab8c-9c4be4d0cb48︠ ︠31e442e3-50c7-4f70-a5e1-95fab6ee6a5e︠ ︠b33ed629-cf3c-4855-a7cc-7b5b16dc9093︠ ︠21058292-1f47-46f8-9fe7-ff856b481924i︠ %md ## 3. Tables of Elliptic Curves ### 3.1 Antwerp There is a long history of people making systematic tables of elliptic curves, starting in Belgium in the 1970s. - Antwerp: http://wstein.org/Tables/antwerp/index.html made using this computer. <img src='http://images.computerhistory.org/timeline/timeline_computers_1962.atlas.jpg' width=400> Look at http://wstein.org/Tables/antwerp/reliability/ about making these tables.

3. Tables of Elliptic Curves

3.1 Antwerp

There is a long history of people making systematic tables of elliptic curves, starting in Belgium in the 1970s.

Look at http://wstein.org/Tables/antwerp/reliability/ about making these tables.

3.2 Cremona's tables

Cremona has spent 25 years expanding the Antwerp tables approach. He now has every single elliptic curve up to conductor 370000, with extensive data about each. His tables are in Sage (they get regularly updated).

C = CremonaDatabase(); C
Cremona's database of elliptic curves with conductor at most 359999
C.number_of_curves()
2247187
C.number_of_isogeny_classes()
1569126
i = 0 for E in C: print E.conductor(), E.cremona_label(), E i += 1 if i > 10: break
11 11a1 Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field 11 11a2 Elliptic Curve defined by y^2 + y = x^3 - x^2 - 7820*x - 263580 over Rational Field 11 11a3 Elliptic Curve defined by y^2 + y = x^3 - x^2 over Rational Field 14 14a1 Elliptic Curve defined by y^2 + x*y + y = x^3 + 4*x - 6 over Rational Field 14 14a2 Elliptic Curve defined by y^2 + x*y + y = x^3 - 36*x - 70 over Rational Field 14 14a3 Elliptic Curve defined by y^2 + x*y + y = x^3 - 171*x - 874 over Rational Field 14 14a4 Elliptic Curve defined by y^2 + x*y + y = x^3 - x over Rational Field 14 14a5 Elliptic Curve defined by y^2 + x*y + y = x^3 - 2731*x - 55146 over Rational Field 14 14a6 Elliptic Curve defined by y^2 + x*y + y = x^3 - 11*x + 12 over Rational Field 15 15a1 Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 10*x - 10 over Rational Field 15 15a2 Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 135*x - 660 over Rational Field
︠3423c8f5-6c0b-4e21-843f-d8ec399973a5i︠ %md **Exercise:** Use Cremona's tables to determine how many distinct isomorphism classes of ellliptic curves have conductor 2016. Will there be any curves (of conductor 2017) next year?!

Exercise: Use Cremona's tables to determine how many distinct isomorphism classes of ellliptic curves have conductor 2016. Will there be any curves (of conductor 2017) next year?!

factor(2016)
2^5 * 3^2 * 7
# hint C[11]
{'allcurves': {'a1': [[0, -1, 1, -10, -20], 0, 5], 'a3': [[0, -1, 1, 0, 0], 0, 5], 'a2': [[0, -1, 1, -7820, -263580], 0, 1]}, 'allbsd': {'a1': [5, 1.26920930427955, 0.253841860855911, 1.0, 1], 'a3': [1, 6.34604652139777, 0.253841860855911, 1.0, 1], 'a2': [1, 0.253841860855911, 0.253841860855911, 1.0, 1]}, 'degphi': {'a1': 1}, 'allgens': {'a1': [], 'a3': [], 'a2': []}}
︠c6de6ee4-55bc-4d41-a395-99983c08f6c1︠ ︠263c4e4d-3663-4955-a0ce-332c68015ef5︠ ︠4395432a-68b9-4c9b-bee9-e990917ee40a︠ ︠debeb282-e408-4c50-9131-69e4633a3fea︠ ︠5acb6f88-9f88-4494-bed9-3630e156b96di︠ %md ### 3.3 Stein-Watkins tables In 2001 at Harvard... I started making large tables of elliptic curves by just writing down lots of curves. Mark Watkins got involved and wrote lots of very fast code. Together we made the SteinWatkins tables, which are a large table of curves of conductor up to $10^9$. We don't have all curves up to that bound -- just a lot. We also have curves of prime conductor up to some huge bound.

3.3 Stein-Watkins tables

In 2001 at Harvard... I started making large tables of elliptic curves by just writing down lots of curves. Mark Watkins got involved and wrote lots of very fast code. Together we made the SteinWatkins tables, which are a large table of curves of conductor up to 10910^9. We don't have all curves up to that bound -- just a lot. We also have curves of prime conductor up to some huge bound.

i = 0 for E in SteinWatkinsAllData(10): print E.curves print EllipticCurve(E.curves[0][0]).conductor() i += 1 if i > 5: break
[[[1, 1, 0, -63, -1539], '(3,6,1)', 'X', '1']] 1000002 [[[1, 1, 1, -1843618, 962738063], '[5,1,1]', '1', '1']] 1000002 [[[1, 1, 1, -567, -147], '[5,7,1]', '1', '1']] 1000002 [[[1, 0, 1, -364, -1366], '[9,3,1]', 'X', '1']] 1000002 [[[0, 1, 0, 10300, -1000108], '(8,6,1)', 'X', '1']] 1000004 [[[0, 1, 1, -831, -9475], '[3,3,1,1]', '1', '1']] 1000005
︠383a576e-c441-4b1b-8254-074d2653543f︠ ︠8ee15b74-0f4b-4800-b9be-2f16f98fea98︠ ︠fc5c760b-073a-4429-8846-75595af1131b︠ i = 0 for E in SteinWatkinsPrimeData(1): print E.curves print EllipticCurve(E.curves[0][0]).conductor() i += 1 if i > 5: break
[[[1, 0, 1, -472, -3951], '[1]', '1', '1']] 100000937 [[[0, -1, 1, 97, 280], '(1)', 'X', '1']] 100000963 [[[1, 0, 0, -75, 536], '(1)', 'X', '1']] 100001183 [[[1, 0, 0, -120, -167], '[1]', 'X', '1']] 100001399 [[[0, -1, 1, -22, 490], '(1)', 'X', '1']] 100002251 [[[0, 1, 1, -180, 738], '[1]', 'X', '1']] 100002629
︠3ae688a1-fa28-4648-832b-ee6a08556a6b︠ ︠f1af5570-9f95-426e-a89d-250cf34075e4︠ ︠244836b0-c987-4569-997f-264d6a67c8c9︠ ︠03e55c3a-825e-49b8-8d30-371639105c1bi︠ %md ### 3.4 New table: all 238,764,310 curves of naive height up to $2.9\cdot 10^{10}$ http://wstein.org/papers/2016-height/ Not in Sage. Is maybe 30GB or so...

3.4 New table: all 238,764,310 curves of naive height up to 2.910102.9\cdot 10^{10}

http://wstein.org/papers/2016-height/

Not in Sage. Is maybe 30GB or so...

︠49f77b4e-6662-4199-851b-b16e519ef2dc︠ ︠cd661503-f6f1-4403-983a-aab48abfebe4︠ ︠64214c72-a6a3-4053-b547-753b4511feebi︠ %md ### 3.5 The LMFDB: John Cremona via googlegroups.com 3:43 AM (9 hours ago) My article about the LMFDB based on the talk I gave at FoCM in December 2014 is now available (Open Access) at <br> http://www.springer.com/-/3/AVL5RydpAgfPWjhr63PM . Thanks to all who contributed. John

3.5 The LMFDB:

John Cremona via googlegroups.com 3:43 AM (9 hours ago) My article about the LMFDB based on the talk I gave at FoCM in December 2014 is now available (Open Access) at

http://www.springer.com/-/3/AVL5RydpAgfPWjhr63PM .
Thanks to all who contributed. John
︠db9430c7-bb18-4440-bb4f-f8ac4d9c3789︠ ︠d4a2cc68-555e-4720-a61b-50511f718211︠ ︠2dd6a4b4-53b5-4d56-922e-db810e1dce16i︠ %md ## 4. Magma versus Sage If you want to do a range of explicit computations with elliptic curves, you will very likely use Sage or Magma. If you're **really** serious, you'll use both. Note, as mentioned above, that both Sage and Magma are far ahead of all other software for elliptic curves. - [Magma reference manual about elliptic curves.](https://magma.maths.usyd.edu.au/magma/handbook/part/16) - [Sage reference manual about elliptic curves.](http://doc.sagemath.org/html/en/reference/plane_curves/index.html#elliptic-curves) - [Pari reference manual about elliptic curves.](http://pari.math.u-bordeaux.fr/dochtml/html.stable/Functions_related_to_elliptic_curves.html) -- pari is part of Sage and has some unique powerful functionality, e.g., `ellheegner`... ### History: When I started contributing to Magma in 1999, I remember that it was way, way behind PARI. I remember having lunch with John Cannon (founder of Magma), and telling him we could "kill Pari" if only Magma would have dramatically faster code for computing $a_p = p + 1 - \#E(\FF_p)$; he responded "I don't want to kill Pari." In any case, a few years later, John wisely hired Mark Watkins to work fulltime on Magma, and Mark has been working there for over a decade. Mark is definitely one of the top people in the world at implementing (and using) computational number theory algorithms, and he's ensured that Magma can do a lot. Some of that "do a lot" means catching up with (and surpassing!) what was in Pari and Sage for a long time (e.g., point counting, $p$-adic $L$-functions, etc.) However, in addition, many people have visited Sydney and added functionality for doing higher descents to Magma, which is **not available in any open source software**. Search for Magma in [this paper](http://arxiv.org/abs/1602.01894) to see how, even today, there seems to be no open source way to compute the rank of the curve $y^2 = x^3 + 169304x + 25788938$. Yes, this makes me pissed off. ### Situation today There are several elliptic curves algorithms available **only in Magma** (e.g., higher descents) ... and some available **only in Sage** ($L$-function rank bounds, some overconvergent modular symbols, zeros of $L$-functions, images of Galois representations). I could be wrong about stuff not in Sage, since **WITH MONEY** almost anything can get implemented in a year... And Magma has money. The code bases are completely separate, which is a very good thing. Any time something gets implemented in one, it gets (or should get) tested via a big run through tables of elliptic curves up to some bound. This usually results in numerous bugs being found. I remember refereeing the "integral points" code in Sage by running it against all curves up to some bound and comparing to what Magma output, and getting many discrepancies, which showed that there were bugs in both Sage and Magma.

4. Magma versus Sage

If you want to do a range of explicit computations with elliptic curves, you will very likely use Sage or Magma. If you're really serious, you'll use both.

Note, as mentioned above, that both Sage and Magma are far ahead of all other software for elliptic curves.

History:

When I started contributing to Magma in 1999, I remember that it was way, way behind PARI. I remember having lunch with John Cannon (founder of Magma), and telling him we could "kill Pari" if only Magma would have dramatically faster code for computing ap=p+1#E(Fp)a_p = p + 1 - \#E(\FF_p); he responded "I don't want to kill Pari."

In any case, a few years later, John wisely hired Mark Watkins to work fulltime on Magma, and Mark has been working there for over a decade. Mark is definitely one of the top people in the world at implementing (and using) computational number theory algorithms, and he's ensured that Magma can do a lot. Some of that "do a lot" means catching up with (and surpassing!) what was in Pari and Sage for a long time (e.g., point counting, pp-adic LL-functions, etc.)

However, in addition, many people have visited Sydney and added functionality for doing higher descents to Magma, which is not available in any open source software. Search for Magma in this paper to see how, even today, there seems to be no open source way to compute the rank of the curve y2=x3+169304x+25788938y^2 = x^3 + 169304x + 25788938. Yes, this makes me pissed off.

Situation today

There are several elliptic curves algorithms available only in Magma (e.g., higher descents) ... and some available only in Sage (LL-function rank bounds, some overconvergent modular symbols, zeros of LL-functions, images of Galois representations). I could be wrong about stuff not in Sage, since WITH MONEY almost anything can get implemented in a year... And Magma has money.

The code bases are completely separate, which is a very good thing. Any time something gets implemented in one, it gets (or should get) tested via a big run through tables of elliptic curves up to some bound. This usually results in numerous bugs being found. I remember refereeing the "integral points" code in Sage by running it against all curves up to some bound and comparing to what Magma output, and getting many discrepancies, which showed that there were bugs in both Sage and Magma.

# My fav curve: E = EllipticCurve('389a') show(E)
y2+y=x3+x22x\displaystyle y^2 + y = x^{3} + x^{2} - 2 x
E.ainvs()
(0, 1, 1, -2, 0)
E.rank()
2
E.integral_points()
[(-2 : 0 : 1), (-1 : 1 : 1), (0 : 0 : 1), (1 : 0 : 1), (3 : 5 : 1), (4 : 8 : 1), (6 : 15 : 1), (39 : 246 : 1), (133 : 1539 : 1), (188 : 2584 : 1)]
%magma E := EllipticCurve([0,1,1,-2,0]); print Rank(E); print IntegralPoints(E);
2 [ (-2 : 0 : 1), (-1 : -2 : 1), (0 : -1 : 1), (1 : -1 : 1), (3 : -6 : 1), (4 : 8 : 1), (6 : 15 : 1), (39 : -247 : 1), (133 : -1540 : 1), (188 : -2585 : 1) ] [ <(-2 : 0 : 1), 1>, <(-1 : -2 : 1), 1>, <(0 : -1 : 1), 1>, <(1 : -1 : 1), 1>, <(3 : -6 : 1), 1>, <(4 : 8 : 1), 1>, <(6 : 15 : 1), 1>, <(39 : -247 : 1), 1>, <(133 : -1540 : 1), 1>, <(188 : -2585 : 1), 1> ]
︠7dbe7ce1-ff89-4309-aa91-b1d271930b80︠ ︠5695d3a1-d411-469a-b2bf-6c37262d6fb4i︠ %md **Exercise:** 1. Make up a few elliptic curves and compute the integral points on them. 2. Try to find an elliptic curve with at least 12 integral points on it. You can search using Google if you want... or whatever. 3. Make a guess: do you think the number of integral points on elliptic curves is uniformly bounded, or are there elliptic curves over $\QQ$ with arbitrarily many integral points? (If not brave enough to make a guess, how might you use tables to make a guess. What computations would you do?) 4. Make a guess: do you think the ranks of elliptic curves over $\QQ$ are uniformly bounded, or are there elliptic curves with arbitrarily large rank?

Exercise:

  1. Make up a few elliptic curves and compute the integral points on them.

  2. Try to find an elliptic curve with at least 12 integral points on it. You can search using Google if you want... or whatever.

  3. Make a guess: do you think the number of integral points on elliptic curves is uniformly bounded, or are there elliptic curves over Q\QQ with arbitrarily many integral points? (If not brave enough to make a guess, how might you use tables to make a guess. What computations would you do?)

  4. Make a guess: do you think the ranks of elliptic curves over Q\QQ are uniformly bounded, or are there elliptic curves with arbitrarily large rank?

︠7577ac7a-c0a3-44e4-8fca-0c4ab9398fa9︠