On Automating the Extraction of Programs from Termination Proofs

We investigate an automated program synthesis system that is 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 termination 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]  Jean-Louis Krivine,et al.  Lambda-calculus, types and models , 1993, Ellis Horwood series in computers and their applications.

[2]  Mauricio Ayala-Rincón,et al.  On automating the extraction of programs from proofs using product types , 2002, Electron. Notes Theor. Comput. Sci..

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

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

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

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

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

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

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

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

[11]  William A. Howard,et al.  The formulae-as-types notion of construction , 1969 .

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

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

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

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

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