51 void execute(std::function<
void()>
const &f)
const {
52 internalManager.execute(f);
61 nameToIndex[name] = nextFreeVariableIndex;
62 indexToName[nextFreeVariableIndex] = name;
63 sylvan::Bdd::bddVar(nextFreeVariableIndex);
64 return nextFreeVariableIndex++;
73 return sylvan::Bdd::bddVar(nameToIndex.at(name));
84 return !sylvan::Bdd::bddVar(nameToIndex.at(name));
93 return sylvan::Bdd::bddVar(index);
104 return !sylvan::Bdd::bddVar(index);
112 return sylvan::Bdd::bddOne();
120 return sylvan::Bdd::bddZero();
128 return nameToIndex.at(name);
135 std::string
getName(uint32_t
const index)
const {
136 return indexToName.at(index);
148 static void exportBddToDot(sylvan::Bdd
const &bdd, std::string
const &filename) {
149 FILE *filePointer = fopen(filename.c_str(),
"w+");
152 if (filePointer ==
nullptr) {
155 bdd.PrintDot(filePointer);
162 uint32_t nextFreeVariableIndex{0};
164 std::map<std::string, uint32_t> nameToIndex{};
165 std::map<uint32_t, std::string> indexToName{};
Simple Manager for Sylvan.
sylvan::Bdd getNegativeLiteral(std::string const name) const
uint32_t createVariable(std::string const name)
Creates a variable with a unique name.
void execute(std::function< void()> const &f) const
All code that manipulates DDs shall be called through this function.
std::string getName(uint32_t const index) const
SylvanBddManager & operator=(SylvanBddManager &&)=default
sylvan::Bdd getPositiveLiteral(uint32_t const index) const
SylvanBddManager(SylvanBddManager &&)=default
sylvan::Bdd getPositiveLiteral(std::string const name) const
sylvan::Bdd getNegativeLiteral(uint32_t const index) const
SylvanBddManager()=default
Initializes Sylvan.
~SylvanBddManager()=default
Destroys Sylvan.
static void exportBddToDot(sylvan::Bdd const &bdd, std::string const &filename)
Exports the given Bdd to a file in the dot format.
SylvanBddManager(SylvanBddManager const &)=delete
uint32_t getIndex(std::string const name) const
#define STORM_LOG_ERROR(message)