STORM_LOG_WARN_COND(transformToJani||!transformToJaniForJit,"The JIT-based model builder is only available for JANI models, automatically converting the PRISM input model.");
STORM_LOG_THROW(engine==storm::settings::modules::CoreSettings::Engine::Sparse,storm::exceptions::InvalidSettingsException,"Can only use sparse engine with explicit input.");
STORM_LOG_THROW(engine==storm::settings::modules::CoreSettings::Engine::Sparse,storm::exceptions::InvalidSettingsException,"Can only use sparse engine with explicit input.");
STORM_LOG_THROW(engine==storm::settings::modules::CoreSettings::Engine::Sparse||engine==storm::settings::modules::CoreSettings::Engine::Hybrid||engine==storm::settings::modules::CoreSettings::Engine::Dd,storm::exceptions::InvalidSettingsException,"The selected engine is not supported for parametric models.");
this->addOption(storm::settings::OptionBuilder(moduleName,prismCompatibilityOptionName,false,"Enables PRISM compatibility. This may be necessary to process some PRISM models.").setShortName(prismCompatibilityOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,jitOptionName,false,"If set, the model is built using the JIT model builder.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,fullModelBuildOptionName,false,"If set, include all rewards and labels.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildChoiceLabelOptionName,false,"If set, also build the choice labels").build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildStateValuationsOptionName,false,"If set, also build the state valuations").build());
this->addOption(storm::settings::OptionBuilder(moduleName,noBuildOptionName,false,"If set, do not build the model.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationOrderOptionName,false,"Sets which exploration order to use.").setShortName(explorationOrderOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the exploration order to choose.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(explorationOrders)).setDefaultValueString("bfs").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationChecksOptionName,false,"If set, additional checks (if available) are performed during model exploration to debug the model.").setShortName(explorationChecksOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,prismCompatibilityOptionName,false,"Enables PRISM compatibility. This may be necessary to process some PRISM models.").setShortName(prismCompatibilityOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportDotOptionName,"","If given, the loaded model will be written to the specified file in the dot format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file to which the model is to be written.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportJaniDotOptionName,"","If given, the loaded jani model will be written to the specified file in the dot format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file to which the model is to be written.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportCdfOptionName,false,"Exports the cumulative density function for reward bounded properties into a .csv file.").setShortName(exportCdfOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportCdfOptionName,false,"Exports the cumulative density function for reward bounded properties into a .csv file.").setShortName(exportCdfOptionShortName).addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to an existing directory where the cdf files will be stored.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportExplicitOptionName,"","If given, the loaded model will be written to the specified file in the drn format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","the name of the file to which the model is to be writen.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explicitOptionName,false,"Parses the model given in an explicit (sparse) representation.").setShortName(explicitOptionShortName)
@ -76,19 +66,10 @@ namespace storm {
this->addOption(storm::settings::OptionBuilder(moduleName,janiInputOptionName,false,"Parses the model given in the JANI format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file from which to read the JANI input.").addValidatorString(ArgumentValidatorFactory::createExistingFileValidator()).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,prismToJaniOptionName,false,"If set, the input PRISM model is transformed to JANI.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,jitOptionName,false,"If set, the model is built using the JIT model builder.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,fullModelBuildOptionName,false,"If set, include all rewards and labels.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildChoiceLabelOptionName,false,"If set, also build the choice labels").build());
this->addOption(storm::settings::OptionBuilder(moduleName,buildStateValuationsOptionName,false,"If set, also build the state valuations").build());
this->addOption(storm::settings::OptionBuilder(moduleName,noBuildOptionName,false,"If set, do not build the model.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,propertyOptionName,false,"Specifies the properties to be checked on the model.").setShortName(propertyOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("property or filename","The formula or the file containing the formulas.").build())
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filter","The names of the properties to check.").setDefaultValueString("all").build())
this->addOption(storm::settings::OptionBuilder(moduleName,explorationOrderOptionName,false,"Sets which exploration order to use.").setShortName(explorationOrderOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the exploration order to choose.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(explorationOrders)).setDefaultValueString("bfs").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,explorationChecksOptionName,false,"If set, additional checks (if available) are performed during model exploration to debug the model.").setShortName(explorationChecksOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,transitionRewardsOptionName,false,"If given, the transition rewards are read from this file and added to the explicit model. Note that this requires the model to be given as an explicit model (i.e., via --"+explicitOptionName+").")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The file from which to read the transition rewards.").addValidatorString(ArgumentValidatorFactory::createExistingFileValidator()).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,methodOptionName,true,"The method to be used for multi objective model checking.").addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the method to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(methods)).setDefaultValueString("pcaa").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,exportPlotOptionName,true,"Saves data for plotting of pareto curves and achievable values.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to a directory in which the results will be saved.").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("directory","A path to an existing directory in which the results will be saved.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,precisionOptionName,true,"The precision used for the approximation of numerical- and pareto queries.")
this->addOption(storm::settings::OptionBuilder(moduleName,maxStepsOptionName,true,"Aborts the computation after the given number of refinement steps (= computed pareto optimal points).")
STORM_LOG_THROW(parsingOk,storm::exceptions::UnexpectedException,"Expression was not properly parsed by ExprTk: "<<expression<<". (Returned error: "<<parser->error()<<")");
STORM_LOG_THROW(parsingOk,storm::exceptions::UnexpectedException,"Expression was not properly parsed by ExprTk: "<<expression<<". (Returned error: "<<parser->error()<<")");
STORM_LOG_WARN_COND(false,"The model uses synchronizing Markovian commands. This may lead to unexpected verification results, because of unclear semantics.");
}else{
STORM_LOG_THROW(false,storm::exceptions::WrongFormatException,"The model uses synchronizing Markovian commands. This may lead to unexpected verification results, because of unclear semantics.");