Poitín: Distilling Theorems From Conjectures

In this paper, we describe a new fully automatic theorem prover called Poitin which makes use of a novel transformation algorithm called distillation to prove input conjectures. The input conjectures are defined in a functional language and are transformed using the distillation algorithm. The result of this transformation can be easily inspected to see whether the original conjecture is true. Possible divergence of the transformation algorithm is detected, and this information is used to perform generalizations to ensure termination. We give several examples of the application of the theorem prover, and compare it to related work.

[1]  Ian Green,et al.  Higher-Order Annotated Terms for Proof Search , 1996, TPHOLs.

[2]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[3]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[4]  J. Kruskal Well-quasi-ordering, the Tree Theorem, and Vazsonyi’s conjecture , 1960 .

[5]  Valentin F. Turchin,et al.  The Use of Metasystem Transition in Theorem Proving and Program Optimization , 1980, ICALP.

[6]  Roland N. Bol,et al.  Loop checking in partial deduction , 1993, J. Log. Program..

[7]  Robert Glück,et al.  An Algorithm of Generalization in Positive Supercompilation , 1995, ILPS.

[8]  Lennart Augustsson,et al.  Compiling Pattern Matching , 1985, FPCA.

[9]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[10]  Renaud Marlet Vers une formalisation de l'evaluation partielle , 1994 .

[11]  Alan Bundy,et al.  Middle-out reasoning for synthesis and induction , 1996, Journal of Automated Reasoning.

[12]  Valentin F. Turchin,et al.  The concept of a supercompiler , 1986, TOPL.

[13]  Graham Higman,et al.  Ordering by Divisibility in Abstract Algebras , 1952 .

[14]  Andrew Ireland,et al.  The Use of Planning Critics in Mechanizing Inductive Proofs , 1992, LPAR.

[15]  James Brotherston,et al.  Cyclic Proofs for First-Order Logic with Inductive Definitions , 2005, TABLEAUX.

[16]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[17]  Toby Walsh,et al.  A Divergence Critic for Inductive Proof , 1996, J. Artif. Intell. Res..

[18]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[19]  Michael Leuschel,et al.  On the Power of Homeomorphic Embedding for Online Termination , 1998, SAS.

[20]  Toby Walsh,et al.  Termination Orderings for Rippling , 1994, CADE.

[21]  Frank van Harmelen,et al.  Rippling: A Heuristic for Guiding Inductive Proofs , 1993, Artif. Intell..

[22]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

[23]  Alan Bundy,et al.  Automatic verification of functions with accumulating parameters , 1999, Journal of Functional Programming.