Research note · 20 July 2026

An explicit degree-3 counterexample to the Jacobian Conjecture

A mechanical Bass–Connell–Wright reduction of Alpöge’s ℂ³ counterexample, yielding a cubic Keller map of ℂ¹⁹ that is 3-to-1 over a point. Worked out and verified with Claude (Fable 5).

Claim. The polynomial map G: ℂ¹⁹ → ℂ¹⁹ below has total degree 3, Jacobian determinant identically −2, and sends the three distinct rational points P₁, P₂, P₃ to the same image. Since a Keller map that is not injective is not invertible, G is a counterexample to the Jacobian Conjecture of degree 3 — the minimal possible degree, as degree ≤ 2 is a theorem of Wang (1980).

Background

On 19 July 2026, Levent Alpöge announced a counterexample to the Jacobian Conjecture: an explicit degree-7 polynomial self-map of ℂ³ with constant Jacobian determinant −2 sending (0, 0, −¼), (1, −3/2, 13/2) and (−1, 3/2, 13/2) to (−¼, 0, 0). Bass, Connell and Wright (1982) proved that the conjecture reduces to the degree-3 case in all dimensions; their reduction (Prop. II.3.1) is constructive and, crucially, proceeds by composing with elementary automorphisms — which preserves both the constant Jacobian and the fiber structure. Applying it to Alpöge’s map therefore transports the 3-point collision into an explicit cubic Keller map. Seventeen elementary steps and sixteen carrier variables later, it lands in dimension 19.

The map

Variables are x, y, z, w₁, …, w₁₆ (G4…G19 are the carrier components; wk corresponds to component Gk+3).

G1=x w1 w5 + 3 x w4 w9 − x w6 w9 + 6 x y w11 − x y w12 − 7 x y w7 + 3 x y w8 + 3 x y z + 6 y w3 w9 − 3 y z w5 + y2 w10 − 7 y2 w9 + z w2 w7 − w1 w2 − 3 w32 − 3 w4 w5 + w5 w6 + w7 w10 − 7 w7 w9 + 3 w8 w9 + 6 w9 w11 − w9 w12 + 4 y2 + z
G2=3 x w4 w5 + 12 x y2 + 9 x2 w14 − 3 x2 w15 − 6 x2 w4 + 9 y w7 w13 − 3 y w8 w13 − 6 y z w13 − 3 y z w2 − 9 y2 w5 + 9 w13 w14 − 3 w13 w15 − 3 w2 w4 − 6 w4 w13 − 9 w5 w7 + 3 w5 w8 + 3 x z + y
G3=x z w13 + x2 w16 − 3 x2 y + w13 w16 + 2 x
G4=y2 z + w1
G5=−x y w13 − x2 w9 − w9 w13 + w2
G6=x y2 + w3
G7=y z + w4
G8=x2 y + w5
G9=x w1 + w6
G10=y2 + w7
G11=x w4 + w8
G12=x y + w9
G13=z w2 + w10
G14=y w3 + w11
G15=x w6 + w12
G16=x2 + w13
G17=y w7 + w14
G18=y w8 + w15
G19=x z + w16

The colliding points

All three points below map to (−¼, 0, 0, …, 0).

xyzw1w2w3w4w5w6w7w8w9w10w11w12w13w14w15w16
P₁00-1/40000000000000000
P₂1-3/213/2-117/83/2-9/439/43/2117/8-9/4-39/43/2-39/4-27/8-117/8-1-27/8-117/8-13/2
P₃-13/213/2-117/83/29/4-39/4-3/2-117/8-9/4-39/43/2-39/4-27/8-117/8-127/8117/813/2

Verification

Standalone verification script (sympy)
"""Standalone verification of the degree-3 Jacobian-conjecture counterexample.

Reads degree3_map.json (same directory), rebuilds the 19-variable map in sympy,
and checks:
  1. every component has total degree <= 3 (and the max is exactly 3);
  2. det J = -2 identically;
  3. the three listed rational points are distinct and share one image.

For (2) it uses the map's structure: the w-block of J is I + L with L
nilpotent (the carrier dependency graph is acyclic), so
    det J = det(I+L) * det( A - B (I+L)^{-1} C ) = det( A - B (I+L)^{-1} C )
with (I+L)^{-1} = sum_j (-L)^j.  Nilpotence is asserted by computing the
series to exact termination, and the inverse identity is asserted too --
nothing is assumed.  Everything is exact over Q.
A brute-force cross-check, sympy.Matrix(J).det(), gives the same answer if
you have the patience.

Requires: sympy >= 1.12.   Run:  python verify_degree3.py
"""
import json
import os

import sympy as sp

HERE = os.path.dirname(os.path.abspath(__file__))
d = json.load(open(os.path.join(HERE, "degree3_map.json"), encoding="utf-8"))
N = d["N"]
m = N - 3

names = ["x", "y", "z"] + [f"w{k}" for k in range(1, m + 1)]
syms = sp.symbols(names)
sd = dict(zip(names, syms))


def parse_mono(ms):
    if ms == "1":
        return sp.Integer(1)
    e = sp.Integer(1)
    for part in ms.split("*"):
        if "^" in part:
            v, p = part.split("^")
            e *= sd[v] ** int(p)
        else:
            e *= sd[part]
    return e


comps = [
    sp.expand(sum(sp.Rational(c) * parse_mono(mo) for mo, c in cd.items()))
    for cd in d["components"]
]

# --- 1. degree ------------------------------------------------------------
degs = [sp.total_degree(sp.Poly(c, *syms)) for c in comps]
assert max(degs) == 3, f"degree check failed: {degs}"
print(f"[1/3] component degrees {degs} -> max 3: OK")

# --- 2. det J -------------------------------------------------------------
J = sp.Matrix([[sp.diff(c, v) for v in syms] for c in comps])
A = J[:3, :3]
B = J[:3, 3:]
C = J[3:, :3]
D = J[3:, 3:]

L = D - sp.eye(m)
Winv = sp.zeros(m)
term = sp.eye(m)
for _ in range(m + 1):
    Winv += term
    term = sp.expand(term * (-L))
    if term.is_zero_matrix:
        break
assert term.is_zero_matrix, "w-block is not unipotent (L not nilpotent)!"
assert sp.expand(Winv * (sp.eye(m) + L)) == sp.eye(m)
S = sp.expand(A - B * Winv * C)
det = sp.expand(S.det(method="berkowitz"))
assert det == -2, f"det = {det}"
print("[2/3] det J = -2 identically: OK  (unipotent w-block asserted)")

# --- 3. collision ---------------------------------------------------------
pts = [{sd[k]: sp.Rational(v) for k, v in p.items()} for p in d["points"]]
imgs = [tuple(c.subs(p) for c in comps) for p in pts]
assert imgs[0] == imgs[1] == imgs[2], "images differ!"
assert pts[0] != pts[1] and pts[1] != pts[2] and pts[0] != pts[2], "points coincide!"
print(f"[3/3] three distinct points, one image: OK  (image begins {imgs[0][:4]})")

print("\nAll checks passed: degree-3 Keller map, det J = -2, not injective.")

The machine-readable map is in degree3_map.json; the script reads it, rebuilds the map, computes the full Jacobian determinant with sympy’s own machinery, and checks the collision.

Credit & caveats

The counterexample is Alpöge’s; per his announcement it was found in collaboration with Claude (Fable). The reduction used here is the classical Bass–Connell–Wright gadget applied mechanically, with carrier-sharing to keep the dimension at 19; it was worked out and verified with Claude (Fable 5) on 20 July 2026. The underlying announcement is one day old and still undergoing community review; this note inherits that status. Whether dimension 19 is minimal for a cubic counterexample is open — the interesting gap is now between 4 and 19.