3#include <boost/optional.hpp>
6#include "storm-config.h"
18template<DdType LibraryType,
typename ValueType>
21template<DdType LibraryType>
29 template<DdType LibraryType, typename ValueType>
54 template<typename ValueType>
76 template<typename ValueType>
84 template<typename ValueType>
92 template<typename ValueType>
102 std::vector<InternalBdd<DdType::CUDD>>
createDdVariables(uint64_t numberOfLayers, boost::optional<uint_fast64_t> const& position = boost::none);
143 void
execute(std::function<void()> const& f) const;
152#ifdef STORM_HAVE_CUDD
158 cudd::Cudd& getCuddManager();
165 cudd::Cudd const& getCuddManager() const;
169#ifdef STORM_HAVE_CUDD
171 DdNodePtr getBddEncodingLessOrEqualThanRec(uint64_t minimalValue, uint64_t maximalValue, uint64_t bound, DdNodePtr cube,
172 uint64_t remainingDdVariables) const;
175 cudd::Cudd cuddManager;
178 Cudd_ReorderingType reorderingTechnique;
181 uint_fast64_t numberOfDdVariables;
InternalAdd< DdType::CUDD, ValueType > getAddUndefined() const
Retrieves an ADD representing an undefined value.
InternalAdd< DdType::CUDD, ValueType > getAddZero() const
Retrieves an ADD representing the constant zero function.
void allowDynamicReordering(bool value)
Sets whether or not dynamic reordering is allowed for the DDs managed by this manager.
void triggerReordering()
Triggers a reordering of the DDs managed by this manager.
bool isDynamicReorderingAllowed() const
Retrieves whether dynamic reordering is currently allowed.
std::vector< InternalBdd< DdType::CUDD > > createDdVariables(uint64_t numberOfLayers, boost::optional< uint_fast64_t > const &position=boost::none)
Creates new layered DD variables and returns the cubes as a result.
bool supportsOrderedInsertion() const
Checks whether this manager supports the ordered insertion of variables, i.e.
InternalBdd< DdType::CUDD > getBddOne() const
Retrieves a BDD representing the constant one function.
void debugCheck() const
Performs a debug check if available.
InternalDdManager()
Creates a new internal manager for CUDD DDs.
uint_fast64_t getNumberOfDdVariables() const
Retrieves the number of DD variables managed by this manager.
void execute(std::function< void()> const &f) const
All code that manipulates DDs shall be called through this function.
InternalAdd< DdType::CUDD, ValueType > getConstant(ValueType const &value) const
Retrieves an ADD representing the constant function with the given value.
InternalBdd< DdType::CUDD > getBddEncodingLessOrEqualThan(uint64_t bound, InternalBdd< DdType::CUDD > const &cube, uint64_t numberOfDdVariables) const
Retrieves a BDD that maps to true iff the encoding is less or equal than the given bound.
InternalBdd< DdType::CUDD > getBddZero() const
Retrieves a BDD representing the constant zero function.
InternalAdd< DdType::CUDD, ValueType > getAddOne() const
Retrieves an ADD representing the constant one function.