7

Well, I have for example the following SageMathCell-code:

sage: E = EllipticCurve(QQ, [0,63,-2205,-12348,0])
sage: E
sage: for P in E.integral_points():
....:     Q = -P 
....:     print( "P = %8s and -P = %8s" % (P.xy(), Q.xy()) )

This code computes the integral points of the Elliptic Curve that is defined by:

$$[0,63,-2205,-12348,0]\space\space\space\to\space\space\space y^2 - 2205y = x^3 + 63x^2 - 12348x\tag1$$

Are these results I get, proven to be the only ones out there? Or can there be more solutions that SageMathCell did not find?


Bytheway, the code gives the following output:

P = (-174, 1161) and -P = (-174, 1044)
P = (-147, 2205) and -P = (-147, 0)
P = (-98, 2548) and -P = (-98, -343)
P = (-68, 2528) and -P = (-68, -323)
P = (-54, 2484) and -P = (-54, -279)
P = (0, 2205) and -P =   (0, 0)
P = (57, 2052) and -P = (57, 153)
P = (84, 2205) and -P =  (84, 0)
P = (147, 3087) and -P = (147, -882)
P = (231, 4851) and -P = (231, -2646)
P = (309, 6840) and -P = (309, -4635)
P = (375, 8730) and -P = (375, -6525)
P = (378, 8820) and -P = (378, -6615)
P = (711, 20691) and -P = (711, -18486)
P = (1176, 42336) and -P = (1176, -40131)
P = (2107, 99127) and -P = (2107, -96922)
P = (2886, 157716) and -P = (2886, -155511)
P = (5412, 401472) and -P = (5412, -399267)
P = (5572, 419293) and -P = (5572, -417088)
P = (37275, 7203735) and -P = (37275, -7201530)
P = (26162409, 133818797385) and -P = (26162409, -133818795180)
Jan Eerland
  • 29,457

2 Answers2

7

The documentation of integral_points cites the algorithm found in

Henri Cohen, Number Theory, Vol. I: Tools and Diophantine Equations. GTM 239, Springer, 2007.

You can read the implementation e.g. by entering E.integral_points?? into a SageMath session.

The algorithm finds all the integral points, but it depends crucially on having computed the Mordell-Weil group.

On this topic, the documentation reads:

mw_base - list of EllipticCurvePoint generating the Mordell-Weil group of E (default: ‘auto’ - calls self.gens())

Note: The complexity increases exponentially in the rank of curve E. The computation time (but not the output!) depends on the Mordell-Weil basis. If mw_base is given but is not a basis for the Mordell-Weil group (modulo torsion), integral points which are not in the subgroup generated by the given points will almost certainly not be listed.

In turn, the documentation of gens(), about its optional argument proof, says:

proof – bool or None (default None), see proof.elliptic_curve or sage.structure.proof

Finally, the documentation of proof.elliptic_curve states:

Controls the default proof strategy for elliptic curve algorithms.

Calling it:

sage: proof.elliptic_curve()
True

In summary: yes, those are all the points, as the documentation claims.

Ricardo Buring
  • 6,649
  • 7
  • 35
  • 63
  • First of all thanks for your answer. How can I know if the Mordell-Weil Group of my elliptic curve is found? So that my list is complete? Is there a way to ask sage that? – Jan Eerland Jan 19 '20 at 16:01
  • Because if I want to check another elliptic curve how can I know that it found all the integral points? – Jan Eerland Jan 19 '20 at 16:08
  • See the output of proof.elliptic_curve? in SageMath; by default, only unconditionally correct results are returned (in particular, for the Mordell-Weil group), so the list is complete. You can call E.gens_certain() if you want to be reassured. – Ricardo Buring Jan 19 '20 at 16:51
  • so if I understand correctly, when a list of solutions is returned we certainly know that the list is complete? – Jan Eerland Jan 19 '20 at 16:52
  • What code do I have to use to be certain? – Jan Eerland Jan 19 '20 at 16:58
  • You can be certain of the output of your current code, because the default is to only return unconditionally correct results. If you want to be uncertain (but possibly get results faster), you can change the setting like proof.elliptic_curve(False). – Ricardo Buring Jan 19 '20 at 17:01
  • okay, so if I use the mentioned code in my question for other Elliptic Curves I know for sure that all the integral points are present in the output?! – Jan Eerland Jan 19 '20 at 17:16
  • Yes. Of course we assume the book is correct and the programmers did their jobs correctly. I pointed you to the sources (book and source code); they can be checked for consistency and correctness. Also note that for some curves, it might take a long time for the computation to finish / output to appear. – Ricardo Buring Jan 19 '20 at 17:41
2

The answer given would be correct in an ideal world. Unfortunately there are (1) bugs in the implementation, and also, sadly (2) bugs in the description of the algorithm in Henri COhen's book, because he takes some formulas from Smart's book, which Smart gets from the monograph of Sinou David, but he (Smart) does so incorrectly. (It's a question of which order you put the generating periods: is is w1/w2 or w2/w1 which is in the fundamental region. HC knows about this (I informed him) but I don't think that there is yet a correction on his web page (which has 20 pages of errata for the two volumes).

I am preparing a better implementation -- have been doing so for a few years now -- but currently you can not assume that the list of integral points output by Sage for elliptic curves over Q is complete, even if you have the full Mordell-Weil group. When I compute integral pints for the curve in the LMFDB I do so using both Sage and Magma and take the union. It is some time since I saw any integral points found by Sage not found by Magma, but in fairness I should say that while I was testing the first implementation of integral points in Sage (in 2008) that happened a lot, and as a result the Magma code was completely rewritten by Steve Donnelly, using several tricks he thought up but which have never been published.