Introduction

The Jacobian conjecture, [MW1, Wk1], was (very) recently disproved by a counterexample found by Anthropic's Fable 5. [MS1]. This notebook demonstrates that counterexample using some of the built-in Wolfram Language (WL) functions and entries in Wolfram Function Repository (WFR). We show how to use WL’s FindInstance to find three different points which the counterexample polynomial 3-dimensional (3D) transformation maps into the same 3D point.
In the comments of this X-post (and New Scientist article, [MS1]) it is pointed out that the counterexample found using Anthropic's Fable 5 Large Language Model (LLM).
Remark: The points found in this notebook are different than those in the X-post .

Theory

In this section we provide a theoretical formulation of the Jacobian conjecture. For more a mathematically elaborated formulation see the Wikipedia article "Jacobian conjecture", [Wk1].
Suppose
u
and
v
are polynomials of the variables
x
and
y
. Consider the 2-dimensional (2D) transformation (i.e., a vector valued function)
F(x,y):=(u[x,y],v[x,y])
. The Jacobian conjectures says that if the Jacobian determinant:
J=(∂u/∂x)(∂v/∂y)−(∂u/∂y)(∂v/∂x)
is a non-zero constant, then there must exist another pair of polynomials that invert transformation with the polynomials in
u
and
v
.
Below we show that the conjecture is not true using the 3D transformation polynomials proclaimed in this X post, [MS1].

Demonstration

In this section the Anthropic’s Fable 5 found counterexample is exemplified using corresponding definitions and invocations.
Definition of the counterexample polynomial mapping:
In[]:=
Clear[polyMap];​​polyMap[x_,y_,z_]:={​​(1+xy)^3z+y^2(1+xy)(4+3xy),​​y+3x(1+xy)^2z+3xy^2(4+3xy),​​2x-3x^2y-x^3z};
Display the polynomial map in traditional form:
In[]:=
Column[TraditionalForm/@polyMap[x,y,z]]
Out[]=
2
y
(3xy+4)(xy+1)+z
3
(xy+1)
3x
2
y
(3xy+4)+3xz
2
(xy+1)
+y
3
x
(-z)-3
2
x
y+2x
The Jacobian matrix (via WFR’s entry JacobianMatrix):
In[]:=
mat=ResourceFunction["JacobianMatrix"][polyMap[x,y,z],{x,y,z}];​​mat//Simplify//MatrixForm
Out[]//MatrixForm=
y(6x
3
y
+3z+6xyz+
2
y
(7+3
2
x
z))
12
2
x
3
y
+3xz+3x
2
y
(7+
2
x
z)+y(8+6
2
x
z)
3
(1+xy)
3(6x
3
y
+z+4xyz+
2
y
(4+3
2
x
z))
1+24xy+6
3
x
yz+3
2
x
(9
2
y
+2z)
3x
2
(1+xy)
2-6xy-3
2
x
z
-3
2
x
-
3
x
The determinant:
In[]:=
Det[mat]
Out[]=
-2
Or directly finding the determinant via WFR’s JacobianDeterminant:
In[]:=
ResourceFunction["JacobianDeterminant"][polyMap[x,y,z],{x,y,z}]
Out[]=
-2
Using FindInstance to find triplets of triplets, i.e.,
p
i
:=(
x
i
,
y
i
,
z
i
),i∈[1,2,3]
∧
p
i
!=
p
j
∧i≠j
, for which the polynomial map gives the same result. Searching all three points is too slow:
c=10;​​k=1;​​AbsoluteTiming[​​sol=​​FindInstance[Join[​​Thread[polyMap[x1,y1,z1]==polyMap[x2,y2,z2]],​​Thread[polyMap[x1,y1,z1]==polyMap[x3,y3,z3]],​​Thread[polyMap[x2,y2,z2]==polyMap[x3,y3,z3]],​​{​​x1!=x2||y1!=y2||z1!=z2,​​x1!=x3||y1!=y3||z1!=z3,​​x2!=x3||y2!=y3||z2!=z3,​​-c≤x1≤c,-c≤y1≤c,-c≤z1≤c,​​-c≤x2≤c,-c≤y2≤c,-c≤z2≤c,​​-c≤x3≤c,-c≤y3≤c,-c≤z3≤c​​}],{x1,y1,z1,x2,y2,z2,x3,y3,z3},Reals,k,​​RandomSeeding->123]​​]
Out[]=
$Aborted
So, let us use a two-stage computation: we find first a solution with two different points, then we find a third point that is different that previously found two. Here is the two-point finding spec:
In[]:=
c=20;​​k=1;​​AbsoluteTiming[​​sol1=​​FindInstance[Join[​​Thread[polyMap[x1,y1,z1]==polyMap[x2,y2,z2]],​​{​​x1!=x2&&y1!=y2&&z1!=z2,​​-c≤x1≤c,-c≤y1≤c,-c≤z1≤c,​​-c≤x2≤c,-c≤y2≤c,-c≤z2≤c​​}],{x1,y1,z1,x2,y2,z2},Reals,k,RandomSeeding->123]​​]
Out[]=
0.035135,x10,y1-1,z1-
71
18
,x2-6,y20,z2
1
18

Remark: Heuristically, the stronger condition
x1!=x2&&y1!=y2&&z1!=z2
is used in order to have more options for finding the third point.
Here we find a third point:
In[]:=
AbsoluteTiming​​sol2=​​FindInstanceJoin​​ThreadpolyMap[x3,y3,z3]==
1
18
,-1,0,​​Thread[{x3,y3,z3}!=({x1,y1,z1}/.sol1[[1]])],​​Thread[{x3,y3,z3}!=({x2,y2,z2}/.sol1[[1]])],​​{​​-c≤x3≤c,-c≤y3≤c,-c≤z3≤c​​},{x3,y3,z3},Reals,k,RandomSeeding->123​​
Out[]=
0.011571,x36,y3-
1
2
,z3
11
36

Combine the solutions into one:
In[]:=
sol=Flatten@{sol1,sol2}
Out[]=
x10,y1-1,z1-
71
18
,x2-6,y20,z2
1
18
,x36,y3-
1
2
,z3
11
36

Check:
In[]:=
polyMap[x,y,z]/.AssociationThread[{x,y,z},{x1,y1,z1}/.sol]
Out[]=

1
18
,-1,0
In[]:=
polyMap[x,y,z]/.AssociationThread[{x,y,z},{x2,y2,z2}/.sol]
Out[]=

1
18
,-1,0
In[]:=
polyMap[x,y,z]/.AssociationThread[{x,y,z},{x3,y3,z3}/.sol]
Out[]=

1
18
,-1,0
All points are different:
In[]:=
({x1,y1,z1}/.sol)!=({x2,y2,z2}/.sol)&&​​({x1,y1,z1}/.sol)!=({x3,y3,z3}/.sol)&&​​({x2,y2,z2}/.sol)!=({x3,y3,z3}/.sol)
Out[]=
True

Plot

In this section we give a visual representation of the counterexample using a 3D contour plot -- the found points are plotted in red. Here we derive a 3D contour plot of the polynomial transformation:
AbsoluteTiming[​​gr=ContourPlot3D[polyMap[x,y,z],{x,-c,c},{y,-c,c},{z,-c,c},​​Contours->9,​​ContourStyleDirective[Opacity[0.4]],​​MeshNone,​​PlotRange->All​​];​​]
Out[]=
{72.9755,Null}
Combine the 3D contour plot with the points found in the previous section (plotted in red):

References

[MS1] Matthew Sparkes, "AI's solution to 87-year-old riddle takes mathematicians by surprise", (2026), New Scientist.
[MW1] MathWorld entry, "Jacobian conjecture".
[Wk1] Wikipedia entry, "Jacobian conjecture".

CITE THIS NOTEBOOK

Jacobian conjecture counterexample by LLM​
by Anton Antonov​
Wolfram Community, STAFF PICKS, July 22, 2026
https://community.wolfram.com/groups/-/m/t/3766129