The Copying Approach to Tabling, abbrv. CAT, is an alternative to SLG-WAM and based on total copying of the areas that SLG-WAM freezes to preserve execution states of suspended computations. The disadvantage of CAT as pointed out in a previous paper is that in the worst case, CAT must copy so much that it becomes arbitrarily worse than SLG-WAM. Remedies to this problem have been studied, but a completely satisfactory solution has not emerged. Here, a hybrid approach is presented: CHAT. Its design was guided by the requirement that for non-tabled (i.e. Prolog) execution no changes to the underlying WAM engine need to be made. CHAT combines certain features of the SLG-WAM with features of CAT, but also introduces a technique for freezing WAM stacks without the use of the SLG-WAM's freeze registers that is of independent interest. Empirical results indicate that CHAT is a better choice for implementing the control of tabling than SLG-WAM and CAT. However, programs with arbitrarily worse behaviour exist. Abstract The SLG-WAM implements tabling by freezing the WAM stacks: this implementation technique has a reasonably small execution overhead, but is not easy to implement on top of an existing Prolog system. We here propose a new approach to the implementation of tabling: the Copying Approach to Tabling. CAT interferes absolutely not with normal Prolog execution and can be introduced in an existing Prolog system orthogonally. We have implemented CAT starting from XSB (i.e. taking out SLG-WAM and adding CAT) and the results show that in practical programs CAT slightly outperforms the SLG-WAM. We give a detailed account of the additions to be made to a WAM implementation for adopting CAT. We show a case in which CAT performs arbitrarily worse than SLG-WAM, but on the other hand we present empirical evidence that CAT is competitive and often faster than SLG-WAM. We discuss issues related to memory management and the impact of the scheduling strategy.
[1]
S.,et al.
Tabling Mechanisms for Logic Programs
,
1995
.
[2]
Gerda Janssens,et al.
On the Use of Tabling for Abstract Interpretation: An Experiment with Abstract Equation Systems
,
1998,
TAPD.
[3]
Bart Demoen,et al.
Semantics-based program analysis for logic-based languages using XSB
,
1998,
International Journal on Software Tools for Technology Transfer.
[4]
Konstantinos Sagonas,et al.
An abstract machine for tabled execution of fixed-order stratified logic programs
,
1998,
TOPL.
[5]
Bart Demoen,et al.
Memory management for Prolog with tabling
,
1998,
ISMM '98.
[6]
Pierre-Etienne Moreau.
A Choice-Point Library for Backtrack Programming
,
1998,
Implementation Technology for Programming Languages based on Logic.
[7]
K. A. Ross,et al.
Tabled Evaluation with Delaying for General Logic Programs
,
1996
.
[8]
I. V. Ramakrishnan,et al.
Eecient Tabling Mechanisms for Logic Programs
,
1995
.
[9]
Konstantinos Sagonas,et al.
Xsb as an Eecient Deductive Database Engine
,
1994
.
[10]
Juliana Freire,et al.
Beyond Depth-First Strategies: Improving Tabled Logic Programs through Alternative Scheduling
,
1998,
J. Funct. Log. Program..
[11]
David H. D. Warren,et al.
The SRI Model for Or-Parallel Execution of Prolog: Abstract Design and Implementation Issues
,
1987,
SLP.