Diophantine functions and Matiyasevic's theorem #
Hilbert's tenth problem asked whether there exists an algorithm which for a given integer polynomial determines whether this polynomial has integer solutions. It was answered in the negative in 1970, the final step being completed by Matiyasevic who showed that the power function is Diophantine.
Here a function is called Diophantine if its graph is Diophantine as a set. A subset S ⊆ ℕ ^ α
in
turn is called Diophantine if there exists an integer polynomial on α ⊕ β
such that v ∈ S
iff
there exists t : ℕ^β
with p (v, t) = 0
.
Main definitions #
IsPoly
: a predicate stating that a function is a multivariate integer polynomial.Poly
: the type of multivariate integer polynomial functions.Dioph
: a predicate stating that a set is Diophantine, i.e. a setS ⊆ ℕ^α
is Diophantine if there exists a polynomial onα ⊕ β
such thatv ∈ S
iff there existst : ℕ^β
withp (v, t) = 0
.DiophFn
: a predicate on a function stating that it is Diophantine in the sense that its graph is Diophantine as a set.
Main statements #
pell_dioph
states that solutions to Pell's equation form a Diophantine set.pow_dioph
states that the power function is Diophantine, a version of Matiyasevic's theorem.
References #
- [M. Carneiro, A Lean formalization of Matiyasevic's theorem][carneiro2018matiyasevic]
- [M. Davis, Hilbert's tenth problem is unsolvable][MR317916]
Tags #
Matiyasevic's theorem, Hilbert's tenth problem
TODO #
- Finish the solution of Hilbert's tenth problem.
- Connect
Poly
toMvPolynomial
Multivariate integer polynomials #
Note that this duplicates MvPolynomial
.
A predicate asserting that a function is a multivariate integer polynomial. (We are being a bit lazy here by allowing many representations for multiplication, rather than only allowing monomials and addition, but the definition is equivalent and this is easier to use.)
- proj {α : Type u_1} (i : α) : IsPoly fun (x : α → ℕ) => ↑(x i)
- const {α : Type u_1} (n : ℤ) : IsPoly fun (x : α → ℕ) => n
- sub {α : Type u_1} {f g : (α → ℕ) → ℤ} : IsPoly f → IsPoly g → IsPoly fun (x : α → ℕ) => f x - g x
- mul {α : Type u_1} {f g : (α → ℕ) → ℤ} : IsPoly f → IsPoly g → IsPoly fun (x : α → ℕ) => f x * g x
Instances For
The constant function with value n : ℤ
.
Equations
Instances For
The sum of squares of a list of polynomials. This is relevant for
Diophantine equations, because it means that a list of equations
can be encoded as a single equation: x = 0 ∧ y = 0 ∧ z = 0
is
equivalent to x^2 + y^2 + z^2 = 0
.
Equations
Instances For
Diophantine sets #
Diophantine sets are closed under intersection.
Equations
Instances For
Diophantine sets are closed under union.
Equations
Instances For
Deleting the first component preserves the Diophantine property.
Equations
Instances For
Projection preserves Diophantine functions.
Equations
Instances For
The constant function is Diophantine.
Equations
Instances For
The set of places where two Diophantine functions are equal is Diophantine.
Equations
Instances For
Diophantine functions are closed under addition.
Equations
Instances For
Diophantine functions are closed under multiplication.
Equations
Instances For
The set of places where one Diophantine function is at most another is Diophantine.
Equations
Instances For
The set of places where one Diophantine function is less than another is Diophantine.
Equations
Instances For
The set of places where two Diophantine functions are unequal is Diophantine.
Equations
Instances For
Diophantine functions are closed under subtraction.
Equations
Instances For
The set of places where one Diophantine function divides another is Diophantine.
Equations
Instances For
Diophantine functions are closed under the modulo operation.
Equations
Instances For
The set of places where two Diophantine functions are congruent modulo a third is Diophantine.
Equations
Instances For
Diophantine functions are closed under integer division.