Results 1  10
of
38
A Semantic Basis for the Termination Analysis of Logic Programs
 Journal of Logic Programming
, 1999
"... This paper presents a formal semantic basis for the termination analysis of logic programs. The semantics exhibits the termination properties of a logic program through its binary unfoldings  a possibly infinite set of binary clauses. Termination of a program P and goal G is determined by the abs ..."
Abstract

Cited by 102 (13 self)
 Add to MetaCart
(Show Context)
This paper presents a formal semantic basis for the termination analysis of logic programs. The semantics exhibits the termination properties of a logic program through its binary unfoldings  a possibly infinite set of binary clauses. Termination of a program P and goal G is determined by the absence of an infinite chain in the binary unfoldings of P starting with G. The result is of practical use as basing termination analysis on a formal semantics facilitates both the design and implementation of analyzers. A simple Prolog interpreter for binary unfoldings coupled with an abstract domain based on symbolic norm constraints is proposed as an implementation vehicle. We illustrate its application using two recently proposed abstract domains. Both techniques are implemented using a standard CLP(R) library. The combination of an interpreter for binary unfoldings and a constraint solver simplifies the design of the analyzer and improves its efficiency significantly. 1 Introduction This ...
Automatic Termination Analysis of Logic Programs
 Proceedings of the Fourteenth International Conference on Logic Programming
, 1997
"... This paper describes a system implemented in SICStus Prolog for automatically checking left termination of logic programs. Given a program and query, the system answers either that the query terminates or that there may be nontermination. The system can use any norm of a wide family of norms. It ca ..."
Abstract

Cited by 66 (3 self)
 Add to MetaCart
This paper describes a system implemented in SICStus Prolog for automatically checking left termination of logic programs. Given a program and query, the system answers either that the query terminates or that there may be nontermination. The system can use any norm of a wide family of norms. It can handle automatically most of the examples found in the literature on termination of logic programs, and about half of the programs in the benchmarks of [5]. The algorithm employed by the system consists of three main parts: instantiation analysis (i.e., rigidity analysis), constraint inference, and construction of the querymapping pairs associated with the program and query. Each of these parts generalizes earlier work related to termination analysis. 1 Introduction Termination analysis of logic programs has been the focus of intensive research in recent years. Systems for automatic termination analysis are proposed, for example, in [15, 20, 22]. Methodologies and techniques for proving ...
Inferring Argument Size Relationships with CLP(R)
, 1996
"... . Argument size relationships are useful in termination analysis which, in turn, is important in program synthesis and goalreplacement transformations. We show how a precise analysis for interargument size relationships, formulated in terms of abstract interpretation, can be implemented straightfo ..."
Abstract

Cited by 48 (8 self)
 Add to MetaCart
. Argument size relationships are useful in termination analysis which, in turn, is important in program synthesis and goalreplacement transformations. We show how a precise analysis for interargument size relationships, formulated in terms of abstract interpretation, can be implemented straightforwardly in a language with constraint support like CLP(R) or SICStus version 3. The analysis is based on polyhedral approximations and uses a simple relaxation technique to calculate least upper bounds and a delay method to improve the precision of widening. To the best of our knowledge, and despite its simplicity, the analysis derives relationships to an accuracy that is either comparable or better than any existing technique. 1 Introduction Termination analysis is important in program synthesis, goalreplacement transformations and is also likely to be useful in offline partial deduction. Termination analysis is usually necessary in synthesis since synthesis often only guarantees semanti...
Constraintbased Termination Analysis of Logic Programs
 ACM Transactions on Programming Languages and Systems
, 1999
"... Current normbased automatic... In this paper we present a new termination analysis which integrates the various components and produces a set of constraints that, when solvable, identifies successful termination proofs. The proposed method is both efficient and precise. The use of constraint sets e ..."
Abstract

Cited by 34 (15 self)
 Add to MetaCart
Current normbased automatic... In this paper we present a new termination analysis which integrates the various components and produces a set of constraints that, when solvable, identifies successful termination proofs. The proposed method is both efficient and precise. The use of constraint sets enables the propagation of information over all different phases while the need for multiple analyses is considerably reduced.
Estimating the Computational Cost of Logic Programs
 In Static Analysis Symposium, SAS’94, number 864 in LNCS
, 1994
"... Information about the computational cost of programs is potentially useful for a variety of purposes, including selecting among different algorithms, guiding program transformations, in granularity control and mapping decisions in parallelizing compilers, and query optimization in deductive data ..."
Abstract

Cited by 30 (14 self)
 Add to MetaCart
(Show Context)
Information about the computational cost of programs is potentially useful for a variety of purposes, including selecting among different algorithms, guiding program transformations, in granularity control and mapping decisions in parallelizing compilers, and query optimization in deductive databases. Cost analysis of logic programs is complicated by nondeterminism: on the one hand, procedures can return multiple solutions, making it necessary to estimate the number of solutions in order to give nontrivial upper bound cost estimates; on the other hand, the possibility of failure has to be taken into account while estimating lower bounds. Here we discuss techniques to address these problems to some extent. 1 Introduction Information about the computational cost of a program is potentially useful for a variety of purposes. Programmers can use such information, possibly obtained manually, to choose between different algorithmic solutions to a problem. Program transformation sys...
Proving Termination of InputConsuming Logic Programs
, 1999
"... A class of predicates is identified for which termination does not depend on lefttoright execution. The only assumption about the selection rule is that derivations are inputconsuming, that is, in each derivation step, the input arguments of the selected atom do not become instantiated. This assu ..."
Abstract

Cited by 15 (5 self)
 Add to MetaCart
A class of predicates is identified for which termination does not depend on lefttoright execution. The only assumption about the selection rule is that derivations are inputconsuming, that is, in each derivation step, the input arguments of the selected atom do not become instantiated. This assumption is a natural abstraction of previous work on programs with delay declarations. The method for showing that a predicate is in that class is based on level mappings, closely following the traditional approach for LDderivations. Programs are assumed to be well and nicely moded, which are two widely used concepts for verification. Many predicates terminate under such weak assumptions. Knowing these predicates is useful even for programs where not all predicates have this property.
Typed Norms for Typed Logic Programs
 In Logic Program Synthesis and Transformation
, 1996
"... this paper we show how norms can be generated from the prescribed types of a program written in a language which supports parametric polymorphism, e.g. Godel [11]. Interestingly, the types highlight restrictions of earlier norms and suggest how these norms can be extended to obtain some very general ..."
Abstract

Cited by 14 (3 self)
 Add to MetaCart
(Show Context)
this paper we show how norms can be generated from the prescribed types of a program written in a language which supports parametric polymorphism, e.g. Godel [11]. Interestingly, the types highlight restrictions of earlier norms and suggest how these norms can be extended to obtain some very general and powerful notions of norm which can be used to measure any term in an almost arbitrary way. We see our work on norm derivation as a contribution to the termination analysis of typed logic programs which, in particular, forms an essential part of partial deduction systems such as SAGE.
Transformation of Left Terminating Programs: The Reordering Problem
 PROCEEDINGS LOPSTR'95, VOLUME 1048 OF LECTURE NOTES IN COMPUTER SCIENCE
, 1995
"... An Unfold/Fold transformation system is a sourcetosource rewriting methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. When dealing with logic programs such as PROLOG programs, on ..."
Abstract

Cited by 14 (3 self)
 Add to MetaCart
An Unfold/Fold transformation system is a sourcetosource rewriting methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. When dealing with logic programs such as PROLOG programs, one is particularly interested in preserving left termination i.e. termination wrt the leftmost selection rule, which is by far the most widely employed of the search rules. Unfortunately, the most popular Unfold/Fold transformation systems ([TS84, Sek91]) do not preserve the above termination property. In this paper we study the reasons why left termination may be spoiled by the application of a transformation operation and we present a transformation system based on the operations of Unfold, Fold and Switch which if applied to a left terminating programs yields a program which is left terminating as well.
Abstracting Synchronization in Concurrent Constraint Programming
 In Proc. 5th Int'l Symposium on Programming Language Implementation and Logic Programming
, 1994
"... ing Synchronization in Concurrent Constraint Programming ? Enea Zaffanella 1 Roberto Giacobazzi 2 Giorgio Levi 1 1 Dipartimento di Informatica, Universit`a di Pisa Corso Italia 40, 56125 Pisa (zaffanel,levi)@di.unipi.it 2 LIX, Laboratoire d'Informatique, ' Ecole Polytechnique 9112 ..."
Abstract

Cited by 13 (5 self)
 Add to MetaCart
ing Synchronization in Concurrent Constraint Programming ? Enea Zaffanella 1 Roberto Giacobazzi 2 Giorgio Levi 1 1 Dipartimento di Informatica, Universit`a di Pisa Corso Italia 40, 56125 Pisa (zaffanel,levi)@di.unipi.it 2 LIX, Laboratoire d'Informatique, ' Ecole Polytechnique 91128 Palaiseau cedex giaco@lix.polytechnique.fr Abstract. Because of synchronization based on blocking ask, some of the most important techniques for data flow analysis of (sequential) constraint logic programs (clp) are no longer applicable to cc languages. In particular, the generalized approach to the semantics, intended to factorize the (standard) semantics so as to make explicit the domaindependent features (i.e. operators and semantic objects which may be influenced by abstraction) becomes useless for relevant applications. A possible solution to this problem is based on a more abstract (nonstandard) semantics: the success semantics, which models non suspended computations only. With a program tr...