Tabled evaluation with delaying for general logic programs
Journal of the ACM (JACM)
An abstract machine for tabled execution of fixed-order stratified logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
OLD Resolution with Tabulation
Proceedings of the Third International Conference on Logic Programming
Proceedings of the 17th International Conference on Logic Programming
On applying or-parallelism and tabling to logic programs
Theory and Practice of Logic Programming
Automating branch-and-bound for dynamic programs
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Linear tabling strategies and optimizations
Theory and Practice of Logic Programming
An improved continuation call-based implementation of tabling
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
A simple and efficient implementation of concurrent local tabling
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
An efficient implementation of linear tabling based on dynamic reordering of alternatives
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Theory and Practice of Logic Programming - Prolog Systems
On improving the efficiency and robustness of table storage mechanisms for tabled evaluation
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Efficient tabling of structured data using indexing and program transformation
PADL'12 Proceedings of the 14th international conference on Practical Aspects of Declarative Languages
Efficient tabling of structured data with enhanced hash-consing
Theory and Practice of Logic Programming
Hi-index | 0.00 |
For any LP system, tabling can be quite handy in a variety of tasks, especially if it is efficiently implemented and fully integrated in the language. Implementing tabling in Mercury poses special challenges for several reasons. First, Mercury is both semantically and culturally quite different from Prolog. While decreeing that tabled predicates must not include cuts is acceptable in a Prolog system, it is not acceptable in Mercury, since if-then-elses and existential quantification have sound semantics for stratified programs and are used very frequently both by programmers and by the compiler. The Mercury implementation thus has no option but to handle interactions of tabling with Mercury’s language features safely. Second, the Mercury implementation is vastly different from the WAM, and many of the differences (e.g. the absence of a trail) have significant impact on the implementation of tabling. In this paper, we describe how we adapted the copying approach to tabling to implement tabling in Mercury.