Results 1 - 10
of
19
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 goal-replacement transformations. We show how a precise analysis for inter-argument size relationships, formulated in terms of abstract interpretation, can be implemented straightfo ..."
Abstract
-
Cited by 42 (5 self)
- Add to MetaCart
. Argument size relationships are useful in termination analysis which, in turn, is important in program synthesis and goal-replacement transformations. We show how a precise analysis for inter-argument 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, goal-replacement transformations and is also likely to be useful in off-line partial deduction. Termination analysis is usually necessary in synthesis since synthesis often only guarantees semanti...
Abstract Interpretation over Non-Deterministic Finite Tree Automata for Set-Based Analysis of Logic Programs
- In Fourth International Symposium on Practical Aspects of Declarative Languages, number 2257 in LNCS
, 2002
"... Abstract. Set-based program analysis has many potential applications, including compiler optimisations, type-checking, debugging, verification and planning. One method of set-based analysis is to solve a set of set constraints derived directly from the program text. Another approach is based on abst ..."
Abstract
-
Cited by 25 (10 self)
- Add to MetaCart
Abstract. Set-based program analysis has many potential applications, including compiler optimisations, type-checking, debugging, verification and planning. One method of set-based analysis is to solve a set of set constraints derived directly from the program text. Another approach is based on abstract interpretation (with widening) over an infinite-height domain of regular types. Up till now only deterministic types have been used in abstract interpretations, whereas solving set constraints yields non-deterministic types, which are more precise. It was pointed out by Cousot and Cousot that set constraint analysis of a particular program P could be understood as an abstract interpretation over a finite domain of regular tree grammars, constructed from P. In this paper we define such an abstract interpretation for logic programs, formulated over a domain of non-deterministic finite tree automata, and describe its implementation. Both goal-dependent and goal-independent analysis are considered. Variations on the abstract domains operations are introduced, and we discuss the associated tradeoffs of precision and complexity. The experimental results indicate that this approach is a practical way of achieving the precision of set-constraints in the abstract interpretation framework. 1
Mode Analysis Domains for Typed Logic Programs
, 2000
"... . Precise mode information is important for compiler optimisations and in program development tools. Within the framework of abstract compilation, the precision of a mode analysis depends, in part, on the expressiveness of the abstract domain and its associated abstraction function. This paper consi ..."
Abstract
-
Cited by 15 (3 self)
- Add to MetaCart
. Precise mode information is important for compiler optimisations and in program development tools. Within the framework of abstract compilation, the precision of a mode analysis depends, in part, on the expressiveness of the abstract domain and its associated abstraction function. This paper considers abstract domains for polymorphically typed logic programs and shows how specialised domains may be constructed for each type in the program. These domains capture the degree of instantiation to a high level of precision. By providing a generic definition of abstract unication, the abstraction of a program using these domains is formalised. The domain construction procedure is fully implemented using the Godel language and tested on a number of example programs to demonstrate the viability of the approach. Note: Some proofs have been omitted for space reasons. They can be found in the full version of this paper [17]. 1 Introduction 1.1 Background Typed logic programming languages su...
Detecting Unsolvable Queries for Definite Logic Programs
- Journal of Functional and Logic Programming, Special issue
, 1998
"... ..."
Set-Based Failure Analysis for Logic Programs and Concurrent Constraint Programs
- Programming Languages and Systems, 8th European Symposium on Programming, ESOP'99, volume 1576 of LNCS
, 1999
"... This paper presents the first approximation method of the finite-failure set of a logic program by set-based analysis. In a dual view, the method yields a type analysis for programs with ongoing behaviors (perpetual processes). Our technical contributions are (1) the semantical characterization ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
This paper presents the first approximation method of the finite-failure set of a logic program by set-based analysis. In a dual view, the method yields a type analysis for programs with ongoing behaviors (perpetual processes). Our technical contributions are (1) the semantical characterization of finite failure of logic programs over infinite trees and (2) the design and soundness proof of the first set-based analysis of logic programs with the greatest-model semantics. Finally, we exhibit the connection between finite failure and the inevitability of the `inconsistentstore ' error in fair executions of concurrent constraint programs where no process suspends forever. This indicates a potential application to error diagnosis for concurrent constraint programs Keywords: abstract interpretation, set-based program analysis, types, logic programs, concurrent constraint programs, finite failure, fairness 1
Techniques for scaling up analyses based on pre-interpretations
- In Proceedings of the 21st International Conference of Logic Programming
, 2005
"... Abstract. Any finite tree automaton (or regular type) can be used to construct an abstract interpretation of a logic program, by first determinising and completing the automaton to get a pre-interpretation of the language of the program. This has been shown to be a flexible and practical approach to ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
Abstract. Any finite tree automaton (or regular type) can be used to construct an abstract interpretation of a logic program, by first determinising and completing the automaton to get a pre-interpretation of the language of the program. This has been shown to be a flexible and practical approach to building a variety of analyses, both generic (such as mode analysis) and program-specific (with respect to a type describing some particular property of interest). Previous work demonstrated the approach using pre-interpretations over small domains. In this paper we present techniques that allow the method to be applied to more complex pre-interpretations and larger programs. There are two main techniques presented: the first is a novel algorithm for determinising finite tree automata, yielding a compact “product” form of the transitions of the result automaton, that is often orders of magnitude smaller than an explicit representation of the automaton. Secondly, it is shown how this form (which is a representation of a pre-interpretation) can then be input directly to a BDD-based analyser of Datalog programs. We demonstrate through experiments that much more complex analyses become feasible. 1
Constrained Regular Approximation of Logic Programs
- In Logic Programming Synthesis and Transformation (Selected Papers
, 1997
"... Abstract. Regular approximation is a well-known and useful analysis technique for conventional logic programming. Given the existence of constraint solving techniques, one may wish to obtain more precise approximations of programs while retaining the decidable properties of the approximation. Greate ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
Abstract. Regular approximation is a well-known and useful analysis technique for conventional logic programming. Given the existence of constraint solving techniques, one may wish to obtain more precise approximations of programs while retaining the decidable properties of the approximation. Greater precision could increase the e ectiveness of applications that make use of regular approximation, such as the detection of useless clauses and type analysis. In this paper, we introduce arithmetic constraints, based on convex polyhedra, into regular approximation. In addition, Herbrand constraints can be introduced to capture dependencies among arguments.
Pos(T): Analyzing Dependencies in Typed Logic Programs
- Presented at the Andrei Ershov Fourth International Conference on Perspectives of System Informatics
, 2001
"... Dependencies play a major role in the analysis of program properties. The analysis of groundness dependencies for logic programs using the class of positive Boolean functions is a main applications area. ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
Dependencies play a major role in the analysis of program properties. The analysis of groundness dependencies for logic programs using the class of positive Boolean functions is a main applications area.
Static Analysis of Logic Programs Using CLP as a Meta-language
, 1996
"... The tools for analysing logic programs presented here support a systematic method for constructing static analyses. The basic approach and some implementation experiments were described in previous papers [GBS95], [Gal95], [BB94], [BBD94]. Briefly, the method includes the following steps. First the ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
The tools for analysing logic programs presented here support a systematic method for constructing static analyses. The basic approach and some implementation experiments were described in previous papers [GBS95], [Gal95], [BB94], [BBD94]. Briefly, the method includes the following steps. First the functions and constants of the language of the program to be analysed are given an interpretation into a domain of values representing properties (a pre-interpretation of the language); second, abstract compilation with respect to the pre-interpretation transforms the program into a "domain program"; third, (an approximation to) the standard model of the domain program is computed. In addition to these steps, various program transformations may be used to simulate goal-directed analysis and improve precision. The methods described in [GBS95] and [Gal95] are extended by introducing constraint logic programs as the meta-language for describing pre-interpretations, rather than simple Datalog pr...

