An Introduction to Partial Deduction

  title={An Introduction to Partial Deduction},
  author={Jan Komorowski},
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… 

Towards Refinement of Definite Logic Programs

Refinement rules formalize the so called “Laws of Programming” and thus they constitute a basis for a mechanical system that can approximate human knowledge of programming.

The Effect of Partial Deduction in Abductive Reasoning

It is presented in this paper that normal partial deduction does not preserve explanations for abductive reasoning, and an alternative method of partial deduction is provided, called abductive partial deduction, which is shown to preserve the meanings of abductive logic programs.

Partial Deduction of Disjunctive Logic Programs: A Declarative Approach

A new partial deduction technique for disjunctive logic programs is introduced, and it is shown that it preserves the minimal model semantics of positive dis junctive programs, and the stable model semantics in normal disjunctions programs.

Ecological Partial Deduction: Preserving Characteristic Trees Without Constraints

The problem has been solved for purely determinate unfolding rules and definite programs in [12, 13] by using constraints inside the partial deduction process.

Contents 1 Introduction 1 2 Oo-line Partial Deduction 3

The so called cogen approach to program specialisation writing a compiler generator instead of a specialiser has been used with considerable success in partial evaluation of both functional and

Partial Deduction of the Ground Representation and its Application to Integrity Checking

This paper presents a solution which uses a novel implementation of the ground representation and an improved partial deduction strategy and is able to overcome the diiculties and produce highly specialised and eecient pre-compiled integrity checks through partial deduction of meta-interpreters.

Logic program specialisation through partial deduction: Control issues

This survey and tutorial presents the main developments in controlling partial deduction over the past 10 years and analyses their respective merits and shortcomings and ends with an assessment of current achievements and sketches some remaining research challenges.

Ensuring Global Termination of Partial Deduction while Allowing Flexible Polyvariance

A quite general framework is formulated where this set of distinct ``partially deduced'' atoms generated during partial deduction is represented as a tree structure and a well-founded order among such structures is defined, thus obtaining a foundation for certified global termination of partial deduction.

Constrained partial deduction and the preservation of characteristic trees

This paper presents a terminating partial deduction strategy which, for purely determinate unfolding rules, induces no loss of local specialisation due to the abstraction while ensuring correctness of the specialised programs.


A new partial deduction technique, called disjunctive partial deduction, is introduced, which preserves the minimal model semantics of positive dis junctive programs and the stable model semanticsof normal disjunctions programs.



Loop checking in partial deduction

  • R. Bol
  • Mathematics
    J. Log. Program.
  • 1993

A specification of an abstract Prolog machine and its application to partial evaluation

This work investigates partial evalution of Prolog programs as a part of a theory of interactive, incremental programming, and outlines how meta-rules that control the execution of the Prolog program can be incorporated into the system in a clean way.

Partial evaluation as a means for inferencing data structures in an applicative language: a theory and implementation in the case of prolog

Transformations which account for pruning, forward data structure propagation and opening are formally introduced and proved to preserve meaning of programs and are related to research in rule-based systems and logic.

Foundations of Logic Programming

Tutorial on Termination of Logic Programs

A general introduction to termination analysis for logic programs, with focus on universal termination of SLD-derivations and on definite programs, and recalls the notions of recurrency and acceptability from the works of Apt, Bezem and Pedreschi.

Logic, programming and Prolog

This edition introduces major new developments in a continually evolving field and includes such topics as concurrency and equational and constraint logic programming.

Partial Evaluation in Logic Programming

Proving Termination of General Prolog Programs

The notion of an acceptable program is introduced and it is proved that acceptable programs are left terminating, providing a practical method of proving termination.