Formalizing computability theory via partial recursive functions

  title={Formalizing computability theory via partial recursive functions},
  author={Mario M. Carneiro},
We present an extension to the $\mathtt{mathlib}$ library of the Lean theorem prover formalizing the foundations of computability theory. We use primitive recursive functions and partial recursive functions as the main objects of study, and we use a constructive encoding of partial functions such that they are executable when the programs in question provably halt. Main theorems include the construction of a universal partial recursive function and a proof of the undecidability of the halting… 

Figures from this paper

Formalization of the Computational Theory of a Turing Complete Functional Language Model
This work presents a formalization in PVS of the computational theory for a computational model given as a class of partial recursive functions called PVS0, which results in a proven (formalized) Turing complete model.
Hilbert's Tenth Problem in Coq (Extended Version)
The first full mechanisation of the Davis-Putnam-Robinson-Matiyasevich theorem is given, stating that every recursively enumerable problem -- in this case by a Minsky machine -- is Diophantine.
Towards a Mechanized Theory of Computation for Education
This project includes full proofs of results from a textbook, such as the undecidability of the halting problem and Rice’s theorem, and presents a simple and expressive calculus that allows for the essence of informal proofs of classic theorems in a mechanized setting.
Parametric Church's Thesis: Synthetic Computability Without Choice
This work introduces various parametric strengthenings of CTφ, which are equivalent to assuming CT φ and an S n operator for φ like in the S n theorem, and explains the novel axioms and proofs of Rice’s theorem.
Mechanising Complexity Theory: The Cook-Levin Theorem in Coq
The Cook-Levin theorem is mechanised in the proof assistant Coq, the first result in computational complexity theory that has been mechanised with respect to any concrete computational model.
Verified programming of Turing machines in Coq
A framework for the verified programming of multi-tape Turing machines in Coq, which allows a user to implement nontrivial algorithms as Turing machines and verify their correctness, as well as time and space complexity compositionally.
Church's thesis and related axioms in Coq's type theory
The paper provides a partial answer to the question which axioms may preserve computational intuitions inherent to type theory, and which certainly do not, and is read as a broad survey ofAxioms in type theory.
Undecidability of higher-order unification formalised in Coq
The undecidability results concerning higher-order unification in the simply-typed λ-calculus with β-conversion in Coq is formalised and the solvability of Diophantine equations is proved following a proof by Dowek.
On the formalisation of Kolmogorov complexity
Building on HOL4's existing model of computability, a formal definition of the complexity of a binary string is provided, and it is proved that Kolmogorov complexity is uncomputable and the Kolmogsorov Complexity invariance theorem is proved.


Mechanised Computability Theory
This paper presents a mechanisation of some basic computability theory. The mechanisation uses two models: the recursive functions and the ?- calculus, and shows that they have equivalent
On synthetic undecidability in Coq, with an application to the Entscheidungsproblem
Developing a basic framework for synthetic computability theory in Coq, this work proves the equivalence of Post's theorem with Markov's principle and provides a convenient technique for establishing the enumerability of inductive predicates such as the considered proof systems and PCP.
Formalization of the Undecidability of the Halting Problem for a Functional Language
The formalization is part of a termination analysis library in PVS that includes the specification and equivalence proofs of several notions of termination of a simple first-order functional language called PVS0.
Typing Total Recursive Functions in Coq
A (relatively) short mechanized proof that Coq types any recursive function which is provably total in Coq, and an unbounded minimization scheme for decidable predicates that can be used to reify a whole category of undecidable predicate.
Mechanising Turing Machines and Computability Theory in Isabelle/HOL
Results from computability theory in the theorem prover Isabelle/HOL formalise Turing machines and relate them to abacus machines and recursive functions and "tie the know" between these three computational models by formalising a universal function and obtaining a universal Turing machine.
Weak Call-by-Value Lambda Calculus as a Model of Computation in Coq
A weak call-by-value \(\lambda \)-calculus is formalised in the constructive type theory of Coq and study it as a minimal functional programming language and as a model of computation.
Formalizing Turing Machines
We discuss the formalization, in the Matita Theorem Prover, of a few, basic results on Turing Machines, up to the existence of a (certified) Universal Machine. The work is meant to be a preliminary
Programming languages capturing complexity classes
This article surveys development of programming languages with the property that all definable functions belong to some complexity class, often polynomial time or space from Cobham's 1965 result up to the current research frontier.
The Lean Theorem Prover (System Description)
Lean is a new open source theorem prover being developed at Microsoft Research and Carnegie Mellon University, with a small trusted kernel based on dependent type theory. It aims to bridge the gap