30 std::vector<Engine> res;
32 res.push_back(
static_cast<Engine>(i));
46 return "dd-to-sparse";
61std::ostream& operator<<(std::ostream& os,
Engine const& engine) {
72 if (engineStr ==
"portfolio") {
95 STORM_LOG_THROW(
false, storm::exceptions::InvalidArgumentException,
"The given engine has no builder type to it.");
100template<
typename ValueType>
112 case ModelType::DTMC:
116 case ModelType::CTMC:
121 case ModelType::POMDP:
129 case ModelType::DTMC:
133 case ModelType::CTMC:
138 case ModelType::POMDP:
145 case ModelType::DTMC:
149 case ModelType::CTMC:
151 case ModelType::POMDP:
157 if constexpr (std::is_same_v<ValueType, storm::RationalNumber>) {
161 case ModelType::DTMC:
165 case ModelType::CTMC:
167 case ModelType::POMDP:
173 if constexpr (std::is_same_v<ValueType, storm::RationalNumber>) {
177 case ModelType::DTMC:
182 case ModelType::CTMC:
184 case ModelType::POMDP:
190 STORM_LOG_ERROR(
"The selected engine " << engine <<
" is not considered.");
192 STORM_LOG_ERROR(
"The selected combination of engine (" << engine <<
") and model type (" << modelType
193 <<
") does not seem to be supported for this value type.");
209 case ModelType::DTMC:
211 case ModelType::CTMC:
215 case ModelType::POMDP:
222 case ModelType::DTMC:
225 case ModelType::CTMC:
230 case ModelType::POMDP:
237 case ModelType::DTMC:
241 case ModelType::CTMC:
243 case ModelType::POMDP:
252 STORM_LOG_ERROR(
"The selected engine" << engine <<
" is not considered.");
254 STORM_LOG_ERROR(
"The selected combination of engine (" << engine <<
") and model type (" << modelType
255 <<
") does not seem to be supported for this value type.");
259template<
typename ValueType>
262 auto canHandleFormula = [&engine, &modelDescription](
auto const& formula,
bool onlyInitialStatesRelevant) {
265 STORM_LOG_INFO_COND(result,
"Engine " << engine <<
" can not handle formula '" << task.getFormula() <<
"' on models of type "
269 auto canHandleProperty = [&canHandleFormula](
auto const& property) {
270 if (property.getFilter().isDefault()) {
271 return canHandleFormula(*property.getRawFormula(),
true);
273 return canHandleFormula(*property.getRawFormula(),
false) && canHandleFormula(*property.getFilter().getStatesFormula(),
false);
276 return std::all_of(properties.begin(), properties.end(), canHandleProperty) &&
277 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)