Skip to main content

An introduction to partial deduction

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 649))

Abstract

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.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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. L. Beckman et al. A partial evaluator, and its use as a programming tool. Artificial Intelligence, 7(4):319–357, 1976.

    Article  Google Scholar 

  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. 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. 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. A. Bondorf. Self-Applicable Partial Evaluation. PhD thesis, DIKU, University of Copenhagen, Denmark, 1990. Revised version: DIKU Report 90/17.

    Google Scholar 

  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. 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. R. M. Burstall and J. Darlington. Some transformations for developing recursive programs. Journal of ACM, 24(1):44–67, 1977.

    Google Scholar 

  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. 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. 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. P. Emanuelson and A. Haraldsson. On compiling embedded languages in Lisp. In 1980 Lisp Conference, Stanford, California, pages 208–215, 1980.

    Google Scholar 

  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. 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. Y. Futamura. Partial evaluation of computation process — an approach to a compiler-compiler. Systems, Computers, Controls, 2(5):45–50, 1971.

    Google Scholar 

  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. 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. 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. 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. F. van Harmelen and A. Bundy. Explanation-Based Generalisation=Partial Evaluation. Journal of Artificial Intelligence, 36:401–412, 1988.

    Google Scholar 

  22. C. J. Hogger. Derivation of logic programs. Journal of ACM, 28(2):372–392, 1982.

    Google Scholar 

  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. S. Kleene. Introduction to Metamathematics. D. van Nostrand, Princeton, New Jersey, 1952.

    Google Scholar 

  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. 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. 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. 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. 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. R. Kowalski. Logic for Problem Solving, volume 7 of Artificial Intelligence Series. North Holland, 1979.

    Google Scholar 

  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. 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. J. W. Lloyd. Foundations of Logic Programming. Springer Verlag, second edition, 1987.

    Google Scholar 

  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. Å. Mæhle. Explanation-based learning and partial deduction. In Proc. of Norsk Informatikk Konferanse, pages 175–188, Trondheim, Norway, 1991.

    Google Scholar 

  36. U. Nilsson and J. Maluszynski. Logic, Programming and Prolog. John Wiley and Sons, 1990.

    Google Scholar 

  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. 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. L. Pliimer. Termination proofs of logic programs, volume LNCS 446 of Ines. Springer Verlag, C, 1990.

    Google Scholar 

  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. 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. 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. 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. 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. H. Tamaki and T. Sato. Unfold/fold transformation of logic programs. In S.-Å. Tärnlund, editor, iclp, pages 127–138, 1984.

    Google Scholar 

  46. D. S. Warren. Memoing for logic programs. In Special Issue of the CACM on Logic Programming. ACM, March 1992.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

A. Pettorossi

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Komorowski, J. (1992). An introduction to partial deduction. In: Pettorossi, A. (eds) Meta-Programming in Logic. META 1992. Lecture Notes in Computer Science, vol 649. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-56282-6_4

Download citation

  • DOI: https://doi.org/10.1007/3-540-56282-6_4

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-56282-5

  • Online ISBN: 978-3-540-47505-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics