Results 1 - 10
of
23
A General Framework for Semantics-based Bottom-up Abstract Interpretation of Logic Programs
- ACM Transactions on Programming Languages and Systems
, 1993
"... Interpretation of Logic Programs Roberto Barbuti , Roberto Giacobazzi , Giorgio Levi Dipartimento di Informatica Universit`a di Pisa Corso Italia 40, 56125 Pisa fbarbuti,giaco,levig@di.unipi.it in ACM Transactions on Programming Languages and Systems Vol 15, January 1993 Abstract The theory ..."
Abstract
-
Cited by 71 (25 self)
- Add to MetaCart
Interpretation of Logic Programs Roberto Barbuti , Roberto Giacobazzi , Giorgio Levi Dipartimento di Informatica Universit`a di Pisa Corso Italia 40, 56125 Pisa fbarbuti,giaco,levig@di.unipi.it in ACM Transactions on Programming Languages and Systems Vol 15, January 1993 Abstract The theory of abstract interpretation provides a formal framework to develop advanced dataflow analysis tools. The idea is to define a non-standard semantics which is able to compute, in finite time, an approximated model of the program. In this paper we define an abstract interpretation framework based on a fixpoint approach to the semantics. This leads to the definition, by means of a suitable set of operators, of an abstract fixpoint characterization of a -model associated with the program. Thus, we obtain a specializable abstract framework for bottom-up abstract interpretations of definite logic programs. The specialization of the framework is shown on two examples, namely ground dependence analysis and depth-k analysis.
Bottom-up abstract interpretation of logic programs
- Theoretical Computer Science
, 1994
"... Abstract This paper presents a formal framework for the bottom-up abstract interpretation of logic programs which can be applied to approximate answer substitutions, partial an- swer substitutions and call patterns for a given program and arbitrary initial goal. The framework is based on a T P like ..."
Abstract
-
Cited by 55 (16 self)
- Add to MetaCart
Abstract This paper presents a formal framework for the bottom-up abstract interpretation of logic programs which can be applied to approximate answer substitutions, partial an- swer substitutions and call patterns for a given program and arbitrary initial goal. The framework is based on a T P like semantics defined over a Herbrand universe with vari-ables which has previously been shown to determine the answer substitutions for arbitrary initial goals. The first part of the paper reconstructs this semantics to provide a more adequate basis for abstract interpretation. A notion of abstract substitution is introduced and shown to determine an abstract semantic function which for a given program can be applied to approximate the answer substitutions for an arbitrary initial goal.
Generalized Semantics and Abstract Interpretation for Constraint Logic Programs
, 1995
"... We present a simple and powerful generalized algebraic semantics for constraint logic programs that is parameterized with respect to the underlying constraint system. The idea is to abstract away from standard semantic objects by focusing on the general properties of any --possibly non-standard ..."
Abstract
-
Cited by 35 (5 self)
- Add to MetaCart
We present a simple and powerful generalized algebraic semantics for constraint logic programs that is parameterized with respect to the underlying constraint system. The idea is to abstract away from standard semantic objects by focusing on the general properties of any --possibly non-standard -- semantic definition. In constraint logic programming, this corresponds to a suitable definition of the constraint system supporting the semantic definition. An algebraic structure is introduced to formalize the notion of a constraint system, thus making classical mathematical results applicable. Both top-down and bottom-up semantics are considered. Non-standard semantics for constraint logic programs can then be formally specified using the same techniques used to define standard semantics. Different nonstandard semantics for constraint logic languages can be specified in this ...
Lambda-Dropping: Transforming Recursive Equations into Programs with Block Structure
, 2001
"... Lambda-lifting a block-structured program transforms it into a set of recursive equations. We present the symmetric transformation: lambda-dropping. Lambdadropping a set of recursive equations restores block structure and lexical scope. For lack ..."
Abstract
-
Cited by 32 (10 self)
- Add to MetaCart
Lambda-lifting a block-structured program transforms it into a set of recursive equations. We present the symmetric transformation: lambda-dropping. Lambdadropping a set of recursive equations restores block structure and lexical scope. For lack
Polynomial Constants are Decidable
- In 9th Static Analysis Symposium (SAS
, 2002
"... Abstract. Constant propagation aims at identifying expressions that always yield a unique constant value at run-time. It is well-known that constant propagation is undecidable for programs working on integers even if guards are ignored as in non-deterministic flow graphs. We show that polynomial con ..."
Abstract
-
Cited by 23 (6 self)
- Add to MetaCart
Abstract. Constant propagation aims at identifying expressions that always yield a unique constant value at run-time. It is well-known that constant propagation is undecidable for programs working on integers even if guards are ignored as in non-deterministic flow graphs. We show that polynomial constants are decidable in non-deterministic flow graphs. In polynomial constant propagation, assignment statements that use the operators +, −, ∗ are interpreted exactly but all assignments that use other operators are conservatively interpreted as non-deterministic assignments. We present a generic algorithm for constant propagation via a symbolic weakest precondition computation and show how this generic algorithm can be instantiated for polynomial constant propagation by exploiting techniques from computable ring theory. 1
A Primer On Galois Connections
- York Academy of Science
, 1992
"... : We provide the rudiments of the theory of Galois connections (or residuation theory, as it is sometimes called) together with many examples and applications. Galois connections occur in profusion and are well-known to most mathematicians who deal with order theory; they seem to be less known to to ..."
Abstract
-
Cited by 23 (3 self)
- Add to MetaCart
: We provide the rudiments of the theory of Galois connections (or residuation theory, as it is sometimes called) together with many examples and applications. Galois connections occur in profusion and are well-known to most mathematicians who deal with order theory; they seem to be less known to topologists. However, because of their ubiquity and simplicity, they (like equivalence relations) can be used as an effective research tool throughout mathematics and related areas. If one recognizes that a Galois connection is involved in a phenomenon that may be relatively complex, then many aspects of that phenomenon immediately become clear; and thus, the whole situation typically becomes much easier to understand. KEY WORDS: Galois connection, closure operation, interior operation, polarity, axiality CLASSIFICATION: Primary: 06A15, 06--01, 06A06 Secondary: 54-01, 54B99, 54H99, 68F05 0. INTRODUCTION Mathematicians are familiar with the following situation: there are two "worlds" and t...
Between Functions and Relations in Calculating Programs
, 1992
"... This thesis is about the calculational approach to programming, in which one derives programs from specifications. One such calculational paradigm is Ruby, the relational calculus developed by Jones and Sheeran for describing and designing circuits. We identify two shortcomings with derivations made ..."
Abstract
-
Cited by 15 (4 self)
- Add to MetaCart
This thesis is about the calculational approach to programming, in which one derives programs from specifications. One such calculational paradigm is Ruby, the relational calculus developed by Jones and Sheeran for describing and designing circuits. We identify two shortcomings with derivations made using Ruby. The first is that the notion of a program being an implementation of a specification has never been made precise. The second is to do with types. Fundamental to the use of type information in deriving programs is the idea of having types as special kinds of programs. In Ruby, types are partial equivalence relations (pers). Unfortunately, manipulating some formulae involving types has proved difficult within Ruby. In particular, the preconditions of the `induction' laws that are much used within program derivation often work out to be assertions about types; such assertions have typically been verified either by informal arguments or by using predicate calculus, rather than by ap...
Galois Connections Presented Calculationally.
, 1992
"... properties of Galois connections 29 4.1 Pre-orders : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 30 4.1.1 Calculating in pre-orders : : : : : : : : : : : : : : : : : : : : : : : : 30 4.1.2 Alternative definitions : : : : : : : : : : : : : : : : : : : : : : : : : 33 4.1.3 Un ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
properties of Galois connections 29 4.1 Pre-orders : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 30 4.1.1 Calculating in pre-orders : : : : : : : : : : : : : : : : : : : : : : : : 30 4.1.2 Alternative definitions : : : : : : : : : : : : : : : : : : : : : : : : : 33 4.1.3 Uniqueness of adjoints in a pre-order : : : : : : : : : : : : : : : : : 34 4.2 Partial orders : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 35 4.2.1 More cancellation laws : : : : : : : : : : : : : : : : : : : : : : : : : 35 4.2.2 Existence of adjoints : : : : : : : : : : : : : : : : : : : : : : : : : : 36 4.2.3 The closure connection : : : : : : : : : : : : : : : : : : : : : : : : : 40 4.2.4 "Perfect" connections : : : : : : : : : : : : : : : : : : : : : : : : : : 41 4.3 Complete lattices : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 44 i 5 Application: The Domain Operator 47 5.1 Monotypes : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :...
Temporal Algebra
- Mathematical Structures in Computer Science
, 1996
"... This paper is tutorial in style and there are no difficult technical results. To the experts in temporal logics, we hope to convey the simplicity and beauty of algebraic reasoning as opposed to the machine-orientedness of logical deduction. To those familiar with the calculational approach to progra ..."
Abstract
-
Cited by 11 (0 self)
- Add to MetaCart
This paper is tutorial in style and there are no difficult technical results. To the experts in temporal logics, we hope to convey the simplicity and beauty of algebraic reasoning as opposed to the machine-orientedness of logical deduction. To those familiar with the calculational approach to programming, we want to show that their methods extend easily and smoothly to temporal reasoning. For anybody else, this text may serve as a gentle introduction to both areas. 1. Introduction
Comparing completeness properties of static analyses and their logics
- Proc. 2006 Asian Programming Languages and Systems Symposium (APLAS’06), volume 4279 of Lecture Notes in Computer Science
, 2006
"... Abstract. Static analyses calculate abstract states, and their logics validate properties of the abstract states. We place into perspective the variety of forwards, backwards, functional, and logical completeness used in abstract-interpretation-based static analysis by giving examples and by proving ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
Abstract. Static analyses calculate abstract states, and their logics validate properties of the abstract states. We place into perspective the variety of forwards, backwards, functional, and logical completeness used in abstract-interpretation-based static analysis by giving examples and by proving equivalences, implications, and independences. We expose two fundamental Galois connections that underlie the logics for static analyses and reveal a new completeness variant, O-completeness. We also show that the key concept underlying logical completeness is covering, which we use to relate the various forms of completeness. When we use a static analysis, like data-flow analysis or model checking, to validate a program for correctness or code improvement, we must carefully define the domain of properties the analysis can calculate so that it includes both the goal properties we seek to validate as well as intermediate properties that lead to the goals. Say we try to validate {?}y: = −y;x: = y +1{isPositive(x)}; our analysis requires properties like isNegative to calculate a sound precondition:

