Results 1 -
2 of
2
Practical Model-Based Static Analysis for Definite Logic Programs
, 1995
"... The declarative semantics of definite logic programs is the basis of an elegant and practical framework for their static analysis. We define a core semantics parameterised by a preinterpretation of the language underlying the program. The concrete semantics is given by an extended Herbrand interpret ..."
Abstract
-
Cited by 27 (13 self)
- Add to MetaCart
The declarative semantics of definite logic programs is the basis of an elegant and practical framework for their static analysis. We define a core semantics parameterised by a preinterpretation of the language underlying the program. The concrete semantics is given by an extended Herbrand interpretation, capturing the correct answers of a program. The semantics is computed as the least fixed point of an immediate consequences operator. An abstract semantics is specified simply by giving, for each constant and function in the program, a denotation in an abstract domain of interpretation. No abstract operations such as abstract unification need to be defined. The directness and simplicity of this approach is then illustrated by specifying and implementing a number of abstract interpretations. These include various mode analyses, analyses on the structure of lists and the length of lists, and simple and polymorphic types. The implementations used for the experiments are based on abstract...
Dennis Dams z Gilberto File x
"... Several proposals for computing freeness information for logic programs have been put forward in recent literature. The availability ofsuch information has proven useful inavariety of applications, including parallelization of Prolog programs, optimizations in Prolog compilers, as wellasforimproving ..."
Abstract
- Add to MetaCart
Several proposals for computing freeness information for logic programs have been put forward in recent literature. The availability ofsuch information has proven useful inavariety of applications, including parallelization of Prolog programs, optimizations in Prolog compilers, as wellasforimproving the precision of other analyses. While these proposals have illustrated the importance of such analyses, they lack formal justi cation. Moreover, several have been found incorrect. This paper introduces a novel domain of abstract equation systems describing possible sharing and de nite freeness of terms in a system of equations. A simple and intuitive abstract uni cation 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 uni cation algorithm. Consequently, the abstract algorithm is intuitive |asit resembles the concrete algorithm. It is amenable to formal justi cation | as the proof of correctness boils down to showing that each step in the concrete algorithm is mimicked by a corresponding step in the abstract algorithm. Finally, it is precise | as each step mimics only those situations which can arise in the concrete algorithm.

