Parameterised Boolean Equation Systems
Parameterised Boolean equation systems (PBESs) can be used to encode model
checking problems (such as verifying first-order modal -calculus
formulae on LPSs, implemented in the tool lps2pbes; the translation
of the first-order modal
-calculus model checking problem on LPSs is
documented in the PBES library manual. Furthermore, PBESs
can be used to code equivalence and preorder relations on processes with data,
see [CPPW07a].
PBES expression
The right hand sides of equations in a PBES are predicate formulae, adhering to the following syntax.
PropVarInst PbesExpr
PropVarInst ::=Id('('DataExprList')')? PbesExpr ::=DataValExpr| '('PbesExpr')' | 'true' | 'false' |Id('('DataExprList')')? | 'forall'VarsDeclList'.'PbesExpr| 'exists'VarsDeclList'.'PbesExpr|PbesExpr'=>'PbesExpr|PbesExpr'||'PbesExpr|PbesExpr'&&'PbesExpr| '!'PbesExpr
The val operator stands for the value of a boolean data expression,
true and false are the booleans true and false, ! is negation,
&& stands for and, || for or and => for implication. The rules
starting with forall and exists stand for univeral and existential
quantification.
The following restrictions apply to propositional variables:
monotonicity: every occurrence of a propositional variable should be in a scope such that the number of
!operators plus the number of left hand sides of=>is even.no overloading: it is not allowed to declare two propositional variables with the same name but with a different type.
In mathematical notation, a predicate formula is defined as
where is a Boolean expression,
is a sorted data variable and
is a data expression of the sort of variable
.
PBES equation
Parameterised Boolean equations are fixed point equations with a propositional variable declaration as left hand side and a predicate formula as right hand side. A propositional variable declaration is a sorted predicate variable, with a finite number of sorted data variables.
PropVarDecl PbesEqnDecl PbesEqnSpec
PropVarDecl ::=Id('('VarsDeclList')')? PbesEqnDecl ::=FixedPointOperatorPropVarDecl'='PbesExpr';' PbesEqnSpec ::= 'pbes'PbesEqnDecl+
In mathematical notation, we write
or
for least and greatest fixpoint equations, where
is a
predicate formula.
PBES specification
A PBES specification contains a sequence of parameterised Boolean equations,
preceded by the pbes keyword. Furthermore, an initial propositional variable
instantiation must be specified after the init keyword.
PbesInit PbesSpec
PbesInit ::= 'init'PropVarInst';' PbesSpec ::=DataSpec?GlobVarSpec?PbesEqnSpecPbesInit
Files containing a PBES specification can be parsed using txt2pbes.
Transforming PBESs
Several operations on PBESs can be done without these operations influencing the
solution to the equation system. Such operations include “migration”,
“substitution”, which form the basis for the so-called Gauß elimination
strategy for solving PBESs. Let ,
and
denote arbitrary PBESs.
Substitution, for instance is based on the following transformation:
to
A note of warning: substitution in the other direction (i.e. substituting
for
in the equation for
) is not allowed
as it affects the solution to the PBES. The PBES library provides the basic
facilities for performing a substitution such as
, in which every occurrence of
in
is replaced by the predicate
.
Migration, which is a transformation defined by the following correspondence:
to
is only allowed when contains no predicate variables. Such a
predicate formula is called simple, and an equation for which its right-hand
side expression is a simple predicate formula is called solved. The PBES
library offers methods to check whether an equation is solved and whether a
predicate formula is simple.
Solving PBESs
The PBES library provides the means to construct PBESs and modify these. As may be clear, one is most-often interested in the solution of a PBES, as it provides the answer to some verification task. There are two main approaces to solving PBESs:
Symbolic approximation, combined with Gauß elimination
Enumerative
Currently, the following strategies have been implemented for solving PBESs:
Enumerative, by translation to BES, implemented in pbessolve.
Enumerative, by translation to parity games, implemented in pbespgsolve.
Symbolic approximation, implemented in pbesfixpointsolve.
Symbolic approximation + Gauß elimination
As a running example, consider the following PBES:
Gauß Elimination basically employs the migration and substitution
transformations to solve the global PBES, whereas symbolic approximation tries
to solve a single equation by means of an approximation procedure, in which the
approximants are represented by predicate formulae. For instance, the following
sequence of approximations is needed for computing the solution to :
Since the approximation process stabilises at the second approximant, the
solution to is the predicate formula
. A solution that is
found by means of approximation can be plugged into the original PBES without
changing the solution to the PBES; in this case, this results in the following
PBES:
Substitution then gives the following equivalent PBES:
mu X(b colon Bool) & = b lor X(neg b) lor X(b) \ nu Y(b colon Bool) & = X(b)
Observe that the equation for is closed, meaning that it does not
refer to predicate variables, other than
. Solving the equation for
using symbolic approximation, we get:
Since there is no predicate formula weaker than , the solution to
is also
. Replacing the solution
for the
predicate formula in the equation for
results in the following
equivalent equation system:
Using migration, and, subsequently a substitution, the following solved PBES is obtained:
Suppose we would be interested in knowning whether would be
or
then requires looking at the solved PBES and
results in the answer
for
.
Enumerative
Again, as a running example, consider the following PBES:
The enumerative approach explores the equations of a PBES on demand. Suppose we
are interested in knowning whether would be
or
. This question can be answered by looking at the equations that
are needed for
. This can be found out by the following
procedure:
replace the data variable
with
in the predicate formula for
simplify the resulting expression,
introduce an equation for
, encoding
, which has the resulting expression as its right-hand side,
recursively compute all equations for the predicate variables instances that occur in the resulting expression.
as a final step: order every equation according to the ordering of the original PBES.
For the example, this yields the following strategy:
Introduce an equation and
continue with the computation for the equations for
and
. This yields two more equations:
and
. The resulting equations are
ordered with respect to the ordering of the original PBES, leading to the
following PBES:
The resulting PBES is a BES, for which several well-documented algorithms exist
for computing the solution. The solution to is effectively
encoded by the variable
.
References
T. Chen, B. Ploeger, J. van de Pol and T.A.C. Willemse. Equivalence Checking for Infinite Systems using Parameterized Boolean Equation Systems. In L. Caires, V.T. Vasconcelos (eds.), Concurrency Theory, 18th International Conference, CONCUR 2007, Lisbon, Portugal, Lecture Notes in Computer Science 4703, Springer-Verlag, pp. 120–135, 2007. (DOI)