Conjectura
Beta.Proofs cannot be submitted yet. The corpus is open to read, and we are looking for researchers to maintain a subject area.Maintaining a field →
← problemsJC003solvedMathematics/ Algebraic geometry

The Jacobian conjecture fails in dimension 3

Maintainer — open

A polynomial map ℂ³ → ℂ³ whose Jacobian determinant is a non-zero constant need not be invertible. Refute the 1939 Jacobian conjecture in dimension three by exhibiting such a map that is not injective.

Motivation

Ott-Heinrich Keller asked in 1939 whether every polynomial map ℂⁿ → ℂⁿ with constant non-zero Jacobian determinant admits a polynomial inverse. The condition is necessary — an invertible polynomial map must have constant non-zero Jacobian — and the question is whether it is sufficient.

The conjecture resisted for 87 years and accumulated a substantial literature of partial results and false proofs. It was refuted on 19 July 2026 by Levent Alpöge, on a question posed by Akhil Mathew, using Claude Fable 5. The counterexample is a self-map of ℂ³ with Jacobian determinant −2 that identifies three distinct points.

By adjoining identity coordinates, the conjecture is false in every dimension n ≥ 3. The planar case n = 2 remains open.

Counterexample: Levent Alpöge (question by Akhil Mathew, produced with Claude Fable 5), 19 July 2026. Lean formalization: Paul Lezeau, vendored from google-deepmind/formal-conjectures under Apache 2.0.

Lean API
import Conjectura.Statements.Mathematics.AlgebraicGeometry.JacobianConjecture
import Mathlib.Data.Complex.Basic

namespace Conjectura.JC003

/-- Refute the Jacobian conjecture in dimension 3 over `ℂ`. -/
def goal : Prop := ¬ Conjectura.AlgebraicGeometry.JacobianConjectureProp ℂ (Fin 3)

end Conjectura.JC003
Definition13
Jacobian conjectureConjectura.AlgebraicGeometry.JacobianConjectureProp

The Jacobian conjecture for a ring k and index type σ: every IsKellerMap is an IsPolynomialAutomorphism. Open over a field of characteristic zero in every dimension above one.

def JacobianConjectureProp (k σ : Type*) [CommRing k] [Fintype σ] [DecidableEq σ] : Prop :=
  ∀ F : RegularFunction k σ σ, IsKellerMap F → IsPolynomialAutomorphism F
regular functionConjectura.AlgebraicGeometry.RegularFunction

A regular function k^σ → k^τ is a tuple of multivariate polynomials, one per output coordinate. It is the formal stand-in for "polynomial map", and the object every statement in this area is about.

abbrev RegularFunction (k : Type*) [CommRing k] (σ τ : Type*) := τ → MvPolynomial σ k
Keller mapConjectura.AlgebraicGeometry.IsKellerMap

A Keller map is a polynomial self-map whose RegularFunction.Jacobian determinant is a unit. Over a field this is the same as the determinant being a non-zero constant, which is how the condition is usually stated.

def IsKellerMap {k σ : Type*} [CommRing k] [Fintype σ] [DecidableEq σ]
    (F : RegularFunction k σ σ) : Prop :=
  IsUnit F.Jacobian.det
polynomial automorphismConjectura.AlgebraicGeometry.IsPolynomialAutomorphism

A polynomial automorphism is a RegularFunction with a two-sided inverse that is itself a regular function. This is strictly stronger than being bijective on points: the inverse must be given by polynomials.

def IsPolynomialAutomorphism {k σ : Type*} [CommRing k]
    (F : RegularFunction k σ σ) : Prop :=
  ∃ G : RegularFunction k σ σ,
    G.comp F = RegularFunction.id k σ ∧ F.comp G = RegularFunction.id k σ
CompositionConjectura.AlgebraicGeometry.RegularFunction.comp

Composition of regular functions, by polynomial substitution.

noncomputable def comp (F : RegularFunction k σ τ) (G : RegularFunction k τ ι) :
    RegularFunction k σ ι :=
  fun i => MvPolynomial.bind₁ F (G i)
identityConjectura.AlgebraicGeometry.RegularFunction.id

The identity regular function: each coordinate is its own variable.

noncomputable def id : RegularFunction k σ σ := MvPolynomial.X
CommRingCommRing

class

FintypeFintype

class

MvPolynomialMvPolynomial

abbrev

IsUnitIsUnit

def

Related work5
Related problems1
  • JC002 the planar case n = 2, still open
For your AI
Download as .md
I am proving a theorem in Lean 4 and submitting it to Conjectura.

## Problem JC003 — The Jacobian conjecture fails in dimension 3

A polynomial map ℂ³ → ℂ³ whose Jacobian determinant is a non-zero constant need not be invertible. Refute the 1939 Jacobian conjecture in dimension three by exhibiting such a map that is not injective.

## Environment (fixed — do not assume anything newer)

- Lean toolchain: `leanprover/lean4:v4.33.0-rc1`
- Mathlib: `v4.33.0-rc1`

If a lemma you want does not exist in that Mathlib, prove it inline instead of
importing something newer.

## The exact statement I must prove

```lean
theorem solution : ¬ JacobianConjectureProp ℂ (Fin 3) := by
  sorry
```

## The file I submit

```lean
-- Problem JC-003 — submission template
-- Environment: leanprover/lean4:v4.33.0-rc1 · mathlib v4.33.0-rc1
import Conjectura.Problems.JC003.Statement

namespace Submission

/-- Replace `sorry` with your proof. Do not change this signature. -/
theorem solution : Conjectura.JC003.goal := by
  sorry

end Submission

```

## The Lean definitions of every term in this problem

These are the actual definitions your proof will be checked against. Do not
substitute your own version of any of them.

### Jacobian conjecture

The Jacobian conjecture for a ring `k` and index type `σ`: every `IsKellerMap` is an `IsPolynomialAutomorphism`. Open over a field of characteristic zero in every dimension above one.

```lean
Conjectura.AlgebraicGeometry.JacobianConjectureProp
-- unfolds to:
def JacobianConjectureProp (k σ : Type*) [CommRing k] [Fintype σ] [DecidableEq σ] : Prop :=
  ∀ F : RegularFunction k σ σ, IsKellerMap F → IsPolynomialAutomorphism F
```
Defined in this corpus.

### regular function

A regular function `k^σ → k^τ` is a tuple of multivariate polynomials, one per output coordinate. It is the formal stand-in for "polynomial map", and the object every statement in this area is about.

```lean
Conjectura.AlgebraicGeometry.RegularFunction
-- unfolds to:
abbrev RegularFunction (k : Type*) [CommRing k] (σ τ : Type*) := τ → MvPolynomial σ k
```
Defined in this corpus.

### Keller map

A Keller map is a polynomial self-map whose `RegularFunction.Jacobian` determinant is a unit. Over a field this is the same as the determinant being a non-zero constant, which is how the condition is usually stated.

```lean
Conjectura.AlgebraicGeometry.IsKellerMap
-- unfolds to:
def IsKellerMap {k σ : Type*} [CommRing k] [Fintype σ] [DecidableEq σ]
    (F : RegularFunction k σ σ) : Prop :=
  IsUnit F.Jacobian.det
```
Defined in this corpus.

### polynomial automorphism

A polynomial automorphism is a `RegularFunction` with a two-sided inverse that is itself a regular function. This is strictly stronger than being bijective on points: the inverse must be given by polynomials.

```lean
Conjectura.AlgebraicGeometry.IsPolynomialAutomorphism
-- unfolds to:
def IsPolynomialAutomorphism {k σ : Type*} [CommRing k]
    (F : RegularFunction k σ σ) : Prop :=
  ∃ G : RegularFunction k σ σ,
    G.comp F = RegularFunction.id k σ ∧ F.comp G = RegularFunction.id k σ
```
Defined in this corpus.

### Composition

Composition of regular functions, by polynomial substitution.

```lean
Conjectura.AlgebraicGeometry.RegularFunction.comp
-- unfolds to:
noncomputable def comp (F : RegularFunction k σ τ) (G : RegularFunction k τ ι) :
    RegularFunction k σ ι :=
  fun i => MvPolynomial.bind₁ F (G i)
```
Defined in this corpus.

### identity

The identity regular function: each coordinate is its own variable.

```lean
Conjectura.AlgebraicGeometry.RegularFunction.id
-- unfolds to:
noncomputable def id : RegularFunction k σ σ := MvPolynomial.X
```
Defined in this corpus.

### CommRing

class

```lean
CommRing
```
Defined in Mathlib.

### Fintype

class

```lean
Fintype
```
Defined in Mathlib.

### MvPolynomial

abbrev

```lean
MvPolynomial
```
Defined in Mathlib.

### IsUnit

def

```lean
IsUnit
```
Defined in Mathlib.

### det

def

```lean
F.Jacobian.det
```
Defined in Mathlib.

### bind

def

```lean
MvPolynomial.bind
```
Defined in Mathlib.

### X

def

```lean
MvPolynomial.X
```
Defined in Mathlib.

## Rules — submissions violating these are rejected automatically

1. **Do not change the name or type of `solution`.** It must satisfy the
   statement above exactly.
2. **Do not redefine or shadow anything from the problem's Statement module.**
   Declaring your own `goal`, or redefining a name it depends on, produces a
   proof of a *different* statement and is rejected. This is the single most
   common rejection.
3. **No `sorry`** anywhere, including in helper lemmas. It surfaces as the
   axiom `sorryAx` and is detected transitively through imports.
4. **No `native_decide`** — it surfaces as `Lean.ofReduceBool` and is not
   accepted, because it trusts compiled code rather than the kernel.
5. Only these axioms are permitted: `propext`, `Classical.choice`,
   `Quot.sound`.
6. Follow Mathlib style: hypotheses left of the colon, explicit types,
   `snake_case` theorem names, `UpperCamelCase` types.

## What I want from you

Here is my argument in informal mathematics:

> [PASTE YOUR PROOF SKETCH HERE]

Turn it into Lean 4 that compiles under the environment above and satisfies the
statement exactly. Where you are unsure a lemma exists in this Mathlib version,
say so explicitly rather than guessing a name.

Solved — closed to submissions

Passed submission on file.

New ideas

Nothing here yet.

Discussion

  • Nothing yet.

Sign in to take part.