Stategraph
This section describes the implementation of the tool pbesstategraph.
Definitions
We denote the number of predicate variable instances occurring in a predicate
formula by
. We assume that
predicate variable instances in
are assigned a unique natural
number between
and
.
Definition
Let be a predicate formula and let
be between
and
. The functions
,
and
are such that the predicate variable
instance
is the
-th predicate
variable instance in
, syntactically present as
. Let
be a predicate formula. We write
to indicate that the predicate variable instance at position
is
replaced syntactically by
in
.
Definition
Let be a predicate formula. We define the guard of
predicate variable instantiation
for
inductively as follows:
where
We define the function for computing significant variables
recursively as follows:
The functions source, target and copy
Let be a PBES equation. Let
be a function with the property that
A possible heuristic for obtaining a source function is to look for positive
occurrences of constraints of the form in the guards;
these can be used to define the source function. Let
be the substitution defined as
We define the function as follows:
with a constant. We define the function
as
follows:
We define the function as follows:
We define the function as follows:
Let be the set of parameters of the equation corresponding to
. Let
denote the
-th parameter of the
equation corresponding to
.
Control flow parameters
Control flow parameters are computed in phases. First the function
is computed, then the function
, and finally they
are related using
.
LCFP computation
There are two versions of the computation of .
GCFP computation
Control flow graphs
The symmetric closure of the relation
defines
an undirected graph
on the set of vertices
.
This graph is called the global control flow graph. The connected components in
this graph are the local control flow graphs. A local control flow graph is
called invalid if it contains two vertices
and
with
.
Global algorithm
Global control flow graph
The following algorithm computes the global control flow graph.
Note that implies
that parameters
and
are related.
Remark
In the code is represented by
cfp_X[k].
Remark
In the code is represented by
Yf.copy(k), where .
Global control flow marking
The following algorithm computes the function that denotes
which parameters are marked in a vertex of the control flow graph
.
Global reset variables
Let
and let be the
global control flow graph. Then we define
Compute values
Let be a component containing related CFPs.
Local algorithm
Local control flow graph
Given a GCFG and a component
, then we
define
as
.
Note that this algorithm potentially extends the graph with ‘undefined’ nodes
in a lazy fashion.
where is shorthand for the statements
Local belongs relation
Let be a local control flow graph, and
be a predicate defined as
Local control flow marking
Let be a local control flow graph, and
the
corresponding belongs relation.