3#include <boost/optional.hpp>
6#include "storm-config.h"
19template<DdType LibraryType,
typename ValueType>
22template<DdType LibraryType>
30 template<DdType LibraryType, typename ValueType>
57 template<typename ValueType>
79 template<typename ValueType>
87 template<typename ValueType>
95 template<typename ValueType>
105 std::vector<InternalBdd<DdType::CUDD>>
createDdVariables(uint64_t numberOfLayers, boost::optional<uint_fast64_t> const& position = boost::none);
146 void
execute(std::function<void()> const& f) const;
155#ifdef STORM_HAVE_CUDD
161 cudd::Cudd& getCuddManager();
168 cudd::Cudd const& getCuddManager() const;
172#ifdef STORM_HAVE_CUDD
174 DdNodePtr getBddEncodingLessOrEqualThanRec(uint64_t minimalValue, uint64_t maximalValue, uint64_t bound, DdNodePtr cube,
175 uint64_t remainingDdVariables) const;
178 cudd::Cudd cuddManager;
181 Cudd_ReorderingType reorderingTechnique;
184 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(storm::CuddDdManagerEnvironment const &environment)
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.