3#include <boost/optional.hpp>
5#include "storm-config.h"
15template<DdType LibraryType,
typename ValueType>
18template<DdType LibraryType>
26 template<DdType LibraryType, typename ValueType>
53 template<typename ValueType>
75 template<typename ValueType>
83 template<typename ValueType>
91 template<typename ValueType>
101 std::vector<InternalBdd<DdType::Sylvan>>
createDdVariables(uint64_t numberOfLayers, boost::optional<uint_fast64_t> const& position = boost::none);
143 void
execute(std::function<void()> const& f) const;
153#ifdef STORM_HAVE_SYLVAN
156 BDD getBddEncodingLessOrEqualThanRec(uint64_t minimalValue, uint64_t maximalValue, uint64_t bound, BDD cube, uint64_t remainingDdVariables) const;
161 static uint_fast64_t numberOfInstances;
165 static bool suspended;
169 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.
InternalDdManager(storm::SylvanDdManagerEnvironment const &environment)
Creates a new internal manager for Sylvan DDs.
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.