Abstract (original article): Monograph “B. Grechuk, Polynomial Diophantine equations. A systematic approach” suggests solving Diophantine equations systematically in certain order. Many hundreds of the equations are left to the reader. Here, we provide complete solutions to all these equations. The difficulties of solved equations range from elementary to research level. In the last section, we present a summary table of all solved equations ordered by their size, which makes them easy to find. As a result, this document may be used as a database of solved Diophantine equations of small size, to which more difficult equations can be reduced. CITATION (original article): Wilcox, A. (2024). A systematic approach to Diophantine equations: two thousand solved examples (Version 2). arXiv:2404.08719. https://doi.org/10.48550/arXiv.2404.08719
The document above provides complete solutions to all these equations. Here, we provide some select sections which rely heavily on Mathematica. Note that by “solve” (unless stated otherwise) we mean describe all integer solutions.
Two variable equations
Two variable equations
Thue Equations (Section 3.6.1)
Thue Equations (Section 3.6.1)
A Thue equation is an equation of the form where is a homogeneous polynomial of degree ≥3 and is an integer. We can solve these equations with the following command: Reduce[P(x,y)==m,{x,y},Integers]
P(x,y)=m
P(x,y)
m
Examples
Reduce[2x^3+y^3==1,{x,y},Integers]
Out[]=
(x0&&y1)||(x1&&y-1)
In[]:=
Reduce[x^3+x^2y-y^3==2,{x,y},Integers]
Out[]=
False
The output "False" means there are no integer solutions to the equation.
Equations with no ckx or no cky terms for k≥2 (Section 3.17)
Equations with no or no terms for (Section 3.17)
c
k
x
c
k
y
k≥2
We can assume this equation is of the form
xQ(x,y)+ay+b=0
where is a polynomial in and with integer coefficients and and are integers. We can check separately. Otherwise, is an integer. After substituting into the equation, cancelling and multiplying by a constant if necessary, we obtain a polynomial with integer coefficients. We can then use the Mathematica command
IntegerPart[MaxValue[Min[Abs[x], Abs[t]], {P(x, t) == 0}, {t, x}]]
Q
x
y
a
b
x=0
(ay+b)/x=t
y=(xt-b)/a
x
P(x,t)=0
IntegerPart[MaxValue[Min[Abs[x], Abs[t]], {P(x, t) == 0}, {t, x}]]
If the command returns ∞, we must repeat the above process until a finite value is outputted. Otherwise, the output is a finite value, say , we need to check the cases and in the equation to find all values for and then using the original equation, we can find all integer solutions .
k
x≤k
t≤k
P(x,t)=0
x
(x,y)
Example: -y+y-x=0
3
x
2
x
2
y
If then . Otherwise, . We divide the equation by and obtain
As the right-hand side of the equation is integer, the left-hand side must also be integer, so we can express as for some integer . Substituting this into the above equation we obtain
x=0
y=0
x≠0
x
y/x=+xy-
2
x
2
y
As the right-hand side of the equation is integer, the left-hand side must also be integer, so we can express
y
y=xt
t
t=+t-
2
x
2
x
2
x
2
t
In[]:=
IntegerPart[MaxValue[Min[Abs[x],Abs[t]],{x^2+x^2t−x^2t^2==t},{t,x}]]
Out[]=
1
Hence we must have either or . Substituting these into +t-=t returns integer solutions . Then we can conclude that all integer solutions to -y+y-x0 are .
x≤1
t≤1
2
x
2
x
2
x
2
t
(x,t)(±1,±1),(0,0)
3
x
2
x
2
y
(x,y)(±1,±1),(0,0)
Vieta Jumping
Vieta Jumping
Explicit descriptions of solution sets (Section 4.9)
Explicit descriptions of solution sets (Section 4.9)
We define the norm as and the lower norm as (x,y,z)=min{x+y+z}. If we have an equation which is quadratic in one variable, we will be jumping in one variable. Similarly, if the equation is quadratic in two variables, we will be jumping in two variables. Next, we must find a transformation such that if we have a solution , we have that is also a solution, and if we are jumping in two variables, we must also find a transformation such that if we have a solution , we have that is a solution.
N(x,y,z)=x+y+z
′
N
′
x
(x,y,z)
(,y,z)
′
x
′
y
(x,y,z)
(x,,z)
′
y
Let us call a solution minimal if the transformation does not decrease the norm, if we are jumping in one variable, and for jumping in two variables, we must have that neither transformation or decreases the norm. We can then find all integer solutions to the equation by applying these transformations to the minimal solutions.
(x,y,z)
(x,y,z)⟶(,y,z)
′
x
(x,y,z)⟶(,y,z)
′
x
(x,y,z)⟶(x,,z)
′
y
To find the minimal solutions to the equations, we must first prove that the lower norm of any minimal solution is bounded. To do this, we can solve an optimisation problem using the command
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {P(x, y, z) == 0, Abs[x’] ≥ Abs[x]}, {x, y, z}]]
for jumps in one variable and the command
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {P(x, y, z) == 0, Abs[x’] ≥ Abs[x],
Abs[y’] ≥ Abs[y]}, {x, y, z}]]
for jumps in two variables. (We can also change the command accordingly for jumps in 3+ variables).
The output of this command should be finite, say, and all minimal solutions are in the region or or . All integer solutions to the equation can be described from the minimal solutions and the transformations found earlier. For more details see also Section 3.1.
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {P(x, y, z) == 0, Abs[x’] ≥ Abs[x]}, {x, y, z}]]
for jumps in one variable and the command
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {P(x, y, z) == 0, Abs[x’] ≥ Abs[x],
Abs[y’] ≥ Abs[y]}, {x, y, z}]]
for jumps in two variables. (We can also change the command accordingly for jumps in 3+ variables).
The output of this command should be finite, say
k
|x|≤k
|y|≤k
|z|≤k
Example with one jump: -xyz+y+z-10
2
x
This equation is a quadratic in , we will have one Vieta jumping operation given by . We must first prove that the lower norm of any minimal solution is bounded using the command
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {x^2 − x y z + y + z − 1 == 0, Abs[y z − x] ≥ Abs[x]}, {x, y, z}]]
which returns 1.61803. As we are interested in integer solutions, we only need to check the cases, and . This gives the following list of solutions containing all minimal solutions (we could also use the Reduce function for this:
x
(x,y,z)⟶(yz-x,y,z)
N[MaxValue[Min[Abs[x], Abs[y], Abs[z]], {x^2 − x y z + y + z − 1 == 0, Abs[y z − x] ≥ Abs[x]}, {x, y, z}]]
which returns 1.61803. As we are interested in integer solutions, we only need to check the cases
x≤1
y<=1
z≤1
Reduce[{P (x, y, z) == 0,
Abs[x] <= k || Abs[y] <= k || Abs[z] <= k}, {x, y, z}, Integers])
In this case
Reduce[{x^2 − x y z + y + z − 1 == 0,
Abs[x] <= 1 || Abs[y] <= 1 || Abs[z] <= 1}, {x, y, z}, Integers]
Abs[x] <= k || Abs[y] <= k || Abs[z] <= k}, {x, y, z}, Integers])
In this case
Reduce[{x^2 − x y z + y + z − 1 == 0,
Abs[x] <= 1 || Abs[y] <= 1 || Abs[z] <= 1}, {x, y, z}, Integers]
We can then use the transformations and definition of norm to find the set of minimal solutions and then we can obtain all integer solutions from this set and applying a chain of transformations. In this case, the list of solutions can be described as a finite union of polynomial families, and we finally return that all integer solutions to the equation are
where is an integer.
(x,y,z)=(0,u,1−u),(u,0,1−),(u,1−,0),(u−,u,1−u),(−1,−2,−2),(1,2,2),(2,1,4),(2,4,1),(3,2,2),(5,−2,−2)
2
u
2
u
2
u
u
We can also apply this method to equations which after a linear substitution reduce to an equation solvable by Vieta jumping. For example equation y-y+-10 can be reduced to +4XyZ+2XZ+-40 where and which can be solved by Vieta jumping (see section 4.11 for more details). This method also allows us to solve equations such as ++xyz+e where is an integer (see Section 4.23). This method also allows us to solve equations such as (see Section 7.4). For some equations with finitely many solutions, we can use Vieta jumping to provide an prove the complete list of integer solutions, for example equation (see Section 8.6).
2
x
2
z
2
x
2
X
2
Z
X=x+z
Z=x-z
2
x
2
y
2
z
e
2++xyz-0
2
x
2
y
2
z
2-+-0
2
x
2
x
2
y
2
z
No integer solutions (Section 7.14)
No integer solutions (Section 7.14)
We can also use Vieta jumping to prove an equation has no integer solutions. For example the equation . In the same way as the previous examples, we can find the Vieta jumping transformations and a bounded region for minimal solutions, if the equation has no minimal solutions then the equation has no integer solutions.
4+y+x+z+xyz+0
2
x
2
y
2
z
Dominating monomial (Section 8.7)
Dominating monomial (Section 8.7)
Equations with a dominating monomial are those which cannot have all variables simultaneously large. In Section 1.11, these equations are solved by human reasoning. Alternatively, we can instead solve these equations with assistance from Mathematica, using it to solve an optimisation problem.
For example, look at the equation . We can consider separately and return solutions . Otherwise, we may assume . Then the equation implies that is divisible by so we can make substitution for integer , and after canceling we obtain . This equation then implies that is divisible by and after substituting for integer and cancelling we obtain equation . This equation has a dominating monomial and the optimisation command
1+y+2z+xyz0
3
x
xyz=0
(x,y,z)±(1,-1,0)
xyz≠0
2z+1
xy
2z+1=txy
t
xy
-1+2t+2+txy0
2
x
2t-1
x
2t-1=kx
k
x
2k+4x+y+kxy0
In[]:=
MaxValue[Min[Abs[x],Abs[y],Abs[k]],2k+4x+y+kxy==0,{k,x,y},Reals]
Out[]=
5
returns that this gives us a finite region to check for integer solutions and we can deduce that all integer solutions to the original equation are
min{x|,|y|,|z}<
5
(x,y,z)=(−9,1,−104),(−5,−1,−18),(−3,−5,−8),(−3,1,−26),(−1,3,−2),(1,−3,−2),±(1,−1,0),(3,−1,−26),(3,5,−8),(5,1,−18),(9,−1,−104).
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
A systematic approach to Diophantine equations: two thousand solved examples
by Ashleigh Ratcliffe
Wolfram Community, STAFF PICKS, May 19, 2025
https://community.wolfram.com/groups/-/m/t/3463513
by Ashleigh Ratcliffe
Wolfram Community, STAFF PICKS, May 19, 2025
https://community.wolfram.com/groups/-/m/t/3463513