36template<storm::dd::DdType LibraryType,
typename ValueType>
39 std::vector<std::shared_ptr<storm::logic::Formula const>>
const& formulas,
bool buildFullModel =
false,
bool applyMaximumProgress =
true,
40 bool fixDeadlocks =
true) {
54 STORM_LOG_THROW(model.
isJaniModel(), storm::exceptions::NotSupportedException,
"Building symbolic model from this model description is unsupported.");
73inline std::shared_ptr<storm::models::symbolic::Model<storm::dd::DdType::CUDD, storm::RationalNumber>>
buildSymbolicModel(
76 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"CUDD does not support rational numbers.");
80inline std::shared_ptr<storm::models::symbolic::Model<storm::dd::DdType::CUDD, storm::RationalFunction>>
buildSymbolicModel(
83 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"CUDD does not support rational functions.");
94template<
typename ValueType>
100 std::shared_ptr<storm::generator::NextStateGenerator<ValueType, uint32_t>>
generator;
102 generator = std::make_shared<storm::generator::PrismNextStateGenerator<ValueType, uint32_t>>(model.
asPrismProgram(), options, actionMask);
104 STORM_LOG_THROW(actionMask ==
nullptr, storm::exceptions::NotSupportedException,
"Action masks for JANI are not yet supported.");
106 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"Cannot build JANI models with interval value type.");
108 generator = std::make_shared<storm::generator::JaniNextStateGenerator<ValueType, uint32_t>>(model.
asJaniModel(), options);
111 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"Cannot build sparse model from this symbolic model description.");
116template<
typename ValueType>
125template<
typename ValueType>
127 std::vector<std::shared_ptr<storm::logic::Formula const>>
const& formulas) {
132template<
typename ValueType,
typename RewardModelType = storm::models::sparse::StandardRewardModel<ValueType>>
137 return std::make_shared<storm::models::sparse::Dtmc<ValueType, RewardModelType>>(std::move(components));
139 return std::make_shared<storm::models::sparse::Ctmc<ValueType, RewardModelType>>(std::move(components));
141 return std::make_shared<storm::models::sparse::Mdp<ValueType, RewardModelType>>(std::move(components));
143 return std::make_shared<storm::models::sparse::MarkovAutomaton<ValueType, RewardModelType>>(std::move(components));
145 return std::make_shared<storm::models::sparse::Pomdp<ValueType, RewardModelType>>(std::move(components));
147 return std::make_shared<storm::models::sparse::StochasticTwoPlayerGame<ValueType, RewardModelType>>(std::move(components));
149 return std::make_shared<storm::models::sparse::Smg<ValueType, RewardModelType>>(std::move(components));
Action masks are arguments you can give to the state generator that limit which states are generated.
storm::prism::Program const & asPrismProgram() const
ModelType getModelType() const
bool isPrismProgram() const
storm::jani::Model const & asJaniModel() const
#define STORM_LOG_THROW(cond, exception, message)
std::shared_ptr< storm::models::symbolic::Model< LibraryType, ValueType > > buildSymbolicModel(storm::Environment const &env, storm::storage::SymbolicModelDescription const &model, std::vector< std::shared_ptr< storm::logic::Formula const > > const &formulas, bool buildFullModel=false, bool applyMaximumProgress=true, bool fixDeadlocks=true)
std::shared_ptr< storm::models::sparse::Model< ValueType > > buildSparseModel(storm::storage::SymbolicModelDescription const &model, storm::builder::BuilderOptions const &options, typename storm::builder::ExplicitModelBuilder< ValueType >::Options const &explorationOptions=typename storm::builder::ExplicitModelBuilder< ValueType >::Options())
storm::jani::ModelFeatures getSupportedJaniFeatures(storm::builder::BuilderType const &builderType)
storm::builder::ExplicitModelBuilder< ValueType > makeExplicitModelBuilder(storm::storage::SymbolicModelDescription const &model, storm::builder::BuilderOptions const &options, std::shared_ptr< storm::generator::ActionMask< ValueType > > actionMask=nullptr, typename storm::builder::ExplicitModelBuilder< ValueType >::Options const &explorationOptions=typename storm::builder::ExplicitModelBuilder< ValueType >::Options())
Initializes an explict model builder; an object/algorithm that is used to build sparse models.
storm::jani::ModelFeatures getSupportedJaniFeatures(BuilderType const &builderType)
constexpr bool IsIntervalType
Helper to check if a type is an interval.
bool buildAllLabels
A flag that indicates whether all labels are to be built. In this case, the label names are to be ign...
storm::builder::TerminalStates terminalStates
bool buildAllRewardModels
bool applyMaximumProgressAssumption
A flag that indicates whether the maximum progress assumption should be applied.
bool buildAllRewardModels
storm::builder::TerminalStates terminalStates
void clear()
Clears all terminal states.