Go to the documentation of this file.
15 #ifndef CPROVER_SOLVERS_BDD_BDD_MINIBDD_H
16 #define CPROVER_SOLVERS_BDD_BDD_MINIBDD_H
18 #include <unordered_map>
34 return node->node_number <= 1;
39 return node->node_number == 0;
92 return node == other.node;
107 return bddt(!(*
this));
112 return bddt(*
this | other);
117 return bddt(*
this & other);
122 return bddt(*
this ^ other);
161 return bddt(False());
172 return emplace_result.first->second;
188 #endif // CPROVER_SOLVERS_BDD_BDD_MINIBDD_H
bool is_constant() const
is_constant has to be true for true and false and to distinguish between the two, is_complement has t...
bool is_complement() const
idt id() const
Unique identifier of the node.
bddt bdd_or(const bddt &other) const
bdd_nodet else_branch() const
indext index() const
Label on the node, corresponds to the index of a Boolean variable.
bddt(const mini_bddt &bdd)
Small BDD implementation.
mini_bddt & operator=(const mini_bddt &)
std::string to_string(const string_not_contains_constraintt &expr)
Used for debug printing.
std::unordered_map< std::size_t, bddt > index_to_bdd
Low level access to the structure of the BDD, read-only.
bool equals(const bddt &other) const
bdd_nodet(mini_bdd_nodet *node, const std::unordered_map< std::size_t, std::size_t > &bdd_var_to_index)
static bddt bdd_ite(const bddt &i, const bddt &t, const bddt &e)
bdd_nodet bdd_node(const bddt &bdd) const
bddt bdd_variable(bdd_nodet::indext index)
unsigned int indext
Type of indexes of Boolean variables.
DdNode * idt
Return type for id()
const std::unordered_map< std::size_t, std::size_t > & bdd_var_to_index
bddt & operator=(const bddt &other)
bddt bdd_and(const bddt &other) const
bdd_nodet then_branch() const
std::unordered_map< std::size_t, std::size_t > bdd_var_to_index
Logical operations on BDDs.
bddt bdd_xor(const bddt &other) const
bddt constrain(const bddt &other)
Manager for BDD creation.