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)

2 Answers 2


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()

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

  • $\begingroup$ 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? $\endgroup$ Jan 19, 2020 at 16:01
  • $\begingroup$ Because if I want to check another elliptic curve how can I know that it found all the integral points? $\endgroup$ Jan 19, 2020 at 16:08
  • $\begingroup$ 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. $\endgroup$ Jan 19, 2020 at 16:51
  • $\begingroup$ so if I understand correctly, when a list of solutions is returned we certainly know that the list is complete? $\endgroup$ Jan 19, 2020 at 16:52
  • $\begingroup$ What code do I have to use to be certain? $\endgroup$ Jan 19, 2020 at 16:58

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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.