Issue No. 04 - July-August (1997 vol. 9)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/69.617050
<p><b>Abstract</b>—Unlike SLD resolution as implemented in Prolog, tabled evaluation with delaying guarantees termination for function-free logic programs, avoids repeated computation of identical subqueries, and handles recursion through negation. It is often used in query processing and nonmonotonic reasoning where termination is required. This paper presents a new technique for incorporating tabled evaluation into existing Prolog systems. It requires neither time consuming modifications of a Prolog engine nor metainterpretation that can enormously slow down program execution. Instead, using a program transformation approach, the technique allows effective use of the advanced Prolog technology. The transformed program uses tabling primitives implemented externally in C that provide direct control over the search strategies. This brings efficiency as well as portability across Prolog systems. Experiences with a prototype implementation indicate that the approach results in a flexible and pragmatic method for query processing and nonmonotonic reasoning on top of Prolog. Performance measurements show that the method is efficient for practical applications.</p>
Tabled evaluation, query processing, program transformation, nonmonotonic reasoning, search strategy.
R. Ramesh and W. Chen, "Implementation of Tabled Evaluation with Delaying in Prolog," in IEEE Transactions on Knowledge & Data Engineering, vol. 9, no. , pp. 559-574, 1997.