1 #ifndef ADIAR_BDD_BDD_H
2 #define ADIAR_BDD_BDD_H
6 #include <adiar/internal/dd.h>
79 static constexpr std::string_view false_print =
"⊥";
84 static constexpr std::string_view true_print =
"⊤";
A (possibly) unreduced Binary Decision Diagram.
Definition: bdd.h:22
__bdd(const shared_node_file_type &f)
Wrapper for an algorithm's already reduced output.
__bdd(const bdd &bdd)
Conversion constructor from a bdd to pass along a prior value.
__bdd()
Default constructor with an empty result.
__bdd(const shared_arc_file_type &f, const exec_policy &ep)
Wrapper for an algorithm's unreduced output.
A reduced Binary Decision Diagram.
Definition: bdd.h:53
bdd()
Default construction, creating the false terminal.
bdd & operator|=(const bdd &other)
bdd & operator^=(const bdd &other)
friend __bdd bdd_ite(const exec_policy &ep, const bdd &f, const bdd &g, const bdd &h)
If-Then-Else operator.
bdd(const bdd &f)
Copy construction, incrementing the reference count on the file underneath.
bdd & operator*=(const bdd &other)
bdd & operator&=(const bdd &other)
friend size_t bdd_nodecount(const bdd &)
The number of (internal) nodes used to represent the function.
bdd & operator-=(const bdd &other)
bdd & operator=(const bdd &other)
Assigns new bdd.
bdd & operator=(__bdd &&other)
Assigns new bdd to a variable; the content is derefenced before the given __bdd is reduced into a bdd...
bdd(__bdd &&f)
Implicit move conversion from a possibly to-be reduced result from an algorithm to a bdd.
bdd(terminal_type t)
Implicit conversion from a terminal value to construct the false and true terminals.
friend label_type bdd_varcount(const bdd &)
The number of variables that influence the outcome of f, i.e. the number of levels in the BDD.
bdd(bdd &&f)
Move construction, taking over ownership of the files underneath.
bdd & operator+=(const bdd &other)
friend bdd bdd_not(const bdd &)
Negation of a BDD.
Settings to dictate the execution of Adiar's algorithms.
Definition: exec_policy.h:35
shared_levelized_file< arc_type > shared_arc_file_type
Type of the file object arc-based representation of a diagram.
Definition: dd.h:80
shared_levelized_file< node_type > shared_node_file_type
Type of the file object node-based representation of a diagram.
Definition: dd.h:55
Container for the files that represent a Decision Diagram.
Definition: dd.h:265
shared_file_ptr< node_file_type > shared_node_file_type
File type for the shared file object representing the diagram.
Definition: dd.h:317
node_type::signed_label_type signed_label_type
Type for difference between variable labels.
Definition: dd.h:287
node_type::label_type label_type
Type of this node's variable label.
Definition: dd.h:282
signed_label_type shift() const
Read-only access to the number of levels to shift.
Definition: dd.h:415
typename node_type::terminal_type terminal_type
Type of a terminal value.
Definition: dd.h:307
Core types.
Definition: adiar.h:40