28 std::vector<Engine> res;
30 res.push_back(
static_cast<Engine>(i));
44 return "dd-to-sparse";
59std::ostream& operator<<(std::ostream& os,
Engine const& engine) {
70 if (engineStr ==
"portfolio") {
93 STORM_LOG_THROW(
false, storm::exceptions::InvalidArgumentException,
"The given engine has no builder type to it.");
98template<
typename ValueType>
110 case ModelType::DTMC:
114 case ModelType::CTMC:
119 case ModelType::POMDP:
127 case ModelType::DTMC:
131 case ModelType::CTMC:
136 case ModelType::POMDP:
143 case ModelType::DTMC:
147 case ModelType::CTMC:
149 case ModelType::POMDP:
155 if constexpr (std::is_same_v<ValueType, storm::RationalNumber>) {
159 case ModelType::DTMC:
163 case ModelType::CTMC:
165 case ModelType::POMDP:
171 if constexpr (std::is_same_v<ValueType, storm::RationalNumber>) {
175 case ModelType::DTMC:
180 case ModelType::CTMC:
182 case ModelType::POMDP:
188 STORM_LOG_ERROR(
"The selected engine " << engine <<
" is not considered.");
190 STORM_LOG_ERROR(
"The selected combination of engine (" << engine <<
") and model type (" << modelType
191 <<
") does not seem to be supported for this value type.");
207 case ModelType::DTMC:
209 case ModelType::CTMC:
213 case ModelType::POMDP:
220 case ModelType::DTMC:
223 case ModelType::CTMC:
228 case ModelType::POMDP:
235 case ModelType::DTMC:
239 case ModelType::CTMC:
241 case ModelType::POMDP:
250 STORM_LOG_ERROR(
"The selected engine" << engine <<
" is not considered.");
252 STORM_LOG_ERROR(
"The selected combination of engine (" << engine <<
") and model type (" << modelType
253 <<
") does not seem to be supported for this value type.");
257template<
typename ValueType>
260 auto canHandleFormula = [&engine, &modelDescription](
auto const& formula,
bool onlyInitialStatesRelevant) {
263 STORM_LOG_INFO_COND(result,
"Engine " << engine <<
" can not handle formula '" << task.getFormula() <<
"' on models of type "
267 auto canHandleProperty = [&canHandleFormula](
auto const& property) {
268 if (property.getFilter().isDefault()) {
269 return canHandleFormula(*property.getRawFormula(),
true);
271 return canHandleFormula(*property.getRawFormula(),
false) && canHandleFormula(*property.getFilter().getStatesFormula(),
false);
274 return std::all_of(properties.begin(), properties.end(), canHandleProperty) &&
275 storm::builder::canHandle<ValueType>(
getBuilderType(engine), modelDescription, properties);
This class represents a discrete-time Markov decision process.
ModelType getModelType() const
#define STORM_LOG_WARN(message)
#define STORM_LOG_ERROR(message)
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
#define STORM_LOG_INFO_COND(cond, message)
bool canHandle< storm::RationalFunction >(storm::utility::Engine const &engine, storm::storage::SymbolicModelDescription::ModelType const &modelType, storm::modelchecker::CheckTask< storm::logic::Formula, storm::RationalFunction > const &checkTask)
Engine
An enumeration of all engines.
template bool canHandle< storm::RationalNumber >(storm::utility::Engine const &, std::vector< storm::jani::Property > const &, storm::storage::SymbolicModelDescription const &)
template bool canHandle< double >(storm::utility::Engine const &, std::vector< storm::jani::Property > const &, storm::storage::SymbolicModelDescription const &)
storm::builder::BuilderType getBuilderType(Engine const &engine)
Returns the builder type used for the given engine.
std::string toString(Engine const &engine)
Returns a string representation of the given engine.
std::vector< Engine > getEngines()
Returns a list of all available engines (excluding Unknown)
Engine engineFromString(std::string const &engineStr)
Parses the string representation of an engine and returns the corresponding engine.
bool canHandle(storm::utility::Engine const &engine, storm::storage::SymbolicModelDescription::ModelType const &modelType, storm::modelchecker::CheckTask< storm::logic::Formula, ValueType > const &checkTask)