|
Adiar 2.1.0
An External Memory Decision Diagram Library
|
Basic Boolean operations. More...
Basic Boolean operations.
Apply a binary operator between two BDDs.
| f | BDD for the left-hand-side of the operator |
| g | BDD for the right-hand-side of the operator |
| op | Binary predicate on bool to-be applied. |
| __bdd adiar::bdd_exists | ( | const bdd & | f, |
| bdd::label_type | var | ||
| ) |
Existential quantification of a single variable.
Computes the BDD for \( \exists x_{i} : f \) faster than computing \( f|_{x_i = \bot} \lor f|_{x_i = \top} \) using bdd_apply and bdd_restrict.
| f | BDD to be quantified |
| var | Variable to quantify in f |
Existential quantification of multiple variables.
| f | BDD to be quantified. |
| vars | Generator function, that produces variables to be quantified in descending order. These values have to be smaller than or equals to bdd::max_label. |
Existential quantification of multiple variables.
| f | BDD to be quantified. |
| vars | Predicate to identify the variables to quantify in f. You may abuse the fact, that this predicate will only be invoked in ascending/descending order of the levels in f (but, with retraversals). |
Existential quantification of multiple variables.
| f | BDD to be quantified. |
| begin | Single-pass forward iterator that provides the to-be quantified variables in descending order. All variables should be smaller than or equals to bdd::max_label. |
| end | Marks the end for begin. |
| __bdd adiar::bdd_forall | ( | const bdd & | f, |
| bdd::label_type | var | ||
| ) |
Forall quantification of a single variable.
Computes the BDD for \( \forall x_{i} : f \) faster than computing \( f|_{x_i = \bot} \land f|_{x_i = \top} \) using bdd_apply and bdd_restrict.
| f | BDD to be quantified. |
| var | Variable to quantify in f |
Forall quantification of multiple variables.
| f | BDD to be quantified. |
| vars | Generator function, that produces variables to be quantified in descending order. These values have to be smaller than or equals to bdd::max_label. |
Forall quantification of multiple variables.
| f | BDD to be quantified. |
| vars | Predicate to identify the variables to quantify in f. You may abuse the fact, that this predicate will only be invoked in ascending/descending order of the levels in f (but, with retraversals). |
Forall quantification of multiple variables.
| f | BDD to be quantified. |
| begin | Single-pass forward iterator that provides the to-be quantified variables in descending order. All values should be smaller than or equals to bdd::max_label. |
| end | Marks the end for begin. |
Restrict the root to true, i.e. follow its high edge.
| invalid_argument | If f is a terminal. |
If-Then-Else operator.
Computes the BDD expressing \( f ? g : h \) more efficient than computing \( (f
\land g) \lor (\neg f \land h) \) with bdd_apply.
| f | BDD for the if conditional |
| g | BDD for the then case |
| h | BDD for the else case |
Restrict the root to false, i.e. follow its low edge.
| invalid_argument | If f is a terminal. |
Negation of a BDD.
Flips the negation flag such that reading nodes with a node_stream within Adiar's algorithms will on-the-fly change the false terminals into the true terminals and vice versa.
| __bdd adiar::bdd_restrict | ( | const bdd & | f, |
| bdd::label_type | var, | ||
| bool | val | ||
| ) |
Restrict a single variable to a constant value.
The variable i is restricted to the value v.
| f | BDD to restrict. |
| var | Variable to assign |
| val | Value assigned |
Restrict a subset of variables to constant values.
For each tuple (i,v) in the assignment xs, the variable with label i is set to the constant value v. This binds the scope of the variables in xs, i.e. any later mention of a variable i is not the same as variable i in xs.
| f | BDD to restrict. |
| xs | Assignments (i,v) to variables in (in ascending order). |
Restrict a subset of variables to constant values.
For each tuple (i,v) provided by the iterator, the variable with label i is set to the constant value v.
| f | BDD to restrict |
| begin | Single-pass forward iterator that provides the to-be restricted variables in ascending order. All variables should be smaller than or equals to bdd::max_label. |
| end | Marks the end for begin. |
| bdd adiar::operator+ | ( | const bdd & | f | ) |
| bdd adiar::operator- | ( | const bdd & | f | ) |