STORM_LOG_THROW((strictBound&&maximalReachabilityProbability>=probabilityThreshold)||(!strictBound&&maximalReachabilityProbability>probabilityThreshold),storm::exceptions::InvalidArgumentException,"Given probability threshold "<<probabilityThreshold<<" can not be "<<(strictBound?"achieved":"exceeded")<<" in model with maximal reachability probability of "<<maximalReachabilityProbability<<".");
std::cout<<std::endl<<"Computed minimal label set of size "<<labelSet.size()<<" in "<<std::chrono::duration_cast<std::chrono::milliseconds>(endTime-startTime).count()<<"ms."<<std::endl;
this->addOption(storm::settings::OptionBuilder(moduleName,minimalCommandSetOptionName,true,"Computes a counterexample for the given model in terms of a minimal command set. Note that this requires the model to be given in a symbolic format.")
this->addOption(storm::settings::OptionBuilder(moduleName,minimalCommandSetOptionName,true,"Computes a counterexample for the given model in terms of a minimal command/edge set. Note that this requires the model to be given in a symbolic format.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("method","Sets which technique is used to derive the counterexample.").setDefaultValueString("maxsat").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(techniques)).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,encodeReachabilityOptionName,true,"Sets whether to encode reachability for MAXSAT-based minimal command counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,schedulerCutsOptionName,true,"Sets whether to add the scheduler cuts for MILP-based minimal command counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,encodeReachabilityOptionName,true,"Sets whether to encode reachability for MAXSAT-based counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,schedulerCutsOptionName,true,"Sets whether to add the scheduler cuts for MILP-based counterexample generation.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,noDynamicConstraintsOptionName,true,"Disables the generation of dynamic constraints in the MAXSAT-based counterexample generation.").build());
// Ensure that the model was given either symbolically or explicitly.
STORM_LOG_THROW(!isMinimalCommandSetGenerationSet()||storm::settings::getModule<storm::settings::modules::IOSettings>().isPrismInputSet(),storm::exceptions::InvalidSettingsException,"For the generation of a minimal command set, the model has to be specified in the PRISM format.");