19 research outputs found

    Improving abstract interpretations by combining domains

    Full text link
    This article considers static analysis based on abstract interpretation of logic programs over combined domains. It is known that analyses over combined domains provide more information potentially than obtained by the independent analyses. However, the construction of a combined analysis often requires redefining the basic operations for the combined domain. A practical approach to maintain precision in combined analyses of logic programs which reuses the individual analyses and does not redefine the basic operations is illustrated. The advantages of the approach are that proofs of correctness for the new domains are not required and implementations can be reused. The approach is demonstrated by showing that a combined sharing analysis — constructed from "old" proposals — compares well with other "new" proposals suggested in recent literature both from the point of view of efficiency and accuracy

    Live-Structure Dataflow

    No full text
    Analysis for Prolc)g For the class of applicative programming languages, efficient methods for reclaiming the:memory occupied by released data structures constitute an important aspect of current implementations. The present article addresses the problem of memory reuse for logic programs through program analysis rather than by run-time garbage collection. The aim is to derive run-time properties that can be used at compile time to specialize the target code for a program according to a given set of queries and to automatically introduce destructive assignments in a safe and transparent way so that fewer garbage cells are created. The dataflow analysis is constructed as an application of abstract interpretation for logic programs. An abstract domain for describing structure-sharing and liveness properties is developed as are primitive operations that guarantee a sound and terminating global analysis. We explain our motivation for the design of the abstract domain, make explicit the underlying implementation assumptions, and discuss the precision of the results obtained by a prototype analyzer

    Abstracting Unification: A Key Step in the Design of Logic Program Analyses

    No full text
    ing Unification: A Key Step in the Design of Logic Program Analyses Maurice Bruynooghe 1 and Michael Codish 2 and Anne Mulkers 1 1 K.U.Leuven, Department of Computer Science, Celestijnenlaan 200A, 3001 Heverlee, Belgium 2 Ben-Gurion University, Department of Mathematics and Computer Science, P.O.B. 653, 84105 Beer-Sheva, Israel Abstract. This paper focuses on one of the key steps in the design of semantic based analyses for logic programs --- the definition of an abstract unification algorithm for a given notion of data description. We survey some of the major notions of data descriptions proposed in the context of mode and sharing analyses. We demonstrate how a careful and systematic analysis of the underlying concrete unification algorithm contributes to the design of the abstract algorithm. Several relevant properties of concrete substitutions which influence the design of abstract domains and algorithms are described. We make use of a novel representation called abstract eq..

    Live-structure data-flow analysis for prolog

    No full text
    For the class of applicative programming languages, efficient methods for reclaiming the memory occupied by released data structures constitute an important aspect of current implementations. The present article addresses the problem of memory reuse for logic programs through program analysis rather than by run-time garbage collection. The aim is to derive run-time properties that can be used at compile time to specialize the target code for a program according to a given set of queries and to automatically introduce destructive assignments in a safe and transparent way so that fewer garbage cells are created.status: publishe

    A composite domain for freeness, sharing, and compoundness analysis of logic programs

    No full text
    status: publishe

    A live-structure data-flow analysis for Prolog: design and evaluation

    No full text
    status: publishe

    Abstract equation systems: description and insights

    No full text
    Abstract equation systems have been proposed as a powerful formalism to represent run time properties of values of program variables which are valuable for compiler optimisations. They are descriptions of concrete equation systems as used by the Martelli-Montanari unification algorithm. They contain definite structure information and term equality together with annotations about modes, linearity and sharing. The contribution of this paper is twofold. First, the set of abstract solved forms, ASF, is developed as an abstract domain based on the abstract equation systems formalism. The paper contains a concise description of the abstract domain which is shown to be a Galois connection. For abstracting unification, a deterministic algorithm is presented. A non-deterministic extension, allowing for more precision, is discussed. Next, the paper summarises the experimental evaluation of ASF. A parametric analysis tool has been implemented with the annotations and the maximal depth of the abstract equations as parameters. The experiments provide evidence that ASF generalises several prior analyses. Factors playing a role in the efficiency and the precision of the system are discussed for various parameter settings.status: publishe

    A live-structure data-flow analysis for Prolog: theory

    No full text
    status: publishe
    corecore