z-logo
open-access-imgOpen Access
From Interpreter to Logic Engine by Defunctionalization
Author(s) -
Dariusz Biernacki,
Olivier Danvy
Publication year - 2004
Publication title -
brics report series
Language(s) - English
Resource type - Journals
eISSN - 1601-5355
pISSN - 0909-0878
DOI - 10.7146/brics.v11i5.21830
Subject(s) - programming language , interpreter , prolog , computer science , logic programming , program transformation , denotational semantics , operational semantics , propositional calculus , abstract machine , continuation , semantics (computer science) , theoretical computer science , algebra over a field , mathematics , pure mathematics
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.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here