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

Thue Equations (Section 3.6.1)

A Thue equation is an equation of the form
P(x,y)=m
where
P(x,y)
is a homogeneous polynomial of degree ≥3 and
m
is an integer. We can solve these equations with the following command: Reduce[P(x,y)==m,{x,y},Integers]
Examples
Reduce[2x^3+y^3==1,{x,y},Integers]
Out[]=
(x0&&y1)||(x1&&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
c
k
x
or no
c
k
y
terms for
k≥2
(Section 3.17)

We can assume this equation is of the form
​
xQ(x,y)+ay+b=0
where
Q
is a polynomial in
x
and
y
with integer coefficients and
a
and
b
are integers. We can check
x=0
separately. Otherwise,
(ay+b)/x=t
is an integer. After substituting
y=(xt-b)/a
into the equation, cancelling
x
and multiplying by a constant if necessary, we obtain a polynomial
P(x,t)=0
with integer coefficients. We can then use the Mathematica command
​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
k
, we need to check the cases
x≤k
and
t≤k
in the equation
P(x,t)=0
to find all values for
x
and then using the original equation, we can find all integer solutions
(x,y)
.
Example:
3
x
-y+
2
x
y-x
2
y
=0
If
x=0
then
y=0
. Otherwise,
x≠0
. We divide the equation by
x
and obtain
y/x=
2
x
+xy-
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
as
y=xt
for some integer
t
. Substituting this into the above equation we obtain
t=
2
x
+
2
x
t-
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
x≤1
or
t≤1
. Substituting these into
2
x
+
2
x
t-
2
x
2
t
=t
returns integer solutions
(x,t)(±1,±1),(0,0)
. Then we can conclude that all integer solutions to
3
x
-y+
2
x
y-x
2
y
0
are
(x,y)(±1,±1),(0,0)
.

Vieta Jumping

Explicit descriptions of solution sets (Section 4.9)

We define the norm as
N(x,y,z)=x+y+z
and the lower norm as
′
N
(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
′
x
such that if we have a solution
(x,y,z)
, we have that
(
′
x
,y,z)
is also a solution, and if we are jumping in two variables, we must also find a transformation
′
y
such that if we have a solution
(x,y,z)
, we have that
(x,
′
y
,z)
is a solution.
Let us call a solution
(x,y,z)
minimal if the transformation
(x,y,z)⟶(
′
x
,y,z)
does not decrease the norm, if we are jumping in one variable, and for jumping in two variables, we must have that neither transformation
(x,y,z)⟶(
′
x
,y,z)
or
(x,y,z)⟶(x,
′
y
,z)
decreases the norm. We can then find all integer solutions to the equation by applying these transformations to the minimal solutions.
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
k
, and all minimal solutions are in the region
|x|≤k
or
|y|≤k
or
|z|≤k
. 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.
Example with one jump:
2
x
-xyz+y+z-10
This equation is a quadratic in
x
, we will have one Vieta jumping operation given by
(x,y,z)⟶(yz-x,y,z)
. 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
x≤1
,
y<=1
and
z≤1
. This gives the following list of solutions containing all minimal solutions (we could also use the Reduce function for this:
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]
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
​
(x,y,z)=(0,u,1−u),(u,0,1−
2
u
),(u,1−
2
u
,0),(u−
2
u
,u,1−u),(−1,−2,−2),(1,2,2),(2,1,4),(2,4,1),(3,2,2),(5,−2,−2)
where
u
is an integer.
We can also apply this method to equations which after a linear substitution reduce to an equation solvable by Vieta jumping. For example equation
2
x
y-y
2
z
+
2
x
-10
can be reduced to
2
X
+4XyZ+2XZ+
2
Z
-40
where
X=x+z
and
Z=x-z
which can be solved by Vieta jumping (see section 4.11 for more details). This method also allows us to solve equations such as
2
x
+
2
y
+
2
z
xyz+e
where
e
is an integer (see Section 4.23). This method also allows us to solve equations such as
2
2
x
+
2
y
+xyz-
2
z
0
(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
2-
2
x
+
2
x
2
y
-
2
z
0
(see Section 8.6).

No integer solutions (Section 7.14)

We can also use Vieta jumping to prove an equation has no integer solutions. For example the equation
4+
2
x
y+x
2
y
+z+xyz+
2
z
0
. 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.

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
1+
3
x
y+2z+xyz0
. We can consider
xyz=0
separately and return solutions
(x,y,z)±(1,-1,0)
. Otherwise, we may assume
xyz≠0
. Then the equation implies that
2z+1
is divisible by
xy
so we can make substitution
2z+1=txy
for integer
t
, and after canceling
xy
we obtain
-1+2t+2
2
x
+txy0
. This equation then implies that
2t-1
is divisible by
x
and after substituting
2t-1=kx
for integer
k
and cancelling
x
we obtain equation
2k+4x+y+kxy0
. This equation has a dominating monomial and the optimisation command
In[]:=
MaxValue[Min[Abs[x],Abs[y],Abs[k]],2k+4x+y+kxy==0,{k,x,y},Reals]
Out[]=
5
returns that
min{x|,|y|,|z}<
5
this gives us a finite region to check for integer solutions and we can deduce that all integer solutions to the original equation are ​
(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

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