2 research outputs found
Efficient Instance Retrieval of Subgoals for Subsumptive Tabled Evaluation of Logic Programs
Tabled evaluation is an implementation technique that solves some problems of
traditional Prolog systems in dealing with recursion and redundant
computations. Most tabling engines determine if a tabled subgoal will produce
or consume answers by using variant checks. A more refined method, named call
subsumption, considers that a subgoal A will consume from a subgoal B if A is
subsumed by (an instance of) B, thus allowing greater answer reuse. We recently
developed an extension, called Retroactive Call Subsumption, that improves upon
call subsumption by supporting bidirectional sharing of answers between
subsumed/subsuming subgoals. In this paper, we present both an algorithm and an
extension to the table space data structures to efficiently implement instance
retrieval of subgoals for subsumptive tabled evaluation of logic programs.
Experiments results using the YapTab tabling system show that our
implementation performs quite well on some complex benchmarks and is robust
enough to handle a large number of subgoals without performance degradation.Comment: Theory and Practice of Logic Programming, 27th Int'l. Conference on
Logic Programming (ICLP 2011) Special Issue, volume 11, issue 4-
Top-down and Bottom-up Evaluation Procedurally Integrated
This paper describes how XSB combines top-down and bottom-up computation
through the mechanisms of variant tabling and subsumptive tabling with
abstraction, respectively.
It is well known that top-down evaluation of logical rules in Prolog has a
procedural interpretation as recursive procedure invocation (Kowalski 1986).
Tabling adds the intuition of short-circuiting redundant computations (Warren
1992) .This paper shows how to introduce into tabled logic program evaluation a
bottom-up component, whose procedural intuition is the initialization of a data
structure, in which a relation is initially computed and filled, on first
demand, and then used throughout the remainder of a larger computation for
efficient lookup. This allows many Prolog programs to be expressed fully
declaratively, programs which formerly required procedural features, such as
assert, to be made efficient.
This paper is under consideration for acceptance in "Theory and Practice of
Logic Programming (TPLP)".Comment: Paper presented at the 34nd International Conference on Logic
Programming (ICLP 2018), Oxford, UK, July 14 to July 17, 2018, 16 pages,
LaTeX, 1 PDF figur