Making exhaustive search programs deterministic
New Generation Computing
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Representation and enumeration of flat Concurrent Prolog computations
Concurrent Prolog: collected papers
Compiling or-parallelism into and-parallelism
Concurrent Prolog: collected papers
Or-parallel Prolog in flat Concurrent Prolog
Concurrent Prolog: collected papers
New Generation Computing
First order compiler: A deterministic logic program synthesis algorithm
Journal of Symbolic Computation
Meta-programming in logic programming
Meta-programming in logic programming
Handbook of theoretical computer science (vol. B)
ICLP'93 Proceedings of the tenth international conference on logic programming on Logic programming
Ambivalent logic as the semantic basis of metalogic programming: I
Proceedings of the eleventh international conference on Logic programming
Mixtus: an automatic partial evaluator for full Prolog
New Generation Computing
Meta-logics and logic programming
Meta-logics and logic programming
Using meta-logic to reconcile reactive with rational agents
Meta-logics and logic programming
Chart parsers as inference systems for fixed-mode logic programs
New Generation Computing
From logic programming to Prolog
From logic programming to Prolog
Algorithmic Program DeBugging
Simple Program Schemes and Formal Languages
Simple Program Schemes and Formal Languages
Program Transformations and WAM-Support for the Compilation of Definite Metaprograms
Proceedings of the First Russian Conference on Logic Programming
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
Towards a Unified Agent Architecture that Combines Rationality with Reactivity
LID '96 Proceedings of the International Workshop on Logic in Databases
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
Development reuse and the logic program derivation of two string-matching algorithms
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Hi-index | 0.00 |
Many metainterpreters found in the logic programming literature are nondeterministic in the sense that the selection of program clauses is not determined. Examples are the familiar ‘demo’ and ‘vanilla’ metainterpreters. For some applications this nondeterminism is convenient. In some cases, however, a deterministic metainterpreter, having an explicit selection of clauses, is needed. Such cases include (1) conversion of OR parallelism into AND parallelism for ‘committed-choice’ processors, (2) logic-based, imperative-language implementation of search strategies, and (3) simulation of bounded-resource reasoning. Deterministic metainterpreters are difficult to write because the programmer must be concerned about the set of unifiers of the children of a node in the derivation tree. We argue that it is both possible and advantageous to write these metainterpreters by reasoning in terms of object programs converted into a syntactically restricted form that we call ‘chain’ form, where we can forget about unification, except for unit clauses. We give two transformations converting logic programs into chain form, one for ‘moded’ programs (implicit in two existing exhaustive-traversal methods for committed-choice execution), and one for arbitrary definite programs. As illustrations of our approach we show examples of the three applications mentioned above.