An introduction to partial deduction

  • Jan Komorowski
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 649)


After several years of neglect, the importance of partial deduction (previously, partial evaluation in logic programming) as an omnipresent principle in Logic Programming, and to a certain degree in computing in general, is being recognized. This article provides a systematic introduction to partial deduction, its applications and open problems. Starting from an informal and intuitive presentation, the fundamental notions such as correctness and completeness are discussed. A selection of applications is presented to illustrate partial deduction in different contexts.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    K. Apt and D. Pedreschi. Proving termination of genreal prolog programs. In Proceedings of the International Conference on Theoretical Apsects of Computer Science, Sendai, 1991.Google Scholar
  2. [2]
    L. Beckman et al. A partial evaluator, and its use as a programming tool. Artificial Intelligence, 7(4):319–357, 1976.CrossRefGoogle Scholar
  3. [3]
    K. Benkerimi and J. Lloyd. A Procedure for the Partial Evaluation of Logic Programs. TR-89-04, Department of Computer Science, University of Bristol, 1989.Google Scholar
  4. [4]
    D. Bjorner, A. Ershov, and N. Jones, editors. Partial Evaluation and Mixed Computation. Proceedings of the IFIP TC2 Workshop, Gammel Avenues, Denmark, October 1987. North-Holland, 1988. 625 pages.Google Scholar
  5. [5]
    R. Bol. Loop checking in partial deduction. CS-R 9134, Center for Mathematics and Computer Science, Amsterdam, 1991. To appear in the Journal of Logic Programming.Google Scholar
  6. [6]
    A. Bondorf. Self-Applicable Partial Evaluation. PhD thesis, DIKU, University of Copenhagen, Denmark, 1990. Revised version: DIKU Report 90/17.Google Scholar
  7. [7]
    A. Bondorf, F. Frauendorf, and M. Richter. An experiment in automatic self-applicable partial evaluation of Prolog. Technical Report 335, Lehrstuhl Informatik V, University of Dortmund, West Germany, 1990. 20 pages.Google Scholar
  8. [8]
    F. Bry. Query Evaluation in Recursive Databases: Bottom-up and Topdown Reconciled. In Proc. 1st Int. Conf on Deductive and Object-Oriented Databases, December 1989. Kyoto, Japan.Google Scholar
  9. [9]
    R. M. Burstall and J. Darlington. Some transformations for developing recursive programs. Journal of ACM, 24(1):44–67, 1977.Google Scholar
  10. [10]
    T. E. Cheatham, G. H. Holloway, and J. A. Townley. Symbolic evaluation and analysis of programs. IEEE Transactions on Software Engineering, 5(4), 1979.Google Scholar
  11. [11]
    K. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Data Bases, pages 293–322. Plenum Press, 1978.Google Scholar
  12. [12]
    P. Cousot and R. Cousot. Abstract interpretation and application to logic programming. Rapport de Recherche 8, Ecole Polytechnique, Laboratoire d'Informatique, 91128 Palaiseau Cedex France, 1992.Google Scholar
  13. [13]
    P. Emanuelson and A. Haraldsson. On compiling embedded languages in Lisp. In 1980 Lisp Conference, Stanford, California, pages 208–215, 1980.Google Scholar
  14. [14]
    A. Ershov. On the essence of compilation. In E. Neuhold, editor, Formal Description of Programming Concepts, pages 391–420. North-Holland, 1978.Google Scholar
  15. [15]
    H. Fujita and K. Furukawa. A self-applicable partial evaluator and its use in incremental compilation. New Generation Computing, 6(2,3):91–118, 1988.Google Scholar
  16. [16]
    Y. Futamura. Partial evaluation of computation process — an approach to a compiler-compiler. Systems, Computers, Controls, 2(5):45–50, 1971.Google Scholar
  17. [17]
    Y. Futamura. Program evaluation and generalized partial computation. In International Conference on Fifth Generation Computer Systems, Tokyo, Japan, pages 1–8, 1988.Google Scholar
  18. [18]
    J. Gallagher and M. Bruynooghe. Some low-level source transformations for logic programs. In M. Bruynooghe, editor, Proceedings of the Second Workshop on Meta-Programming in Logic, April 1990, Leuven, Belgium, pages 229–246. Department of Computer Science, KU Leuven, Belgium, 1990.Google Scholar
  19. [19]
    C. Gomard and N. Jones. A partial evaluator for the untyped lambdacalculus. Journal of Functional Programming, 1(1):21–69, January 1991.Google Scholar
  20. [20]
    A. Haraldsson. A Program Manipulation System Based on Partial Evaluation. PhD thesis, Linköping University, Sweden, 1977. Linköping Studies in Science and Technology Dissertations 14.Google Scholar
  21. [21]
    F. van Harmelen and A. Bundy. Explanation-Based Generalisation=Partial Evaluation. Journal of Artificial Intelligence, 36:401–412, 1988.Google Scholar
  22. [22]
    C. J. Hogger. Derivation of logic programs. Journal of ACM, 28(2):372–392, 1982.Google Scholar
  23. [23]
    N. Jones, P. Sestoft, and H. Sondergaard. Mix: A self-applicable partial evaluator for experiments in compiler generation. Lisp and Symbolic Computation, 2(1):9–50, 1989.Google Scholar
  24. [24]
    S. Kleene. Introduction to Metamathematics. D. van Nostrand, Princeton, New Jersey, 1952.Google Scholar
  25. [25]
    J. Komorowski. A Specification of An Abstract Prolog Machine and Its Application to Partial Evaluation. PhD thesis, Department of Computer and Information Science, Linköping University, Linköping, 1981.Google Scholar
  26. [26]
    J. Komorowski. Partial evaluation as a means for inferencing data structures in an applicative language: a theory and implementation in the case of Prolog. In Proc. of the ACM Symp. Principles of Programming Languages, pages 255–267. ACM, 1982.Google Scholar
  27. [27]
    J. Komorowski. Towards synthesis of programs in the framework of partial deduction. In Proc. of the Workshop on Automating Software Design, XIth International Joint Conference on Artificial Intelligence. Kestrel Institute, August 1989.Google Scholar
  28. [28]
    J. Komorowski. Elements of a programming methodology founded on partial deduction — part 1. In Z. Ras, editor, Proc. of the Int. Symp. on Methodologies for Intelligent Systems. North Holland, October 1990. Knoxville, Tennessee.Google Scholar
  29. [29]
    J. Komorowski. Towards a programming methodology founded on partial deduction. In Proc. of the European Conference on Artificial Intelligence. Pitman Publ. Co., August 1990.Google Scholar
  30. [30]
    R. Kowalski. Logic for Problem Solving, volume 7 of Artificial Intelligence Series. North Holland, 1979.Google Scholar
  31. [31]
    J. Lahtivuori. An Environment for Partial Deduction and Its Use for Structuring Logic Programs. Master's thesis, Åbo Akademi University, 1990. In Swedish.Google Scholar
  32. [32]
    J. Lam and A. Kusalik. A partial evaluation of partial evaluators for pure prolog. TR-90 1, Department of Computational Science, University of Saskatchewan, 1990.Google Scholar
  33. [33]
    J. W. Lloyd. Foundations of Logic Programming. Springer Verlag, second edition, 1987.Google Scholar
  34. [34]
    J. W. Lloyd and J. C. Shepherdson. Partial evaluation in logic programming. Journal of Logic Programming, 1991. (also, TR-87-09, Dept. of Comp. Sc., U. of Bristol).Google Scholar
  35. [35]
    Å. Mæhle. Explanation-based learning and partial deduction. In Proc. of Norsk Informatikk Konferanse, pages 175–188, Trondheim, Norway, 1991.Google Scholar
  36. [36]
    U. Nilsson and J. Maluszynski. Logic, Programming and Prolog. John Wiley and Sons, 1990.Google Scholar
  37. [37]
    A. Pettorossi and M. Proietti. Decidability results and characterization of strategies for the development of logic programs. In Proc. of the International Conf. on Logic Programming, Lisabon, Portugal, 1989. MIT Press.Google Scholar
  38. [38]
    A. Pettorossi and M. Proietti. The loop absorption and the generalization strategies for the development of logic programs and partial deduction. In J. Komorowski, editor, Special Issue of the Journal of Logic Programming on Partial Deduction. North-Holland, 1992. to appear.Google Scholar
  39. [39]
    L. Pliimer. Termination proofs of logic programs, volume LNCS 446 of Ines. Springer Verlag, C, 1990.Google Scholar
  40. [40]
    D. Sahlin. An Automatic Partial Evaluator for Full Prolog. PhD thesis, Kungliga Tekniska Högskolan, Stockholm, Sweden, 1991. Report TRITA-TCS-9101, 170 pages.Google Scholar
  41. [41]
    T. Sato. An equivalence preserving first order unfold/fold transformation system. In H. Kirchner and W. Wechler, editors, Algebraic and Logic Programming, Second International Conference, Nancy, France, October 1990. (Lecture Notes in Computer Science, vol. 463), pages 173–188. Springer-Verlag, 1990.Google Scholar
  42. [42]
    D. De Schreye. Termination of logic programs: Tutorial notes. In A. Pettorossi, editor, Proceedings of the Workshop on Metaprogramming, Uppsala, 1992. Springer Verlag, to appear.Google Scholar
  43. [43]
    D. De Schreye, K. Verschaetse, and M. Bruynooghe. A framework for analysing the termination of definite logic programs. In Proceedings of FGCS92, 1992. to appear.Google Scholar
  44. [44]
    A. Takeuchi and K. Furukawa. Partial evaluation of Prolog programs and its application to meta programming. In H.-J. Kugler, editor, Information Processing 86, Dublin, Ireland, pages 415–420. North-Holland, 1986.Google Scholar
  45. [45]
    H. Tamaki and T. Sato. Unfold/fold transformation of logic programs. In S.-Å. Tärnlund, editor, iclp, pages 127–138, 1984.Google Scholar
  46. [46]
    D. S. Warren. Memoing for logic programs. In Special Issue of the CACM on Logic Programming. ACM, March 1992.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1992

Authors and Affiliations

  • Jan Komorowski
    • 1
  1. 1.Department of Computer Science and Electrical Engineering The Norwegian Institute of TechnologyThe University of TrondheimTrondheimNorway

Personalised recommendations