Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
InternalCuddDdManager.h
Go to the documentation of this file.
1#ifndef STORM_STORAGE_DD_INTERNALCUDDDDMANAGER_H_
2#define STORM_STORAGE_DD_INTERNALCUDDDDMANAGER_H_
3
4#include <boost/optional.hpp>
5#include <functional>
6
9
12
13#include "cuddObj.hh"
14
15namespace storm {
16namespace dd {
17template<DdType LibraryType, typename ValueType>
18class InternalAdd;
19
20template<DdType LibraryType>
21class InternalBdd;
22
23template<>
25 public:
26 friend class InternalBdd<DdType::CUDD>;
27
28 template<DdType LibraryType, typename ValueType>
29 friend class InternalAdd;
30
35
40
46 InternalBdd<DdType::CUDD> getBddOne() const;
47
53 template<typename ValueType>
54 InternalAdd<DdType::CUDD, ValueType> getAddOne() const;
55
61 InternalBdd<DdType::CUDD> getBddZero() const;
62
68 InternalBdd<DdType::CUDD> getBddEncodingLessOrEqualThan(uint64_t bound, InternalBdd<DdType::CUDD> const& cube, uint64_t numberOfDdVariables) const;
69
75 template<typename ValueType>
76 InternalAdd<DdType::CUDD, ValueType> getAddZero() const;
77
83 template<typename ValueType>
84 InternalAdd<DdType::CUDD, ValueType> getAddUndefined() const;
85
91 template<typename ValueType>
92 InternalAdd<DdType::CUDD, ValueType> getConstant(ValueType const& value) const;
93
101 std::vector<InternalBdd<DdType::CUDD>> createDdVariables(uint64_t numberOfLayers, boost::optional<uint_fast64_t> const& position = boost::none);
102
109 bool supportsOrderedInsertion() const;
110
116 void allowDynamicReordering(bool value);
117
123 bool isDynamicReorderingAllowed() const;
124
128 void triggerReordering();
129
133 void debugCheck() const;
134
142 void execute(std::function<void()> const& f) const;
143
149 uint_fast64_t getNumberOfDdVariables() const;
150
156 cudd::Cudd& getCuddManager();
157
163 cudd::Cudd const& getCuddManager() const;
164
165 private:
166 // Helper function to create the BDD whose encodings are below a given bound.
167 DdNodePtr getBddEncodingLessOrEqualThanRec(uint64_t minimalValue, uint64_t maximalValue, uint64_t bound, DdNodePtr cube,
168 uint64_t remainingDdVariables) const;
169
170 // The manager responsible for the DDs created/modified with this DdManager.
171 cudd::Cudd cuddManager;
172
173 // The technique that is used for dynamic reordering.
174 Cudd_ReorderingType reorderingTechnique;
175
176 // Keeps track of the number of registered DD variables.
177 uint_fast64_t numberOfDdVariables;
178};
179} // namespace dd
180} // namespace storm
181
182#endif /* STORM_STORAGE_DD_INTERNALCUDDDDMANAGER_H_ */
LabParser.cpp.
Definition cli.cpp:18