2011
Authors
Cruz, F; Rocha, R;
Publication
THEORY AND PRACTICE OF LOGIC PROGRAMMING
Abstract
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.
2011
Authors
Rocha, R; Launchbury, J;
Publication
PADL
Abstract
2006
Authors
Rocha, R;
Publication
LOGIC PROGRAMMING, PROCEEDINGS
Abstract
2006
Authors
Silva, C; Rocha, R; Lopes, R;
Publication
LOGIC PROGRAMMING, PROCEEDINGS
Abstract
2008
Authors
de Guzman, PC; Carro, M; Hermenegildo, MV; Silva, C; Rocha, R;
Publication
PRACTICAL ASPECTS OF DECLARATIVE LANGUAGES, PROCEEDINGS
Abstract
Tabled evaluation has been proved an effective method to improve several aspects of goal-oriented query evaluation, including termination and complexity. Several "native" implementations of tabled evaluation have been developed which offer good performance, but many of them require significant changes to the underlying Prolog implementation, including the compiler and the abstract machine. Approaches based on program transformation, which tend to minimize changes to both the Prolog compiler and the abstract machine, have also been proposed, but they often result in lower efficiency. We explore some techniques aimed at combining the best of these worlds, i.e., developing an extensible implementation which requires minimal modifications to the compiler and the abstract machine, and with reasonably good performance. Our preliminary experiments indicate promising results.
2007
Authors
Rocha, R; Silva, C; Lopes, R;
Publication
Logic Programming, Proceedings
Abstract
The access to the final selection minute is only available to applicants.
Please check the confirmation e-mail of your application to obtain the access code.