The Warshall Algorithm and Dickson's Lemma: Two Examples of Realistic Program Extraction

By means of two well-known examples it is demonstrated that the method of extracting programs from proofs is manageable in practice and may yield efficient programs. The Warshall algorithm computing the transitive closure of a relation is extracted from a constructive proof that repetitions in a path can always be avoided. Second, we extract a program from a classical (i.e., nonconstructive) proof of a special case of Dickson's lemma, by transforming the classical proof into a constructive one. These techniques (as well as the examples) are implemented in the interactive theorem prover MINLOG developed at the University of Munich.

[1]  Thierry Coquand,et al.  Grr Obner Bases in Type Theory , 1998 .

[2]  Ulrich Berger,et al.  Program Extraction from Classical Proofs , 1994, LCC.

[3]  C. Nash-Williams On well-quasi-ordering infinite trees , 1963, Mathematical Proceedings of the Cambridge Philosophical Society.

[4]  Chetan R. Murthy Extracting Constructive Content From Classical Proofs , 1990 .

[5]  Frank Pfenning,et al.  Program development through proof transformation , 1988 .

[6]  William W. Tait,et al.  Intensional interpretations of functionals of finite type I , 1967, Journal of Symbolic Logic.

[7]  Daniel Leivant,et al.  Syntactic translations and provably recursive functions , 1985, Journal of Symbolic Logic.

[8]  Zuber,et al.  Proof Theory at Work: Program Development in the Minlog System , 1998 .

[9]  U. Kohlenbach Analysing proofs in analysis , 1996 .

[10]  Wolfgang Bibel,et al.  Automated Deduction - A Basis for Applications : Volume II: Systems and Implementation Techniques , 1998 .

[11]  Thierry Coquand,et al.  Gröbner Bases in Type Theory , 1998, TYPES.

[12]  A. Troelstra Constructivism in mathematics , 1988 .

[13]  Helmut Schwichtenberg,et al.  Formal Correctness Proofs of Functional Programs: Dijkstra’s Algorithm, a Case Study , 1999 .

[14]  Ulrich Kohlenbach,et al.  Effective bounds from ineffective proofs in analysis: An application of functional interpretation and majorization , 1992, Journal of Symbolic Logic.

[15]  Manfred Broy,et al.  Program Development as a Formal Activity , 1981, IEEE Transactions on Software Engineering.

[16]  D. Dalen Review: Georg Kreisel, Godel's Intepretation of Heyting's Arithmetic; G. Kreisel, Relations Between Classes of Constructive Functionals; Georg Kreisel, A. Heyting, Interpretation of Analysis by Means of Constructive Functionals of Finite Types , 1971 .

[17]  Harvey M. Friedman,et al.  Classically and intuitionistically provably recursive functions , 1978 .

[18]  A. Troelstra Metamathematical investigation of intuitionistic arithmetic and analysis , 1973 .

[19]  Lev Gordeev,et al.  Basic proof theory , 1998 .

[20]  Bezem,et al.  Ramsey's theorem and the pigeonhole principle in intuitionistic mathematics , 1993 .

[21]  Robert L. Constable,et al.  Proofs as programs , 1985, TOPL.

[22]  Helmut Schwichtenberg,et al.  Ordinal Bounds for Programs , 1995 .

[23]  Ulrich Berger,et al.  Program Extraction from Normalization Proofs , 2006, Stud Logica.

[24]  L. Dickson Finiteness of the Odd Perfect and Primitive Abundant Numbers with n Distinct Prime Factors , 1913 .