14 #ifndef CPROVER_SOLVERS_BDD_MINIBDD_MINIBDD_H
15 #define CPROVER_SOLVERS_BDD_MINIBDD_MINIBDD_H
59 return node !=
nullptr;
77 unsigned _node_number,
93 void DumpDot(std::ostream &out,
bool supress_zero =
false)
const;
96 bool supress_zero =
false,
97 bool node_numbers =
true)
const;
120 typedef std::list<mini_bdd_nodet>
nodest;
136 typedef std::stack<mini_bdd_nodet *>
freet;
148 #include "miniBDD.inc"
mini_bddt Var(const std::string &label)
std::size_t number_of_nodes()
std::list< mini_bdd_nodet > nodest
void DumpTable(std::ostream &out) const
const mini_bddt & False() const
void DumpDot(std::ostream &out, bool supress_zero=false) const
const mini_bddt & True() const
void DumpTikZ(std::ostream &out, bool supress_zero=false, bool node_numbers=true) const
mini_bddt mk(unsigned var, const mini_bddt &low, const mini_bddt &high)
std::stack< mini_bdd_nodet * > freet
std::vector< var_table_entryt > var_tablet
std::map< reverse_keyt, mini_bdd_nodet * > reverse_mapt
class mini_bdd_mgrt * mgr
unsigned reference_counter
mini_bdd_nodet(class mini_bdd_mgrt *_mgr, unsigned _var, unsigned _node_number, const mini_bddt &_low, const mini_bddt &_high)
mini_bddt operator!() const
bool is_initialized() const
mini_bddt(const mini_bddt &x)
mini_bddt operator&(const mini_bddt &) const
mini_bddt operator^(const mini_bddt &) const
const mini_bddt & low() const
mini_bddt operator|(const mini_bddt &) const
const mini_bddt & high() const
unsigned node_number() const
mini_bddt(class mini_bdd_nodet *_node)
class mini_bdd_nodet * node
mini_bddt & operator=(const mini_bddt &)
mini_bddt operator==(const mini_bddt &) const
mini_bddt restrict(const mini_bddt &u, unsigned var, const bool value)
mini_bddt exists(const mini_bddt &u, unsigned var)
std::string cubes(const mini_bddt &u)
bool OneSat(const mini_bddt &v, std::map< unsigned, bool > &assignment)
mini_bddt substitute(const mini_bddt &where, unsigned var, const mini_bddt &by_what)
reverse_keyt(unsigned _var, const mini_bddt &_low, const mini_bddt &_high)
bool operator<(const reverse_keyt &) const
var_table_entryt(const std::string &_label)