Formalization of the Undecidability of the Halting Problem for a Functional Language

@inproceedings{Ramos2018FormalizationOT,
  title={Formalization of the Undecidability of the Halting Problem for a Functional Language},
  author={Thiago Mendonça Ferreira Ramos and C{\'e}sar A. Mu{\~n}oz and Mauricio Ayala-Rinc{\'o}n and Mariano M. Moscato and Aaron Dutle and Anthony Narkawicz},
  booktitle={WoLLIC},
  year={2018}
}
This paper presents a formalization of the proof of the undecidability of the halting problem for a functional programming language. The computational model consists of a simple first-order functional language called PVS0 whose operational semantics is specified in the Prototype Verification System (PVS). The formalization is part of a termination analysis library in PVS that includes the specification and equivalence proofs of several notions of termination. The proof of the undecidability of… 

Formalization of Rice ’ s Theorem over a Functional Language Model

This work presents a formalization in PVS of Rice’s Theorem over a computational model given as a class of partial recursive functions that does not depends on the undecidability of the Halting Problem being made directly without using any translation to or from other computational models.

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.

Formal Verification of Termination Criteria for First-Order Recursive Functions

A formalization of several termination criteria for first-order recursive functions, developed in the Prototype Verification System (PVS), includes the specification and proof of equivalence of semantic termination, Turing termination, size change principle, calling context graphs, and matrix-weighted graphs.

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.

Formalizing computability theory via partial recursive functions

An extension to the $\mathtt{mathlib}$ library of the Lean theorem prover formalizing the foundations of computability theory is presented, which includes the construction of a universal partial recursive function and a proof of the undecidability of the halting problem.

Certified undecidability of intuitionistic linear logic via binary stack machines and Minsky machines

The undecidability of entailment in intuitionistic linear logic in Coq is formally proved and the computability of all functions definable in constructive type theory is exploited, enabling the reduction proofs to focus on correctness properties.

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.

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.

References

SHOWING 1-10 OF 16 REFERENCES

Termination of Isabelle Functions via Termination of Rewriting

This work shows how to automate termination proofs for recursive functions in Isabelle/HOL by encoding them as term rewrite systems and invoking an external termination prover via suitable tactics which are added to the IsaFoR library.

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.

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.

Termination Analysis with Calling Context Graphs

We introduce calling context graphs and various static and theorem proving based analyses that together provide a powerful method for proving termination of programs written in feature-rich, first

Size-Change Termination for Term Rewriting

It turns out that the size-change principle on its own fails for many examples that can be handled by standard techniques for rewriting, but there are also TRSs where it succeeds whereas existing rewriting techniques fail.

The size-change principle for program termination

This work establishes the problem's intrinsic complexity, and gives a direct algorithm operating on "size-change graphs" (without the passage to automata), which turns out to be surprisingly high, complete for PSPACE, in spite of the simplicity of the principle.

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.

AC Dependency Pairs Revisited

This paper presents a generalization of the dependency pair framework for termination analysis to rewriting modulo AC, which subsumes existing variants of AC dependency pairs, admits standard dependency graph analyses, and enjoys the minimality property in the standard sense.

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

Termination of term rewriting using dependency pairs