Let E be an elliptic curve defined over the rational numbers Q and denote by S={p_1, ..., p_(s - 1), Infinity} a finite set of primes containing the prime at infinity. There are only finitely many S-integral points on E. (That is, points where the denominators of the coordinates are only supported by primes in S.) Note that the point at infinity on E is never returned, since it is supported at every prime.
The following algorithms use the technique of linear forms in complex and p-adic elliptic logarithms.
Given an elliptic curve E over the Q, returns the sequence of all integral points, modulo negation, and followed by a sequence of tuple sequences [< (P_(i, j), n_(i, j)) >] such that the j-th integral point P_j is of the form P_j = sum_(i=1)^(r) (n_(i, j)P_(i, j)). i.e., the second return value contains representations of the points in terms of some basis. The format of this second return value may be changed in the next release.
> E := EllipticCurve([0,17]);
> Q, reps := IntegralPoints(E);
> Q;
[ (-2 : -3 : 1), (8 : 23 : 1), (43 : -282 : 1), (4 : 9 : 1),
(2 : -5 : 1), (-1 : 4 : 1), (52 : -375 : 1), (5234 : 378661 : 1) ]
> reps;
[
[ <(-2 : -3 : 1), 1> ],
[ <(-2 : -3 : 1), 2> ],
[ <(-2 : -3 : 1), 1>, <(4 : -9 : 1), -2> ],
[ <(4 : -9 : 1), -1> ],
[ <(-2 : -3 : 1), 1>, <(4 : -9 : 1), -1> ],
[ <(-2 : -3 : 1), 1>, <(4 : -9 : 1), 1> ],
[ <(-2 : -3 : 1), 2>, <(4 : -9 : 1), 1> ],
[ <(-2 : -3 : 1), 1>, <(4 : -9 : 1), 3> ]
]
We see here that the chosen basis consists of the points
( - 1 : - 3 : 1) and (4 : - 9 : 1), and that coefficients which are
zero are omitted.
If Q is a sequence of five integers [a, b, c, d, e] where e is a square, this function returns all integral points (modulo negation) on the curve y^2=ax^4 + bx^3 + cx^2 + dx + e.
If Q is a list of five integers [a, b, c, d, e] defining the hyperelliptic quartic y^2=ax^4 + bx^3 + cx^2 + dx + e and P is a sequence representing a rational point [x, y], this function returns all integral points on Q.
> IntegralQuarticPoints([1,0,-8,8,1]);
[
[ 2, -1 ],
[ -6, 31 ],
[ 0, 1 ]
]
Given an elliptic curve E over the rationals and a set S of finite primes, returns the sequence of all S-integral points, modulo negation. The second return value is as described in IntegralPoints.
> E := EllipticCurve([-228, 848]); > Q := SIntegralPoints(E, [2, 3, 5, 7]); > for P in Q do P; end for; // Print one per line (4 : 0 : 1) (-11 : 45 : 1) (16 : 36 : 1) (97/4 : -783/8 : 1) (-44/9 : -1160/27 : 1) (857/4 : -25027/8 : 1) (6361/400 : -282141/8000 : 1) (534256 : -390502764 : 1) (946/49 : -20700/343 : 1) (-194/25 : -5796/125 : 1) (34/9 : 172/27 : 1) (814 : 23220 : 1) (13 : 9 : 1) (-16 : 20 : 1) (1/4 : -225/8 : 1) (52 : -360 : 1) (53 : 371 : 1) (16/49 : 9540/343 : 1) (-16439/1024 : -631035/32768 : 1) (34 : 180 : 1) (-2 : 36 : 1) (-14 : -36 : 1) (14 : -20 : 1) (754 : -20700 : 1) (94/25 : -828/125 : 1) (2 : 20 : 1) (94 : 900 : 1) (-818/49 : 468/343 : 1) (49/16 : -855/64 : 1) (196 : -2736 : 1) (629/25 : 13133/125 : 1) (1534/81 : -42020/729 : 1) (8516/117649 : -1163623840/40353607 : 1)
Given a sequence of integers Q = [a, b, c, d, e] where a is a square, this function returns all S-integral points on the quartic curve y^2 = ax^4 + bx^3 + cx^2 + dx + e.
Given a sequence of integers Q = [a, b, c, d], this function returns all S-integral points on the curve C: ay^2 = bx^4 + cx^2 + d, provided that C is nonsingular.
Given a sequence of integers Q = [a, b, c, d], this function returns all S-integral points on C: ay^3 + bx^3 + cxy + d=0, provided that C is nonsingular.
> S := [2, 3, 5, 7];
> SIntegralDesbovesPoints([9, 2, 1, 8], S);
[
[ 1, -1 ],
[ -94/7, 172/21 ],
[ -11/7, 2/7 ],
[ 5, -3 ],
[ 2, -4/3 ],
[ 2/7, -20/21 ],
[ -8/5, -2/15 ]
]