Results 1 
3 of
3
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
ABSTRACT QuasiTermination Analysis of Logic Programs Using SizeChange Graphs ∗
"... A logic program is quasiterminating when only a finite number of different calls—up to variable renaming—are derivable from any given goal. Ensuring the quasitermination of programs w.r.t. a class of goals is a relevant problem in several areas, like tabled evaluation or partial evaluation, where ..."
Abstract
 Add to MetaCart
A logic program is quasiterminating when only a finite number of different calls—up to variable renaming—are derivable from any given goal. Ensuring the quasitermination of programs w.r.t. a class of goals is a relevant problem in several areas, like tabled evaluation or partial evaluation, where quasitermination implies the full termination of the specialization process. In this work, we adapt the notion of sizechange graph to provide sufficient conditions for both termination and quasitermination of logic programs. Then, we illustrate the usefulness of our results by designing a simple partial evaluator of logic programs in which global termination is always ensured offline (i.e., statically). A prototype implementation demonstrates the viability of our approach.
Abstract QuasiTerminating Logic Programs for Ensuring the Termination of Partial Evaluation ∗
"... One of the most important challenges in partial evaluation is the design of automatic methods for ensuring the termination of specialisation. It is well known that the termination of partial evaluation can be ensured when the considered computations are quasiterminating, i.e., when only finitely man ..."
Abstract
 Add to MetaCart
One of the most important challenges in partial evaluation is the design of automatic methods for ensuring the termination of specialisation. It is well known that the termination of partial evaluation can be ensured when the considered computations are quasiterminating, i.e., when only finitely many different calls occur. In this work, we adapt the use of the so called sizechange graphs to logic programming and introduce new sufficient conditions for strong (i.e., w.r.t. any computation rule) termination and quasitermination. To the best of our knowledge, this is the first sufficient condition for the strong quasitermination of logic programs. The class of strongly quasiterminating logic programs, however, is too restrictive. Therefore, we also introduce an annotation procedure that combines the information from sizechange graphs and the output of a traditional bindingtime analysis. Annotated programs can then be used to guarantee termination of partial evaluation. We finally illustrate the usefulness of our approach by designing a simple partial evaluator in which termination is always ensured offline (i.e., statically).