Program Development Schemata as Derived Rules

We show how the formalization and application of schemata for program development can be reduced to the formalization and application of derived rules of inference. We formalize and derive schemata as rules in theories that axiomatize program data and programs themselves. We reduce schema-based program development to ordinary theorem proving, where higher-order unification is used to apply rules. Conceptually, our formalization is simple and unifies divergent views of schemata, program synthesis, and program transformation. Practically, our formalization yields a simple methodology for carrying out development using existing logical frameworks; we illustrate this in the domain of logic program synthesis and transformation using the Isabelle logical framework.

[1]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[2]  D. C. Cooper The Equivalence of Certain Computations , 1966, Comput. J..

[3]  C. Cordell Green,et al.  Application of Theorem Proving to Problem Solving , 1969, IJCAI.

[4]  Carl Hewitt,et al.  Comparative Schematology , 1970 .

[5]  Niklaus Wirth,et al.  Program development by step-wise refinement , 1971 .

[6]  Zohar Manna,et al.  Fixpoint approach to the theory of computation , 1972, CACM.

[7]  Willem P. de Roever,et al.  A Calculus for Recursive Program Schemes , 1972, ICALP.

[8]  Gérard P. Huet,et al.  A Unification Algorithm for Typed lambda-Calculus , 1975, Theor. Comput. Sci..

[9]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[10]  Keith L. Clark,et al.  A First Order Theory of Data and Programs , 1977, IFIP Congress.

[11]  Peter Aczel,et al.  An Introduction to Inductive Definitions , 1977 .

[12]  H. Keisler,et al.  Handbook of mathematical logic , 1977 .

[13]  Wolfgang Bibel,et al.  Syntax-Directed, Semantics-Supported Program Synthesis , 1979, Artif. Intell..

[14]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[15]  F. Dick A survey of the project Automath , 1980 .

[16]  de Ng Dick Bruijn,et al.  A survey of the project Automath , 1980 .

[17]  Christopher J. Hogger,et al.  Derivation of Logic Programs , 1981, JACM.

[18]  Leon Sterling,et al.  Meta-Level Inference and Program Verification , 1982, CADE.

[19]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[20]  Richard S. Bird The promotion and accumulation strategies in transformational programming , 1984, TOPL.

[21]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[22]  Lawrence C. Paulson,et al.  Natural Deduction as Higher-Order Resolution , 1986, J. Log. Program..

[23]  J. Roger Hindley,et al.  Introduction to combinators and λ-calculus , 1986, Acta Applicandae Mathematicae.

[24]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[25]  Leon Sterling,et al.  The Art of Prolog - Advanced Programming Techniques , 1986 .

[26]  Friedrich L. Bauer,et al.  The Munich Project CIP, Volume II: The Program Transformation System CIP-S , 1987 .

[27]  Amy P. Felty,et al.  Specifying Theorem Provers in a Higher-Order Logic Programming Language , 1988, CADE.

[28]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[29]  Jack Minker Foundations of deductive databases and logic programming , 1988 .

[30]  Michael J. Maher Equivalences of Logic Programs , 1988, Foundations of Deductive Databases and Logic Programming..

[31]  Logic Programming, Functional Programming, and Inductive Definitions , 1991, ELP.

[32]  Lars-Henrik Eriksson,et al.  A Survey of GCLA: A Definitional Approach to Logic Programming , 1989, ELP.

[33]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[34]  Maritta Heisel,et al.  Tactical Theorem Proving in Program Verification , 1990, CADE.

[35]  Alan Bundy,et al.  The Synthesis of Logic Programs from Inductive Proofs , 1990 .

[36]  Helmut A. Partsch,et al.  Specification and transformation of programs , 1990 .

[37]  Yves Deville,et al.  Towards Stepwise, Schema-guided Synthesis of Logic Programms , 1991, LOPSTR.

[38]  John W. Lloyd,et al.  The Godel Report , 1991 .

[39]  Arnon Avron,et al.  Simple Consequence Relations , 1988, Inf. Comput..

[40]  F. Pfenning Logic programming in the LF logical framework , 1991 .

[41]  Zohar Manna,et al.  Fundamentals of Deductive Program Synthesis , 1992, IEEE Trans. Software Eng..

[42]  John C. Shepherdson,et al.  Unfold/fold transformations of logic programs , 1992, Mathematical Structures in Computer Science.

[43]  Philippa Gardner,et al.  Representing logics in type theory , 1992 .

[44]  Martin David Coen,et al.  Interactive program derivation , 1992 .

[45]  Dov M. Gabbay,et al.  Handbook of logic in artificial intelligence and logic programming (vol. 1) , 1993 .

[46]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[47]  Alan Bundy,et al.  A framework for program development based on schematic proof , 1993, Proceedings of 1993 IEEE 7th International Workshop on Software Specification and Design.

[48]  Berthold Hoffmann,et al.  Program Development by Specification and Transformation , 1993, Lecture Notes in Computer Science.

[49]  Lars-Henrik Eriksson,et al.  Extensions of Logic Programming , 1993, Lecture Notes in Computer Science.

[50]  Alan Bundy,et al.  Middle-Out Reasoning for Logic Program Synthesis , 1993, ICLP.

[51]  Yves Deville,et al.  Logic Program Synthesis and Transformation , 1994, Workshops in Computing.

[52]  Yves Deville,et al.  Logic Program Synthesis , 1994, J. Log. Program..

[53]  Lawrence C. Paulson,et al.  A Fixedpoint Approach to Implementing (Co)Inductive Definitions , 1994, CADE.

[54]  Alberto Pettorossi,et al.  Transformation of Logic Programs , 1994 .

[55]  David A. Basin,et al.  Logic Frameworks for Logic Programs , 1994, LOPSTR.

[56]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[57]  Lawrence C. Paulson,et al.  Isabelle - A Generic Theorem Prover (with a contribution by T. Nipkow) , 1994, Lecture Notes in Computer Science.

[58]  Penny Anderson,et al.  Representing Proof Transformations for Program Optimizations , 1994, CADE.

[59]  David A. Basin,et al.  Deriving and Applying Logic Program Transformers , 1995, ASIAN.

[60]  Burkhart Wolff,et al.  Correct and User-Friendly Implementations of Transformation Systems , 1996, FME.

[61]  David A. Basin,et al.  Generic System Support for Deductive Program Development , 1996, TACAS.

[62]  Natarajan Shankar Steps Toward Mechanizing Program Transformations Using PVS , 1996, Sci. Comput. Program..

[63]  David A. Basin,et al.  Modeling a Hardware Synthesis Methodology in Isabelle , 1996, Formal Methods Syst. Des..

[64]  David A. Basin,et al.  Formalization of the Development Process , 1999, Algebraic Foundations of Systems Specification.

[65]  Alberto Pettorossi,et al.  Synthesis and Transformation of Logic Programs Using Unfold/Fold Proofs , 1999, J. Log. Program..

[66]  Frank Pfenning,et al.  Logical Frameworks , 2001, Handbook of Automated Reasoning.