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.
References
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.
L. Beckman et al. A partial evaluator, and its use as a programming tool. Artificial Intelligence, 7(4):319–357, 1976.
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.
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.
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.
A. Bondorf. Self-Applicable Partial Evaluation. PhD thesis, DIKU, University of Copenhagen, Denmark, 1990. Revised version: DIKU Report 90/17.
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.
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.
R. M. Burstall and J. Darlington. Some transformations for developing recursive programs. Journal of ACM, 24(1):44–67, 1977.
T. E. Cheatham, G. H. Holloway, and J. A. Townley. Symbolic evaluation and analysis of programs. IEEE Transactions on Software Engineering, 5(4), 1979.
K. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Data Bases, pages 293–322. Plenum Press, 1978.
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.
P. Emanuelson and A. Haraldsson. On compiling embedded languages in Lisp. In 1980 Lisp Conference, Stanford, California, pages 208–215, 1980.
A. Ershov. On the essence of compilation. In E. Neuhold, editor, Formal Description of Programming Concepts, pages 391–420. North-Holland, 1978.
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.
Y. Futamura. Partial evaluation of computation process — an approach to a compiler-compiler. Systems, Computers, Controls, 2(5):45–50, 1971.
Y. Futamura. Program evaluation and generalized partial computation. In International Conference on Fifth Generation Computer Systems, Tokyo, Japan, pages 1–8, 1988.
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.
C. Gomard and N. Jones. A partial evaluator for the untyped lambdacalculus. Journal of Functional Programming, 1(1):21–69, January 1991.
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.
F. van Harmelen and A. Bundy. Explanation-Based Generalisation=Partial Evaluation. Journal of Artificial Intelligence, 36:401–412, 1988.
C. J. Hogger. Derivation of logic programs. Journal of ACM, 28(2):372–392, 1982.
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.
S. Kleene. Introduction to Metamathematics. D. van Nostrand, Princeton, New Jersey, 1952.
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.
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.
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.
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.
J. Komorowski. Towards a programming methodology founded on partial deduction. In Proc. of the European Conference on Artificial Intelligence. Pitman Publ. Co., August 1990.
R. Kowalski. Logic for Problem Solving, volume 7 of Artificial Intelligence Series. North Holland, 1979.
J. Lahtivuori. An Environment for Partial Deduction and Its Use for Structuring Logic Programs. Master's thesis, Åbo Akademi University, 1990. In Swedish.
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.
J. W. Lloyd. Foundations of Logic Programming. Springer Verlag, second edition, 1987.
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).
Å. Mæhle. Explanation-based learning and partial deduction. In Proc. of Norsk Informatikk Konferanse, pages 175–188, Trondheim, Norway, 1991.
U. Nilsson and J. Maluszynski. Logic, Programming and Prolog. John Wiley and Sons, 1990.
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.
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.
L. Pliimer. Termination proofs of logic programs, volume LNCS 446 of Ines. Springer Verlag, C, 1990.
D. Sahlin. An Automatic Partial Evaluator for Full Prolog. PhD thesis, Kungliga Tekniska Högskolan, Stockholm, Sweden, 1991. Report TRITA-TCS-9101, 170 pages.
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.
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.
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.
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.
H. Tamaki and T. Sato. Unfold/fold transformation of logic programs. In S.-Å. Tärnlund, editor, iclp, pages 127–138, 1984.
D. S. Warren. Memoing for logic programs. In Special Issue of the CACM on Logic Programming. ACM, March 1992.
Author information
Authors and Affiliations
Editor information
Rights 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