How to invent a prolog machine
New Generation Computing
A verified Prolog compiler for the Warren Abstract Machine
Journal of Logic Programming
Analysis of Or-parallel execution models
ACM Transactions on Programming Languages and Systems (TOPLAS)
XSB as an efficient deductive database engine
SIGMOD '94 Proceedings of the 1994 ACM SIGMOD international conference on Management of data
Practical program analysis using general purpose logic programming systems—a case study
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Memory management for Prolog with tabling
Proceedings of the 1st international symposium on Memory management
An abstract machine for tabled execution of fixed-order stratified logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
CAT: The Copying Approach to Tabling
PLILP '98/ALP '98 Proceedings of the 10th International Symposium on Principles of Declarative Programming
Efficient Model Checking Using Tabled Resolution
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Suspending and Resuming Computations in Engines for SLG Evaluation
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Segment Order Preserving and Generational Garbage Collection for Prolog
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Towards a Complete Scheme for Tabled Execution Based on Program Transformation
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
A Tabling Implementation Based on Variables with Multiple Bindings
ICLP '09 Proceedings of the 25th International Conference on Logic Programming
Hi-index | 0.00 |
CHAT offers an alternative to SLG-WAM for implementing the suspension eind resumption of consumers that tabling needs; unlike SLG-WAM, it does not use freeze registers nor a complicated trail to preserve their execution environments. CHAT Eilso limits the amount of copying of CAT, which was previously put forward as another alternative to SLG-WAM. Although experimented results show that in practice CHAT is competitive with -- if not better than -- SLG-WAM, there remains the annoying fact that on contrived programs the original CHAT can be made arbitraxily worse than SLG-WAM, i.e. the original CHAT has an intrinsically higher complexity. In this paper we show how to overcome this problem, in particular, we deal with the two sources of higher complexity of CHAT: the repeated traversal of the choice point stack, and the lack of sufficient sharing of the trail. This is achieved without fundamentally changing the underlying principle of CHAT by a technique that manipulates a Prolog choice point so that it assumes temporarily a different functionality and in a way that is transparent to the underlying WAM. There is more potential use of this technique besides lowering the worst case complexity of CHAT: it leads to considering scheduling strategies that were not feasible before either in CHAT or in SLG-WAM. We also discuss extensively issues related to the implementation of the trail in a tabled logic programming system.