10template<storm::dd::DdType DdType,
typename ValueType>
15template<storm::dd::DdType DdType,
typename ValueType>
17 return this->allRows.getDdManager();
20template<storm::dd::DdType DdType,
typename ValueType>
22 this->allRows = allRows;
25template<storm::dd::DdType DdType,
typename ValueType>
30template<storm::dd::DdType DdType,
typename ValueType>
32 this->lowerBounds = lowerBounds;
35template<storm::dd::DdType DdType,
typename ValueType>
37 this->lowerBound = lowerBound;
40template<storm::dd::DdType DdType,
typename ValueType>
42 this->upperBounds = upperBounds;
45template<storm::dd::DdType DdType,
typename ValueType>
47 this->upperBound = upperBound;
50template<storm::dd::DdType DdType,
typename ValueType>
52 setLowerBound(lowerBound);
53 setUpperBound(upperBound);
56template<storm::dd::DdType DdType,
typename ValueType>
59 setLowerBounds(lowerBounds);
60 setUpperBounds(upperBounds);
63template<storm::dd::DdType DdType,
typename ValueType>
65 return static_cast<bool>(lowerBound);
68template<storm::dd::DdType DdType,
typename ValueType>
70 return lowerBound.get();
73template<storm::dd::DdType DdType,
typename ValueType>
75 return static_cast<bool>(lowerBounds);
78template<storm::dd::DdType DdType,
typename ValueType>
80 return lowerBounds.get();
83template<storm::dd::DdType DdType,
typename ValueType>
85 return static_cast<bool>(upperBound);
88template<storm::dd::DdType DdType,
typename ValueType>
90 return upperBound.get();
93template<storm::dd::DdType DdType,
typename ValueType>
95 return static_cast<bool>(upperBounds);
98template<storm::dd::DdType DdType,
typename ValueType>
100 return upperBounds.get();
103template<storm::dd::DdType DdType,
typename ValueType>
105 STORM_LOG_THROW(lowerBound || lowerBounds, storm::exceptions::UnmetRequirementException,
"Requiring lower bounds, but did not get any.");
107 return lowerBounds.get();
109 return this->allRows.ite(this->allRows.getDdManager().getConstant(lowerBound.get()), this->allRows.getDdManager().template getAddZero<ValueType>());
113template<storm::dd::DdType DdType,
typename ValueType>
115 STORM_LOG_THROW(upperBound || upperBounds, storm::exceptions::UnmetRequirementException,
"Requiring upper bounds, but did not get any.");
117 return upperBounds.get();
119 return this->allRows.ite(this->allRows.getDdManager().getConstant(upperBound.get()), this->allRows.getDdManager().template getAddZero<ValueType>());
storm::dd::DdManager< DdType > & getDdManager() const
storm::dd::Add< DdType, ValueType > const & getLowerBounds() const
bool hasUpperBound() const
virtual void setUpperBound(ValueType const &lowerBound)
storm::dd::Add< DdType, ValueType > getUpperBoundsVector() const
Retrieves a vector of upper bounds for all values (if any lower bounds are known).
virtual void setLowerBounds(storm::dd::Add< DdType, ValueType > const &lowerBounds)
virtual void setUpperBounds(storm::dd::Add< DdType, ValueType > const &upperBounds)
ValueType const & getLowerBound() const
bool hasLowerBound() const
SymbolicEquationSolver()=default
virtual void setLowerBound(ValueType const &lowerBound)
storm::dd::Bdd< DdType > const & getAllRows() const
ValueType const & getUpperBound() const
bool hasLowerBounds() const
void setAllRows(storm::dd::Bdd< DdType > const &allRows)
storm::dd::Add< DdType, ValueType > getLowerBoundsVector() const
Retrieves a vector of lower bounds for all values (if any lower bounds are known).
storm::dd::Add< DdType, ValueType > const & getUpperBounds() const
bool hasUpperBounds() const
virtual void setBounds(ValueType const &lowerBound, ValueType const &upperBound)
#define STORM_LOG_THROW(cond, exception, message)