On automating the extraction of programs from proofs using product types

Abstract We investigate an automated program synthesis system based on the paradigm of programming by proofs. To automatically extract a λ-term that computes a recursive function given by a set of equations the system must find a formal proof of the totality of the given function. Because of the particular logical framework, usually such approaches make it difficult to use techniques such as those in rewriting theory. We overcome this difficulty for the automated system that we consider by exploiting product types. As a consequence, this would enable the incorporation of termination techniques used in other areas while still extracting programs.

[1]  J. Roger Hindley,et al.  To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism , 1980 .

[2]  Michel Parigot,et al.  Programming with Proofs , 1990, J. Inf. Process. Cybern..

[3]  Jean-Louis Krivine,et al.  Lambda-calculus, types and models , 1993, Ellis Horwood series in computers and their applications.

[4]  Fairouz Kamareddine,et al.  On Automating Inductive and Non-inductive Termination Methods , 1999, ASIAN.

[5]  Pascal Manoury A User's Friendly Syntax to Define Recursive Functions as Typed lambda-Terms , 1994, TYPES.

[6]  Jürgen Giesl Termination of Nested and Mutually Recursive Algorithms , 2004, Journal of Automated Reasoning.

[7]  Jürgen Giesl,et al.  Automatically Proving Termination Where Simplification Orderings Fail , 1997, TAPSOFT.

[8]  Michel Parigot Recursive Programming with Proofs , 1992, Theor. Comput. Sci..

[9]  Fairouz Kamareddine,et al.  On Formalised Proofs of Termination of Recursive Functions , 1999, PPDP.

[10]  Daniel Leivant,et al.  Typing and Computational Properties of Lambda Expressions , 1986, Theor. Comput. Sci..

[11]  Pascal Manoury,et al.  Des preuves de totalite de fonctions comme synthese de programmes , 1992 .

[12]  Marianne Simonot,et al.  An ordinal measure based procedure for termination of functions , 2001, Theor. Comput. Sci..

[13]  Michel Parigot,et al.  Programming with Proofs: A Second Order Type Theory , 1988, ESOP.

[14]  Michel Parigot,et al.  ProPre A Programming Language with Proofs , 1992, LPAR.

[15]  Marianne Simonot,et al.  Automatizing Termination Proofs of Recursively Defined Functions , 1994, Theor. Comput. Sci..