13 #ifndef CPROVER_ANALYSES_GUARD_BDD_H
14 #define CPROVER_ANALYSES_GUARD_BDD_H
Choice between the different interface to BDD libraries.
static exprt guard(const exprt::operandst &guards, exprt cond)
Conversion between exprt and bbdt This encapsulate a bdd_managert, thus BDDs created with this class ...
Logical operations on BDDs.
Base class for all expressions.
guard_bddt operator!() const
bool disjunction_may_simplify(const guard_bddt &other_guard)
Returns true if operator|= with other_guard may result in a simpler expression.
guard_bddt(const guard_bddt &other)
guard_bddt & add(const exprt &expr)
static constexpr bool is_always_simplified
BDDs are always in a simplified form and thus no further simplification is required after calls to as...
guard_bddt(const exprt &e, bdd_exprt &manager)
guard_bddt & append(const guard_bddt &guard)
guard_bddt(bdd_exprt &manager, bddt bdd)
exprt guard_expr(exprt expr) const
Return guard => dest or a simplified variant thereof if either guard or dest are trivial.
guard_bddt & operator=(const guard_bddt &other)
friend guard_bddt & operator|=(guard_bddt &g1, const guard_bddt &g2)
friend guard_bddt & operator-=(guard_bddt &g1, const guard_bddt &g2)
Transforms g1 into g1' such that ‘g1’ & g2 => g1 => g1'` and returns a reference to g1.