3#include <boost/optional.hpp>
5#include "storm-config.h"
14template<DdType LibraryType,
typename ValueType>
17template<DdType LibraryType>
25 template<DdType LibraryType, typename ValueType>
50 template<typename ValueType>
72 template<typename ValueType>
80 template<typename ValueType>
88 template<typename ValueType>
98 std::vector<InternalBdd<DdType::Sylvan>>
createDdVariables(uint64_t numberOfLayers, boost::optional<uint_fast64_t> const& position = boost::none);
140 void
execute(std::function<void()> const& f) const;
150#ifdef STORM_HAVE_SYLVAN
153 BDD getBddEncodingLessOrEqualThanRec(uint64_t minimalValue, uint64_t maximalValue, uint64_t bound, BDD cube, uint64_t remainingDdVariables) const;
158 static uint_fast64_t numberOfInstances;
162 static bool suspended;
166 static uint_fast64_t nextFreeVariableIndex;
InternalAdd< DdType::Sylvan, ValueType > getAddUndefined() const
Retrieves an ADD representing an undefined value.
void debugCheck() const
Performs a debug check if available.
std::vector< InternalBdd< DdType::Sylvan > > 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.
InternalAdd< DdType::Sylvan, 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.
InternalAdd< DdType::Sylvan, ValueType > getConstant(ValueType const &value) const
Retrieves an ADD representing the constant function with the given value.
InternalAdd< DdType::Sylvan, ValueType > getAddOne() const
Retrieves an ADD representing the constant one function.
void triggerReordering()
Triggers a reordering of the DDs managed by this manager.
InternalBdd< DdType::Sylvan > getBddZero() const
Retrieves a BDD representing the constant zero function.
bool supportsOrderedInsertion() const
Checks whether this manager supports the ordered insertion of variables, i.e.
InternalBdd< DdType::Sylvan > getBddEncodingLessOrEqualThan(uint64_t bound, InternalBdd< DdType::Sylvan > 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::Sylvan > getBddOne() const
Retrieves a BDD representing the constant one function.
bool isDynamicReorderingAllowed() const
Retrieves whether dynamic reordering is currently allowed.
void execute(std::function< void()> const &f) const
All code that manipulates DDs shall be called through this function.
uint_fast64_t getNumberOfDdVariables() const
Retrieves the number of DD variables managed by this manager.
InternalDdManager()
Creates a new internal manager for Sylvan DDs.