Gauß elimination
A predicate formula is defined by the following grammar:
where is a data term of sort
,
is a
predicate variable,
is a data variable of sort
,
is a data term,
represents true, and
represents false.
Definition (Predicate Variable Substitution)
Let be predicate formulae and
a predicate
variable. Then we define
as the result of applying
the substitution
to the formula
. To make
this more precise: suppose
is declared as
, then
any occurrence
in
is replaced by
.
Lemma (Substitution)
Let be an equation system for which
, then:
Definition (Approximation)
Let be predicate formulae and
a predicate
variable. We inductively define
as follows:
Thus, represents the result of recursively
substituting
for
in
.
Lemma (Approximants as Solutions)
Let be a predicate formula and
.
Then
Lemma (Stable Approximants as Solutions)
Let be a predicate formula and
.
Then
Gauß elimination algorithm
Let be an equation system of the form
and let be a rewrite function that maps a PBES expression
to an equivalent expression
. Then we define:
Here is an algorithm that solves a PBES
equation such that the resulting equation has no reference to the predicate
variable in its right hand side. An example of such a solve equation algorithm
is
.
Also pattern matching algorithms exist for this. The Gauß Elimination
algorithm solves the equation system for the predicate
variable
. To solve the system
for all
variables, the algorithm has to be applied repeatedly.
Solving a BES
If the equation system is a BES (i.e. the predicate
variables have no parameters), then the following simple approximate function
can be used to solve it: