Declarative Debugging with
The Transparent Prolog Machine (TPM)
Mike Brayshaw and Marc Eisenstadt
Human Cognition Research Laboratory
The Open University
Milton Keynes MK7 6AA, UK
ECAI-88 Paper Submission, February, 1988
Abstract: The underlying philosophy of the Transparent Prolog Machine (TPM) is that it
should serve as a medium for visualising the execution of Prolog programs in a manner which
is rigorously faithful to the internal behaviour of the Prolog interpreter. It is therefore highly
biased towards the procedural account of Prolog execution. Although this is useful for certain
types of practical program debugging, a true logic programming paradigm demands a more
declarative account. Since TPM already incorporates special displays to show unification
details and goal outcomes, a straightforward extension enables the user to intervene to say
whether a particular unification (or indeed any particular goal outcome) was desirable ('thumbs
up') or undesirable ('thumbs down'). This intervention can take place either during 'live'
execution, or else retrospectively, after execution is complete. This technique can be
combined with a selective highlighting facility which takes the user directly to a particular context-sensitive point in the execution history, and with TPM's 'replay' facility which allows execution to be played forward or backward at different speeds and different grain-sizes of
analysis. The combination of techniques enables the user to mix a truly declarative debugging style for clean logic programs with a procedural style for those cases which demand it. The paper presents worked examples of this new mixed paradigm.
Section: Logic Programming
Length: 5000 Words
The Transparent Prolog Machine (TPM) was introduced in (Eisenstadt and Brayshaw
1986; 1987) as a method of graphically displaying the execution of Prolog programs. The
original conception of TPM emphasised fidelity to the underlying workings of the Prolog
interpreter. While this provides many convenient conceptual 'hooks' for both novice
learners and expert debuggers, it weds TPM overwhelmingly to a procedural account of
Ideally, logic programs can be looked at declaratively, and divorced from the underlying execution machinery. Our aim in this paper is to show how straightforward extensions to TPM enable it to handle both declarative and procedural debugging styles. The key insights which drive this work are (a) that Prolog programming in practice involves the integration of both declarative and procedural techniques, and (b) user intervention in the form of 'thumbs up' or 'thumbs down' indications at critical points in the TPM animated display can provide vital 'anchor points' from which a declarative analysis of program behaviour can be performed.
Our work draws from the existing work in declarative debugging (Shapiro, 1982; Lloyd, 1986). The use of terms instead of literals as the basis for driving the bug location and the location algorithm are taken from rational debugging (Pereira,1986). Where we differ is in the graphical nature of the interaction and the intergration of such a debugging methodology into a large debugging system. The use of a stored trace history is also used by (Huntback, 1987; Sterling and Shapiro, 1986). In this paper we shall use the term declarative debugging to include both rational and algorithmic approaches.