Transition System and Collecting Semantics
- program counter values. Denoted
(program point) or
(vertex in CFG)
- values of other variables
Transition system semantics:
- state is set of pairs
- element of concrete lattice is a set of such pairs
, i.e.
- post maps set of such pairs to an extended set of such pairs,
Collecting Semantics
Take .
Because is an arbitrary set, for a given
, there can be any number of
such that
is in
(in fact,
is a relation on
).
We can equivalently represent this relation as the following multi-valued function, by grouping all
for a given
:
Collecting semantics simply works with instead of
, which is just notational change.
- lattice element is a function
i.e.
- we have function
that transforms such functions and directly corresponds to
Control-flow graph: where
is set of program points
are control-flow graph edges
, so each
is relation describing the meaning of command between
and
Compute the big relation on global states in terms of and
.
Then derive a nice expression for where
.
Now we come back to the definition of post, which was
so we obtain
Now instead of , consider
, and define a new sp on such different representation. Then
where
We also represent as
, then we obtain function
that corresponds to
:
Note that will be
except at the entry into our control-flow graph.
If we compute , we obtain
such that
gives precisely the set of all reachable states at a program point
. Such
is isomorphic to
.
We call this way of defining the collecting semantics of the
program, because it collects all states for each program point. It
will be convenient to define how abstract interpretation works.