Results 1  10
of
11
Logic program specialisation through partial deduction: Control issues
 THEORY AND PRACTICE OF LOGIC PROGRAMMING
, 2002
"... Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It ..."
Abstract

Cited by 54 (12 self)
 Add to MetaCart
Program specialisation aims at improving the overall performance of programs by performing source to source transformations. A common approach within functional and logic programming, known respectively as partial evaluation and partial deduction, is to exploit partial knowledge about the input. It is achieved through a wellautomated application of parts of the BurstallDarlington unfold/fold transformation framework. The main challenge in developing systems is to design automatic control that ensures correctness, efficiency, and termination. This survey and tutorial presents the main developments in controlling partial deduction over the past 10 years and analyses their respective merits and shortcomings. It ends with an assessment of current achievements and sketches some remaining research challenges.
Schreye. Termination Proofs for Logic Programs with Tabling
 ACM Transactions on Computational Logic
, 2001
"... Tabled evaluation is receiving increasing attention in the logic programming community. It avoids many of the shortcomings of SLD execution and provides a more flexible and often considerably more efficient execution mechanism for logic programs. In particular, tabled execution terminates more often ..."
Abstract

Cited by 19 (3 self)
 Add to MetaCart
Tabled evaluation is receiving increasing attention in the logic programming community. It avoids many of the shortcomings of SLD execution and provides a more flexible and often considerably more efficient execution mechanism for logic programs. In particular, tabled execution terminates more often than execution based on SLDresolution. In this article, we introduce two notions of universal termination of logic programming with tabling: quasitermination and (the stronger notion of) LGtermination. We present sufficient conditions for these two notions of termination, namely quasiacceptability and LGacceptability, and we show that these conditions are also necessary in case the selection of tabled predicates meets certain natural criteria. Starting from these conditions, we develop modular termination proofs, i.e., proofs capable of combining termination proofs of separate programs to obtain termination proofs of combined programs. Finally, in the presence of mode information, we state sufficient conditions which form the basis for automatically proving termination in a constraintbased way.
Creating Specialised Integrity Checks Through Partial Evaluation Of MetaInterpreters
, 1994
"... ..."
Termination Analysis for Tabled Logic Programming
 In Proc. of LOPSTR’97
, 1997
"... We provide a theoretical basis for studying the termination of tabled logic programs executed under SLGresolution using a lefttoright computation rule. To this end, we study the classes of quasiterminating and LGterminating programs (for a set of atomic goals S). These are tabled logic programs ..."
Abstract

Cited by 18 (10 self)
 Add to MetaCart
We provide a theoretical basis for studying the termination of tabled logic programs executed under SLGresolution using a lefttoright computation rule. To this end, we study the classes of quasiterminating and LGterminating programs (for a set of atomic goals S). These are tabled logic programs where execution of each call from S leads to only a finite number of different (i.e., nonvariant) calls, and a finite number of different calls and computed answer substitutions for them, respectively. We then relate these two classes through a program transformation, and present a characterisation of quasitermination by means of the notion of quasiacceptability of tabled programs. The latter provides us with a practical method of proving termination and the method is illustrated on nontrivial examples of tabled logic programs.
A Polyvariant BindingTime Analysis for Offline Partial Deduction
 Proceedings of the European Symposium on Programming (ESOP’98), LNCS 1381
, 1998
"... We study the notion of bindingtime analysis for logic programs. We formalise the unfolding aspect of an online partial deduction system as a Prolog program. Using abstract interpretation, we collect information about the runtime behaviour of the program. We use this information to make the contro ..."
Abstract

Cited by 15 (11 self)
 Add to MetaCart
We study the notion of bindingtime analysis for logic programs. We formalise the unfolding aspect of an online partial deduction system as a Prolog program. Using abstract interpretation, we collect information about the runtime behaviour of the program. We use this information to make the control decisions about the unfolding at analysis time and to turn the online system into an offline system. We report on some initial experiments.
QuasiTerminating Logic Programs for Ensuring the Termination of Partial Evaluation
 In Proc. of the ACM SIGPLAN 2007 Workshop on Partial Evaluation and Program Manipulation (PEPM’07
, 2007
"... Abstract. A logic program strongly quasiterminates when only a finite number of distinct atoms (modulo variable renaming) are derivable from any given query and computation rule. This notion of quasitermination, though stronger than related notions that only consider Prolog’s computation rule, is ..."
Abstract

Cited by 9 (5 self)
 Add to MetaCart
Abstract. A logic program strongly quasiterminates when only a finite number of distinct atoms (modulo variable renaming) are derivable from any given query and computation rule. This notion of quasitermination, though stronger than related notions that only consider Prolog’s computation rule, is essential for ensuring the termination of partial evaluation, where liberal selection policies are often mandatory to achieve a good specialization. In this paper, we introduce sufficient conditions for the strong termination and quasitermination of logic programs which are based on the construction of sizechange graphs. The class of strongly quasiterminating logic programs, however, is too restricted. Therefore, we also introduce an annotation procedure that annotates those predicate arguments which are responsible of the nonquasitermination. As a consequence, the annotated program behaves like a quasiterminating program if annotated arguments are generalized (i.e., replaced by a fresh variable) when they occur in a computation. We illustrate the usefulness of our approach by designing a simple partial evaluator in which global termination is always ensured offline (i.e., statically). A prototype implementation demonstrates its viability. 1
Modular Termination Proofs for Prolog with Tabling
, 1999
"... Tabling avoids many of the shortcomings of SLD(NF) execution and provides a more exible and ecient execution mechanism for logic programs. In particular, tabled execution of logic programs terminates more often than execution based on SLDresolution. One of the few works studying termination under a ..."
Abstract

Cited by 8 (4 self)
 Add to MetaCart
Tabling avoids many of the shortcomings of SLD(NF) execution and provides a more exible and ecient execution mechanism for logic programs. In particular, tabled execution of logic programs terminates more often than execution based on SLDresolution. One of the few works studying termination under a tabled execution mechanism is that of Decorte et al. They introduce and characterise two notions of universal termination of logic programs w.r.t. sets of queries executed under SLGresolution, using the lefttoright selection rule; namely the notion of quasitermination and the (stronger) notion of LGtermination. This paper extends the results of Decorte et al in two ways: (1) we consider a mix of tabled and Prolog execution, and (2) besides a characterisation of the two notions of universal termination under such a mixed execution, we also give modular termination conditions. From both practical and efficiency considerations, it is important to allow tabled and nontabled predicates to be freely intermixed. This motivates the first extension. Concerning the second extension, it was already noted in the literature in the context of termination under SLDresolution (by e.g. Apt and Pedreschi), that it is important for programming in the large to have modular termination proofs, i.e. proofs that are capable of combining termination proofs of separate programs to obtain termination proofs of combined programs.
Partial Deduction System
 In Proc. of the ILPS'97 Workshop on Tools and Environments for (Constraint) Logic Programming, U.P
, 1997
"... We present the fully automatic partial deduction system ecce, which can be used to specialise and optimise logic programs. We describe the underlying principles of ecce and illustrate some of the potential application areas. Interesting possibilites of crossfertilisation with other fields such as r ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
We present the fully automatic partial deduction system ecce, which can be used to specialise and optimise logic programs. We describe the underlying principles of ecce and illustrate some of the potential application areas. Interesting possibilites of crossfertilisation with other fields such as reachability analysis of concurrent systems and inductive theorem proving are highlighted and substantiated. 1 Introduction Program specialisation, also called partial evaluation or partial deduction, is an automatic technique for program optimisation. The central idea is to specialise a given source program for a particular application domain. Program specialisation encompasses traditional compiler optimisation techniques, such as constant folding and inlining, but uses more aggressive transformations, yielding both the possibility of obtaining (much) greater speedups and more difficulty in controlling the transformation process. In addition to achieving important speedups, program special...
Termination of SimplyModed WellTyped Logic Programs under a Tabled Execution Mechanism
, 2001
"... Tabled logic programming is receiving increasing attention in the Logic Programming community. It avoids many of the shortcomings of SLD(NF) execution and provides a more flexible and often extremely efficient execution mechanism for logic programs. In particular, tabled execution of logic programs ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
Tabled logic programming is receiving increasing attention in the Logic Programming community. It avoids many of the shortcomings of SLD(NF) execution and provides a more flexible and often extremely efficient execution mechanism for logic programs. In particular, tabled execution of logic programs terminates more often than execution based on SLDresolution. So, if a program can be proven to terminate under SLDresolution, then the program will trivially also terminate under SLGresolution, the resolution principle of tabling. But, since there are SLGterminating programs which are not SLDterminating, more effective proof techniques can be found. One of the few approaches studying termination of tabled logic programs was developed by Decorte et al. They present necessary and sufficient conditions for two notions of termination under LGresolution, i.e. SLGresolution with lefttoright selection rule: quasitermination and (the stronger notion of) LGtermination. Starting from these necessary and sufficient conditions, we introduce sufficient conditions for quasitermination and LGtermination which are stated fully at the clause level and are easy to automatize. To this end, we use mode and type information: we consider simplymoded, welltyped programs and queries. We point out how our termination conditions can be automatized, by extending the recently developed, constraintbased, automatic termination analysis for SLDresolution of Decorte and De Schreye. Finally, we present a result on substitutionclosedness of quasitermination and LGtermination for the class of simplymoded, welltyped programs and queries.
A Memoizing Semantics for Functional Logic Languages
 IN PROC. ESOP 2004
, 2004
"... Declarative multiparadigm languages combine the main features of functional and logic programming, like laziness, logic variables and nondeterminism. The operational semantics of these languages is based on a combination of narrowing and residuation. In this article, we introduce a nonstandar ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
Declarative multiparadigm languages combine the main features of functional and logic programming, like laziness, logic variables and nondeterminism. The operational semantics of these languages is based on a combination of narrowing and residuation. In this article, we introduce a nonstandard memoizing semantics for multiparadigm declarative programs and prove its equivalence with the standard operational semantics. Both pure functional and pure logic programming have for long time taken advantage of tabling or memoizing schemes [15,19,7], which motivates the interest in the adapation of this technique to the integrated paradigm.