From Interpreter to Logic Engine by Defunctionalization
Biernacki Dariusz
March 2004 |
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
(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
Available as PostScript, PDF, DVI. |