Expand description
A fully symbolic coloured graph representation of the Asynchronous Boolean Network.
Internally, this uses the same type of encoding as “normal” AsyncGraph
, but it uses
extra BDD variables to represent network state variables (note the distinction between
state and BDD variables).
To the end user, this representation is available via three data structures: GraphVertices
,
GraphColors
and GraphColoredVertices
. The first two represent just the subsets of $V$
and $C$ respectively, while the last is a full subset of $V \times C$.
There is a range of methods that enable (or simplify) the conversion between these three
types of sets (mainly provided by GraphColoredVertices
in the form of projections and
vertex-wise operations). Additionally, a VertexSet
can be iterated with ArrayBitVectors
used to represent the set elements.
The types of conversions and convenience methods are mainly motivated by SCC decomposition algorithms - if we need something else in the future, it will be implemented.
SymbolicAsyncGraph
does not implement the Graph
trait because it was not useful
in the fully symbolic context. It provides post
, pre
, and similar methods directly.
Internally, the representation is maintained by the SymbolicContext
which maps each
BDD variable either to a state variable of the network, or to a parameter stored in some
implicit or explicit FunctionTable
. The BDD variables are ordered in such a way that
the network parameters follow the variable which they are most closely related to, but
please do not rely on this ordering, it probably will be changed in the future. Overall,
by accessing the SymbolicContext
(via SymbolicAsyncGraph
) allows implementing almost
any custom BDD operations, but it should be used with caution.
Modules
(internal) Implementing conversion between FnUpdate
and BooleanExpression
.
(internal) Implementation for FunctionTable
and FunctionTableIterator
.
(internal) Implement set operations for GraphColoredVertices
.
(internal) Implement set operations for GraphColors
.
(internal) Implement set operations for GraphVertices
.
(internal) Utility methods for validation of static constraints on network regulations.
(internal) Utility methods for SymbolicAsyncGraph
.
(internal) Implementation of symbolic utility algorithms.
(internal) Implement symbolic graph operators (pre/post/…).
(internal) Implementation of the SymbolicContext
.
Structs
Function table maps one the table of an uninterpreted function to corresponding Bdd
variables.
Iterator over elements of the FunctionTable
.
Symbolic representation of a coloured set of graph vertices, i.e. a subset of $V \times C$.
Symbolic representation of a color set.
Iterator over graph vertices.
Symbolic representation of a vertex set.
A helper struct that we need in order to make GraphVertices
iterable. Elements of such
iterable set are bitvectors, specifically ArrayBitVector
.
A symbolic encoding of asynchronous transition system of a BooleanNetwork
.
Symbolic context manages the mapping between entities of the Boolean network
(variables, parameters, uninterpreted functions) and BddVariables
used in bdd-lib
.