Symbolic library
The symbolic library contains the implementation of LDD helper functions and
classes used by the symbolic instantiation and solving algorithms. The symbolic
instantiation and solving algorithms themselves are located in the pbes
and
lps
libraries respectively since these depend on the PBES and LPS data
structures respectively. However, since these are all closely related we put the
documentation together here.
List Decision Diagrams
See the document below for a more pseudocode of algorithms for LDDs.
Zielonka
The standard Zielonka solving algorithm, defined in (2) requires that every vertex has an outgoing edge.
If this is the case then the graph is called total.
We can achieve this by extending every disjunctive PBES equation with where
is defined as
and similarly for the conjunctive PBES equations with
.
However, adding these unnecessary transitions can be costly.
Therefore, if we perform the deadlock detection we can avoid extending the PBES and obtain a total graph by performing the preprocessing step described in (1).
Every disjunctive vertex that is a deadlock is won by player odd (previously indicated by a transition to ) and every conjunctive vertex that is a deadlock by player even.
If we compute the attractors to these won vertices then the resulting graph is total and can be used in the Zielonka algorithm as follows
.
(1)
With the standard Zielonka algorithm defined below:
(2)
Solving with strategies
This algorithm is extended with keeping track of strategies in [1]. A strategy here is simply a relation between vertices, as such can be efficiently overapproximated using symbolic algorithms.
References
[1] Oliver Friedmann: Recursive algorithm for parity games requires exponential time. RAIRO Theor. Informatics Appl. 45(4): 449-457 (2011) DOI.