16 research outputs found
A unifying view of abstract domain design
Introduction. The concept of abstract interpretation has been introduced by Patrick and Radhia Cousot in [4, 5], in order to formalize static program analyses. Within this framework, our goal is to offer a unifying view on operators for enhancing and simplifying abstract domains. Enhancing and simplifying operators are viewed, respectively, as domain refinements and inverses of domain refinements. This new unifying viewpoint make
Machines for attribute grammars
Two automata models are introduced that play, with respect to attribute grammars and attribute-evaluation for them, the same role as pushdown automata have with respect to context-free grammars and their parsing. It is shown, in fact, that these automata define the same class of string-to-value translations as attribute grammars. Their class of tree-to-value translations seems instead to be larger than that of attribute grammars and the difference is overcome by means of (a special type of) context-free grammar interpretations. An extended model of attribute grammar is presented that is as powerful as the automata with respect to tree-to-value translations
An extension of the WAM for uninitialized variables
An extension of the WAM for handling uninitialized variables is presented. Our modification of the WAM is based on a static analysis designed within the classical Cousot's abstract interpretation framework. The information inferred by our analysis supports the optimization of the WAM code produced for the analyzed programs. The optimization consists in modifying some instructions taking into account the possibility that their inputs can be uninitialized variables. For illustrating the usefulness of our method, we show that it allows to improve the WAM code of the append program. In general, analyses that infer very concrete properties of programs are important because such properties can support significant and easily implementable optimizations of the code generated by compilers. The main contributions of this work are the simplicity of the domain of the analysis, the WAM-like extension supporting the optimization and the fact that the analysis is provably correct according to the wel..
On the Design of a Correct Freeness Analysis for Logic Programs
Several proposals for computing freeness information for logic programs have been put forward in recent literature. The availability of such information has proven useful in a variety of applications, including parallelization of Prolog programs, optimizations in Prolog compilers, as well as for improving the precision of other analyses. While these proposals have illustrated the importance of such analyses, they lack formal justification. Moreover, several have been found incorrect. This paper introduces a novel domain of abstract equation systems describing possible sharing and definite freeness of terms in a system of equations. A simple and intuitive abstract unification algorithm is presented, providing the core of a correct and precise sharing and freeness analysis for logic programs. Our contribution is not only a correct algorithm, but perhaps primarily, the application of a systematic approach in which it is derived by mimicking each step in a suitable concrete unification al..