From Interpreter to Logic Engine by Defunctionalization
Biernacki Dariusz
June 2003 |
Abstract:
Starting from a continuation-based interpreter for a simple
logic programming language, propositional Prolog with cut, we derive the
corresponding logic engine in the form of an abstract machine. The derivation
originates in previous work (our article at PPDP 2003) where it was applied
to the lambda-calculus. The key transformation here is Reynolds's
defunctionalization that transforms a tail-recursive, continuation-passing
interpreter into a transition system, i.e., an abstract machine. Similar
denotational and operational semantics were studied by de Bruin and de Vink
in previous work (their article at TAPSOFT 1989), and we compare their study
with our derivation. Additionally, we present a direct-style interpreter of
propositional Prolog expressed with control operators for delimited
continuations.
This report is superseded by the later report BRICS RS-04-5 |