Abstract Interpretation
Goal: Invariant Inference by Approximation
Approximate strongest postcondition
with operator
whose fixedpoint e.g. has a finite height.
Let PS denote program states and
denote the set of all subsets of PS, so
and
for a set of states S. We introduce an abstract analysis domain A and functions
Instead of working with C, we work with simpler domain A, which is the data structure for analysis.
Examples of A:
- mapping from variables to information about the values they can have (interval analysis, sign analysis, constant propagation)
- formula F (usually in canonical form) such that

So, we will impose that our domain is partial order. It is useful to require additional property, namely that we have lattice, which have “union”-like and “intersection”-like operations.
Note that
allows us to define set-like operations on A that correspond to operations on A:
Instead of
, we have its approximation
. To be sound we need to have
This is the most important condition for abstract interpretation.
One way to find
it is to have
that goes the other way
such that
Then we can write a definition of
in terms of it:
and we call this “the best transformer”.
Abstract computation of program semantics
In our lattice we have
because of the way we defined order.
Consider first only a single loop.
Then we rewrite our computation of sp for the loop by replacing
with
and replacing
with
. We obtain fixpoint equation for computing the effect of a transitive closur eof a relation (i.e. a loop):
We can then iterate this equation until it stabilizes.
From the properties of
it follows that the result is approximation of the set of reachable states.
When does it stabilize? Note that the sequence is increasing and if we ever repeat we have stabilized. If there are no infinite ascending chains, the computation terminates.
References
- Calculus of Computation Textbook, Chapter 12 on invariant generation