Deriving and applying logic program transformers

  • Penny Anderson
  • David Basin
Knowledge Representation and Programming Languages
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1023)


We present a methodology for logic program development based on the use of verified transformation templates. We use the Isabelle Logical Framework to formalize transformation templates as inference rules. We derive these rules in higher-order logic and afterwards use higher-order unification to apply them to develop programs in a deductive synthesis style. Our work addresses the pragmatics of template formalization and application as well as which theories and semantics of programs and data we require to derive templates.

Key words

program transformation logic programs higher-order unification logical frame-works 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    P. Aczel. An introduction to inductive definitions. In J. Barwise, editor, Handbook of Mathematical Logic, pages 739–82. North-Holland, Amsterdam, 1977.Google Scholar
  2. [2]
    Martin Aronsson, Lars-Henrik Eriksson, Lars Hallnäs, and Per Kreuger. A survey of GLCA: A definitional approach to logic programming. In Extensions of Logic Programming, LNCS-475, pages 49–100. Springer-Verlag, 1991.Google Scholar
  3. [3]
    CIP System Group: F. L. Bauer et al. The Munich Project CIP, Volume II: The Program Transformation System CIP-S, volume 292 of Lecture Notes in Computer Science. Springer-Verlag, 1987.Google Scholar
  4. [4]
    F.L Bauer and H. Wössner. Algorithmic Language and Program Development. Springer-Verlag, 1982.Google Scholar
  5. [5]
    Yves Bertot and Ranan Fraer. Reasoning with executable specifications. In International Joint Conference of Theory and Practice of Software Development (TAPSOFT/FASE), volume 915. Springer-Verlag LNCS, May 1995.Google Scholar
  6. [6]
    W. Bibel. Syntax-directed, semantics-supported program synthesis. Artificial Intelligence, 14:243–261, 1980.Google Scholar
  7. [7]
    R.M. Burstall and J. Darlington. A transformation system for developing recursive programs. Journal of the Association for Computing Machinery, 24(1):44–67, 1977.Google Scholar
  8. [8]
    K. L. Clark and S-Å. Tärnlund. A first order theory of data and programs. In B. Gilchrist, editor, Information Processing, pages 939–944. IFIP, 1977.Google Scholar
  9. [9]
    K.L. Clark. Predicate logic as a computational formalism. Technical Report TOC 79/59, Imperial College, 1979.Google Scholar
  10. [10]
    Masami Hagiya and Takafumi Sakurai. Foundation of logic programming based on inductive definition. New Generation Computing, 2:59–77, 1984.Google Scholar
  11. [11]
    P. Hill and J. Lloyd. The Gödel Report. Technical Report TR-91-02, Department of Computer Science, University of Bristol, March 1991. Revised in September 1991.Google Scholar
  12. [12]
    Berthold Hoffmann and Bernd Krieg-Brückner (Eds.). Program Development by Specification and Transformation. Springer LNCS 680, 1993.Google Scholar
  13. [13]
    C.J. Hogger. Derivation of logic programs. JACM, 28(2):372–392, April 1981.Google Scholar
  14. [14]
    Gérard Huet. A unification algorithm for typed lambda-calculus. Theoretical Computer Science, pages 27–57, 1975.Google Scholar
  15. [15]
    Gérard Huet and Bernard Lang. Proving and applying program transformations expressed with second-order patterns. Acta Informatica, pages 31–55, 1978.Google Scholar
  16. [16]
    Richard O'Keefe. The Craft of Prolog. MIT Press, Cambridge, Massachusetts, 1990.Google Scholar
  17. [17]
    Helmut A. Partsch. Specification and Transformation of Programs. Springer-Verlag, 1990.Google Scholar
  18. [18]
    Lawrence C. Paulson. A fixedpoint approach to implementing (co)inductive definitions. In Proc. of 12th International Conference On Automated Deduction (CADE-12), Nancy, France, June 1994. Springer-Verlag.Google Scholar
  19. [19]
    Lawrence C. Paulson. Isabelle: a generic theorem prover; with contributions by Tobias Nipkow. LNCS-828. Springer, Berlin, 1994.Google Scholar
  20. [20]
    Lawrence C. Paulson and Andrew W. Smith. Logic programming, functional programming, and inductive definitions. In Extensions of Logic Programming, LNCS-475, pages 283–310. Springer-Verlag, 1991.Google Scholar
  21. [21]
    M.H. van Emden and R.A. Kowalski. The semantics of predicate logic as a programming language. Journal of the ACM, 23:733–42, 1976.Google Scholar
  22. [22]
    Mattias Waldau. Formal validation of transformation schemata. In T. Clement and K.-K. Lau, editors, Logic Program Synthesis and Transformation, pages 97–110. Springer-Verlag, 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Penny Anderson
    • 1
  • David Basin
    • 1
  1. 1.Max-Planck-Institut für InformatikIm StadtwaldSaarbrückenGermany

Personalised recommendations