Call-by-Value Lambda Calculus as a Model of Computation in Coq

We formalise a (weak) call-by-value $$\lambda $$λ-calculus we call L in the constructive type theory of Coq and study it as a minimal functional programming language and as a model of computation. We show key results including (1) semantic properties of procedures are undecidable, (2) the class of total procedures is not recognisable, (3) a class is decidable if it is recognisable, corecognisable, and logically decidable, and (4) a class is recognisable if and only if it is enumerable. Most of the results require a step-indexed self-interpreter. All results are verified formally and constructively, which is the challenge of the project. The verification techniques we use for procedures will apply to call-by-value functional programming languages formalised in Coq in general.

[1]  Ugo Dal Lago,et al.  The weak lambda calculus as a reasonable machine , 2008, Theor. Comput. Sci..

[2]  Alberto Ciaffaglione,et al.  Towards Turing computability via coinduction , 2016, Sci. Comput. Program..

[3]  Dominique Larchey-Wendling Typing Total Recursive Functions in Coq , 2017, ITP.

[4]  Michael Norrish Mechanised Computability Theory , 2011, ITP.

[5]  Emil L. Post Recursively enumerable sets of positive integers and their decision problems , 1944 .

[6]  Ugo Dal Lago,et al.  On the Invariance of the Unitary Cost Model for Head Reduction (Long Version) , 2012, RTA.

[7]  Andrej Bauer,et al.  First Steps in Synthetic Computability Theory , 2006, MFPS.

[8]  Jian Xu,et al.  Mechanising Turing Machines and Computability Theory in Isabelle/HOL , 2013, ITP.

[9]  Andrea Asperti,et al.  A formalization of multi-tape Turing machines , 2015, Theor. Comput. Sci..

[10]  Joachim Niehren,et al.  Functional computation as concurrent computation , 1996, POPL '96.

[11]  Björn Victor,et al.  A Sorted Semantic Framework for Applied Process Calculi , 2013, Log. Methods Comput. Sci..

[12]  Hugo Herbelin,et al.  An Intuitionistic Logic that Proves Markov's Principle , 2010, 2010 25th Annual IEEE Symposium on Logic in Computer Science.

[13]  Ugo Dal Lago,et al.  (Leftmost-Outermost) Beta Reduction is Invariant, Indeed , 2016, Log. Methods Comput. Sci..

[14]  P. Boas Machine models and simulations , 1991 .

[15]  George Boolos,et al.  Computability and logic , 1974 .

[16]  Andrea Asperti,et al.  Formalizing Turing Machines , 2012, WoLLIC.

[17]  Gordon D. Plotkin,et al.  Call-by-Name, Call-by-Value and the lambda-Calculus , 1975, Theor. Comput. Sci..

[18]  R. Friedberg,et al.  TWO RECURSIVELY ENUMERABLE SETS OF INCOMPARABLE DEGREES OF UNSOLVABILITY (SOLUTION OF POST'S PROBLEM, 1944). , 1957, Proceedings of the National Academy of Sciences of the United States of America.

[19]  Thierry Coquand,et al.  The Independence of Markov's Principle in Type Theory , 2016, Log. Methods Comput. Sci..

[20]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[21]  Dexter Kozen,et al.  Automata and Computability , 1997, Undergraduate Texts in Computer Science.

[22]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[23]  Torben Æ. Mogensen Efficient self-interpretation in lambda calculus , 1992, Journal of Functional Programming.

[24]  Gert Smolka,et al.  Weak Call-by-Value Lambda Calculus as a Model of Computation in Coq , 2017, ITP.

[25]  Emil L. Post A variant of a recursively unsolvable problem , 1946 .

[26]  Jan Martin Jansen Programming in the λ-Calculus: From Church to Scott and Back , 2013, The Beauty of Functional Code.