4,103 research outputs found
Towards a Complete Scheme for Tabled Execution Based on Program Transformation
The advantages of tabled evaluation regarding program termination and reduction of complexity are well known —as are the significant implementation, portability, and maintenance efforts that some proposals (especially those based on suspension) require. This implementation effort is reduced by program transformation-based continuation call techniques, at some efficiency cost. However, the traditional formulation of this proposal [1] limits the interleaving of tabled and non-tabled predicates and thus cannot be used as-is for arbitrary programs. In this paper we present a complete translation for the continuation call technique which, while requiring the same runtime support as the traditional approach, solves these problems and makes it possible to execute arbitrary tabled programs. We also present performance results which show that the resulting CCall approach offers a useful tradeoff that can be competitive with other state-of-the-art implementation
Automatic Generation of CHR Constraint Solvers
In this paper, we present a framework for automatic generation of CHR solvers
given the logical specification of the constraints. This approach takes
advantage of the power of tabled resolution for constraint logic programming,
in order to check the validity of the rules. Compared to previous works where
different methods for automatic generation of constraint solvers have been
proposed, our approach enables the generation of more expressive rules (even
recursive and splitting rules) that can be used directly as CHR solvers.Comment: to be published in Theory and Practice of Logic Programming, 16
pages, 2 figure
On Combining Linear-Based Strategies for Tabled Evaluation of Logic Programs
Tabled evaluation is a recognized and powerful technique that overcomes some
limitations of traditional Prolog systems in dealing with recursion and
redundant sub-computations. We can distinguish two main categories of tabling
mechanisms: suspension-based tabling and linear tabling. While suspension-based
mechanisms are considered to obtain better results in general, they have more
memory space requirements and are more complex and harder to implement than
linear tabling mechanisms. Arguably, the SLDT and DRA strategies are the two
most successful extensions to standard linear tabled evaluation. In this work,
we propose a new strategy, named DRS, and we present a framework, on top of the
Yap system, that supports the combination of all these three strategies. Our
implementation shares the underlying execution environment and most of the data
structures used to implement tabling in Yap. We thus argue that all these
common features allows us to make a first and fair comparison between these
different linear tabling strategies and, therefore, better understand the
advantages and weaknesses of each, when used solely or combined with the
others.Comment: 16 pages, 9 figures, International Conference on Logic Programming
(ICLP 2011
A Polyvariant Binding-Time Analysis for Off-line Partial Deduction
We study the notion of binding-time analysis for logic programs. We formalise
the unfolding aspect of an on-line partial deduction system as a Prolog
program. Using abstract interpretation, we collect information about the
run-time behaviour of the program. We use this information to make the control
decisions about the unfolding at analysis time and to turn the on-line system
into an off-line system. We report on some initial experiments.Comment: 19 pages (including appendix) Paper (without appendix) appeared in
Programming Languages and Systems, Proceedings of the European Symposium on
Programming (ESOP'98), Part of ETAPS'98 (Chris Hankin, eds.), LNCS, vol.
1381, 1998, pp. 27-4
- …