Results 1  10
of
31
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 100 (14 self)
 Add to MetaCart
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 ...
Compositional Analysis of Modular Logic Programs
 In Proc. Twentieth Annual ACM Symp. on Principles of Programming Languages
, 1993
"... This paper describes a semantic basis for a compositional approach to the analysis of logic programs. A logic program is viewed as consisting of a set of modules, each module defining a subset of the program's predicates. Analyses are constructed by considering abstract interpretations of a compo ..."
Abstract

Cited by 55 (10 self)
 Add to MetaCart
This paper describes a semantic basis for a compositional approach to the analysis of logic programs. A logic program is viewed as consisting of a set of modules, each module defining a subset of the program's predicates. Analyses are constructed by considering abstract interpretations of a compositional semantics. The abstract meaning of a module corresponds to its analysis and composition of abstract meanings corresponds to composition of analyses. Such an approach is essential for large program development so that altering one module does not require reanalysis of the entire program. A compositional analysis for ground dependencies is included to illustrate the approach. To the best of our knowledge this is the first account of a compositional framework for the analysis of (logic) programs. 1 Introduction It is widely acknowledged that as the size of a program increases, it becomes impractical to maintain it as a single monolithic structure. Instead, the program has to be...
Lower Bound Cost Estimation for Logic Programs
 In 1997 International Logic Programming Symposium
, 1997
"... It is generally recognized that information about the runtime cost of computations can be useful for a variety of applications, including program transformation, granularity control during parallel execution, and query optimization in deductive databases. Most of the work to date on compiletime ..."
Abstract

Cited by 52 (31 self)
 Add to MetaCart
It is generally recognized that information about the runtime cost of computations can be useful for a variety of applications, including program transformation, granularity control during parallel execution, and query optimization in deductive databases. Most of the work to date on compiletime cost estimation of logic programs has focused on the estimation of upper bounds on costs. However, in many applications, such as parallel implementations on distributedmemory machines, one would prefer to work with lower bounds instead. The problem with estimating lower bounds is that in general, it is necessary to account for the possibility of failure of head unification, leading to a trivial lower bound of 0. In this paper, we show how, given type and mode information about procedures in a logic program, it is possible to (semiautomatically) derive nontrivial lower bounds on their computational costs. We also discuss the cost analysis for the special and frequent case of divide...
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 44 (7 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...
SetSharing is Redundant for PairSharing
 Theoretical Computer Science
, 1997
"... . Although the usual goal of sharing analysis is to detect which pairs of variables share, the standard choice for sharing analysis is a domain that characterizes setsharing. In this paper, we question, apparently for the first time, whether this domain is overcomplex for pairsharing analysis. We ..."
Abstract

Cited by 27 (12 self)
 Add to MetaCart
. Although the usual goal of sharing analysis is to detect which pairs of variables share, the standard choice for sharing analysis is a domain that characterizes setsharing. In this paper, we question, apparently for the first time, whether this domain is overcomplex for pairsharing analysis. We show that the answer is yes. By defining an equivalence relation over the setsharing domain we obtain a simpler domain, reducing the complexity of the abstract unification procedure. We present preliminary experimental results, showing that, in practice, our domain compares favorably with the setsharing one over a wide range of benchmark programs. 1 Introduction In logic programming, a knowledge of sharing between variables is important for optimizations such as the exploitation of parallelism. Today, talking about sharing analysis for logic programs is almost the same as talking about the setsharing domain Sharing of Jacobs and Langen [11,12]. The adequacy of this domain is not norma...
A backward analysis for constraint logic programs. Theory and Practice of Logic Programming
"... One recurring problem in program development is that of understanding how to reuse code developed by a third party. In the context of (constraint) logic programming, part of this problem reduces to figuring out how to query a program. If the logic program does not come with any documentation, then ..."
Abstract

Cited by 26 (7 self)
 Add to MetaCart
One recurring problem in program development is that of understanding how to reuse code developed by a third party. In the context of (constraint) logic programming, part of this problem reduces to figuring out how to query a program. If the logic program does not come with any documentation, then the programmer is forced to either experiment with queries in an ad hoc fashion or trace the controlflow of the program (backward) to infer the modes in which a predicate must be called so as to avoid an instantiation error. This paper presents an abstract interpretation scheme that automates the latter technique. The analysis presented in this paper can infer moding properties which if satisfied by the initial query, come with the guarantee that the program and query can never generate any moding or instantiation errors. Other applications of the analysis are discussed. The paper explains how abstract domains with certain computational properties (they condense) can be used to trace controlflow backward (righttoleft) to infer useful properties of initial queries. A correctness argument is presented and an implementation is reported. 1
Proving properties of logic programs by abstract diagnosis
 Analysis and Verification of MultipleAgent Languages, 5th LOMAPS Workshop, number 1192 in Lecture Notes in Computer Science
, 1996
"... Abstract. We show how declarative diagnosis techniques can be extended to cope with verification of operational properties, such as computed answers, and of abstract properties, such as types and groundness dependencies. The extension is achieved by using a simple semantic framework, based on abstra ..."
Abstract

Cited by 20 (6 self)
 Add to MetaCart
Abstract. We show how declarative diagnosis techniques can be extended to cope with verification of operational properties, such as computed answers, and of abstract properties, such as types and groundness dependencies. The extension is achieved by using a simple semantic framework, based on abstract interpretation. The resulting technique (abstract diagnosis) leads to elegant bottomup and topdown verification methods, which do not require to determine the symptoms in advance, and which are effective in the case of abstract properties described by finite domains.
An Algebraic Approach to Sharing Analysis of Logic Programs
 Journal of Logic Programming
, 1997
"... This paper describes an algebraic approach to the sharing analysis of logic programs based on an abstract domain of set logic programs. Set logic programs are logic programs in which the terms are sets of variables and unification is based on an associative, commutative, and idempotent equality theo ..."
Abstract

Cited by 20 (7 self)
 Add to MetaCart
This paper describes an algebraic approach to the sharing analysis of logic programs based on an abstract domain of set logic programs. Set logic programs are logic programs in which the terms are sets of variables and unification is based on an associative, commutative, and idempotent equality theory. All of the basic operations required for sharing analyses, as well as their formal justification, are based on simple algebraic properties of set substitutions and setbased atoms. An ordering on setbased syntactic objects, similar to "less general" on concrete syntactic objects, is shown to reflect the notion of "less sharing" information. The (abstract) unification of a pair of setbased terms corresponds to finding their most general ACI1 unifier with respect to this ordering. The unification of a set of equations between setbased terms is defined exactly as in the concrete case, by solving the equations one by one and repeatedly applying their solutions to the remaini...
Lowerbound Timecomplexity Analysis of Logic Programs
 In Jan Maluszynski, editor, International Symposium on Logic Programming
, 1997
"... The paper proposes a technique for inferring conditions on goals that, when satisfied, ensure that a goal is sufficiently coarsegrained to warrant parallel evaluation. The method is powerful enough to reason about divideandconquerprograms, and in the case of quicksort, for instance, can infer tha ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
The paper proposes a technique for inferring conditions on goals that, when satisfied, ensure that a goal is sufficiently coarsegrained to warrant parallel evaluation. The method is powerful enough to reason about divideandconquerprograms, and in the case of quicksort, for instance, can infer that a quicksort goal has a time complexity that exceeds 64 resolution steps (a threshold for spawning) if the input list is of length 10 or more. This gives a simple runtime tactic for controlling spawning. The method has been proved correct, can be implemented straightforwardly, has been demonstrated to be useful on a parallel machine, and, in contrast with much of the previous work on timecomplexity analysis of logic programs, does not require any complicated difference equation solving machinery. 1 Introduction Automatic timecomplexity analysis is useful to the programmer for algorithmic considerations but has a special role in the development of efficient parallel programs [9, 6, 7, 12...