Garbarge collection for Prolog based on WAM
Communications of the ACM
The muse approach to Or-parallel Prolog
International Journal of Parallel Programming
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
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
An abstract machine for tabled execution of fixed-order stratified logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Segment order preserving copying garbage collection for WAM based Prolog
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
A time- and space-efficient garbage compaction algorithm
Communications of the ACM
A nonrecursive list compacting algorithm
Communications of the ACM
Dynamic Memory Management for Sequential Logic Programming Languages
IWMM '92 Proceedings of the International Workshop on Memory Management
A Simple and Efficient Copying Garbage Collector for Prolog
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
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
LPAR '99 Proceedings of the 6th International Conference on Logic Programming and Automated Reasoning
CHAT: The Copy-Hybrid Approach to Tabling
PADL '99 Proceedings of the First International Workshop on Practical Aspects of Declarative Languages
Heap Garbage Collection in XSB: Practice and Experience
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Tabling can be implemented in a (WAM-based) Prolog system by means of SLG-WAM: consumers suspend and their state is preserved by freezing the execution stacks. XSB is a system that currently implements tabling based on the SLG-WAM. The memory model is quite complex and attempts to understand the notion of usefulness of data in XSB well enough to build a precise garbage collector have failed in the past. CAT is a recent alternative to SLG-WAM: it suspends consumers by copying parts of the execution stacks. The memory model is simpler and the design of a more precise garbage collector became feasible. CAT also provided the necessary insights in the usefulness of data in the context of the SLG-WAM. This paper describes the memory management of tabled logic programming systems, whether based on the SLG-WAM or on CAT. Since CAT can perform arbitrarily worse than SLG-WAM space-wise, a minor garbage collection on creation of the CAT areas is proposed as a remedy; its effectiveness is discussed.