44#ifdef STORM_HAVE_SYLVAN
53 void execute(std::function<
void()>
const &f)
const {
54 internalManager.execute(f);
63 nameToIndex[name] = nextFreeVariableIndex;
64 indexToName[nextFreeVariableIndex] = name;
65 sylvan::Bdd::bddVar(nextFreeVariableIndex);
66 return nextFreeVariableIndex++;
74 sylvan::Bdd getPositiveLiteral(std::string
const name)
const {
75 return sylvan::Bdd::bddVar(nameToIndex.at(name));
85 sylvan::Bdd getNegativeLiteral(std::string
const name)
const {
86 return !sylvan::Bdd::bddVar(nameToIndex.at(name));
94 sylvan::Bdd getPositiveLiteral(uint32_t
const index)
const {
95 return sylvan::Bdd::bddVar(index);
105 sylvan::Bdd getNegativeLiteral(uint32_t
const index)
const {
106 return !sylvan::Bdd::bddVar(index);
113 sylvan::Bdd getOne() {
114 return sylvan::Bdd::bddOne();
121 sylvan::Bdd getZero() {
122 return sylvan::Bdd::bddZero();
129 uint32_t
getIndex(std::string
const name)
const {
130 return nameToIndex.at(name);
137 std::string
getName(uint32_t
const index)
const {
138 return indexToName.at(index);
150 void exportBddToDot(sylvan::Bdd
const &bdd, std::string
const &filename)
const {
151 FILE *filePointer = fopen(filename.c_str(),
"w+");
154 if (filePointer ==
nullptr) {
157 bdd.PrintDot(filePointer);
159 std::ofstream filestream;
161 filestream <<
"// Mapping from BDD nodes to DFT BEs as follows: \n";
162 for (
auto const &[index, name] : indexToName) {
163 filestream <<
"// " << index <<
" -> " << name <<
'\n';
169 void execute(std::function<
void()>
const &f)
const {
171 "This version of Storm was compiled without support for Sylvan. Yet, a method was called that requires this support. Please choose a "
172 "version of Storm with Sylvan support.");
177 "This version of Storm was compiled without support for Sylvan. Yet, a method was called that requires this support. Please choose a "
178 "version of Storm with Sylvan support.");
183 "This version of Storm was compiled without support for Sylvan. Yet, a method was called that requires this support. Please choose a "
184 "version of Storm with Sylvan support.");
187 std::string
getName(uint32_t
const index)
const {
189 "This version of Storm was compiled without support for Sylvan. Yet, a method was called that requires this support. Please choose a "
190 "version of Storm with Sylvan support.");
195#ifdef STORM_HAVE_SYLVAN
197 uint32_t nextFreeVariableIndex{0};
199 std::map<std::string, uint32_t> nameToIndex{};
200 std::map<uint32_t, std::string> indexToName{};
void openFile(std::string const &filepath, std::ofstream &filestream, bool append=false, bool silent=false)
Open the given file for writing.