Concurrent Prolog
Parallel logic programming techniques
Parallel logic programming techniques
Journal of Logic Programming
Kernel Andorra Prolog and its computation model
Logic programming
Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
From decision trees to decision graphs
Proceedings of the 1990 North American conference on Logic programming
Performance evaluation of Monaco compiler and runtime kernel
ICLP'93 Proceedings of the tenth international conference on logic programming on Logic programming
Monaco: A High-Performance Flat Concurrent Logic Programming System
PARLE '93 Proceedings of the 5th International PARLE Conference on Parallel Architectures and Languages Europe
Unification factoring for efficient execution of logic programs
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principles and practice of unification factoring
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
This paper describes an algorithm for the code generation of determinacy testing for nondeterminate flat concurrent logic programming languages. Languages such as Andorra and Pandora require that procedure invocations suspend if there is more than one candidate clause potentially satisfying the goal. The algorithm described has been developed specifically for a variant of flat Pandora based on FGHC, although the concepts are general. We have extended Kliger and Shapiro's decision-graph construction algorithm to compile “don't-know” procedures that must suspend for nondeterminate goal invocation. The determinacy test is compiled into a decision graph quite different from those of committed-choice procedures: They are more similar to decision trees optimized by code sharing. We present both empirical data of compilation results (code size and graph characteristics), and a correctness proof for our code-generation algorithm.