throwstorm::exceptions::InvalidArgumentException()<<"Given probability threshold "<<probabilityThreshold<<" can not be "<<(strictBound?"achieved":"exceeded")<<" in model with maximal reachability probability of "<<maximalReachabilityProbability<<".";
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<<"Maximal reachability in model is "<<maximalReachabilityProbability<<"."<<std::endl<<std::endl;
LOG4CPLUS_ERROR(logger,"Illegal comparison operator in formula "<<probBoundFormula->toString()<<". Only upper bounds are supported for counterexample generation.");
throwstorm::exceptions::InvalidPropertyException()<<"Illegal comparison operator in formula "<<probBoundFormula->toString()<<". Only upper bounds are supported for counterexample generation.";
STORM_LOG_THROW(formula->isProbabilityOperatorFormula(),storm::exceptions::InvalidPropertyException,"Counterexample generation does not support this kind of formula. Expecting a probability operator as the outermost formula element.");
STORM_LOG_THROW(comparisonType==storm::logic::ComparisonType::Less||comparisonType==storm::logic::ComparisonType::LessEqual,storm::exceptions::InvalidPropertyException,"Counterexample generation only supports formulas with an upper probability bound.");
STORM_LOG_THROW(probabilityOperator.getSubformula().isUntilFormula()||probabilityOperator.getSubformula().isEventuallyFormula(),storm::exceptions::InvalidPropertyException,"Path formula is required to be of the form 'phi U psi' for counterexample generation.");
throwstorm::exceptions::InvalidPropertyException()<<"Formula nested inside probability bound operator must be an until or eventually formula for counterexample generation.";
std::cout<<std::endl<<"Computed minimal label set of size "<<usedLabelSet.size()<<" in "<<std::chrono::duration_cast<std::chrono::milliseconds>(endTime-startTime).count()<<"ms."<<std::endl;
throwstorm::exceptions::InvalidArgumentException()<<"Given probability threshold "<<probabilityThreshold<<" can not be "<<(strictBound?"achieved":"exceeded")<<" in model with maximal reachability probability of "<<maximalReachabilityProbability<<".";
}
std::cout<<std::endl<<"Maximal reachability in model determined is "<<maximalReachabilityProbability<<"."<<std::endl;
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<<"Maximal reachability in model is "<<maximalReachabilityProbability<<"."<<std::endl<<std::endl;
LOG4CPLUS_ERROR(logger,"Illegal comparison operator in formula "<<probBoundFormula->toString()<<". Only upper bounds are supported for counterexample generation.");
throwstorm::exceptions::InvalidPropertyException()<<"Illegal comparison operator in formula "<<probBoundFormula->toString()<<". Only upper bounds are supported for counterexample generation.";
STORM_LOG_THROW(formula->isProbabilityOperatorFormula(),storm::exceptions::InvalidPropertyException,"Counterexample generation does not support this kind of formula. Expecting a probability operator as the outermost formula element.");
STORM_LOG_THROW(comparisonType==storm::logic::ComparisonType::Less||comparisonType==storm::logic::ComparisonType::LessEqual,storm::exceptions::InvalidPropertyException,"Counterexample generation only supports formulas with an upper probability bound.");
STORM_LOG_THROW(probabilityOperator.getSubformula().isUntilFormula()||probabilityOperator.getSubformula().isEventuallyFormula(),storm::exceptions::InvalidPropertyException,"Path formula is required to be of the form 'phi U psi' for counterexample generation.");
throwstorm::exceptions::InvalidPropertyException()<<"Formula nested inside probability bound operator must be an until or eventually formula for counterexample generation.";
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,symbolicOptionName,false,"Parses the model given in a symbolic representation.").setShortName(symbolicOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file from which to read the symbolic model.").addValidationFunctionString(storm::settings::ArgumentValidators::existingReadableFileValidator()).build())
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("rewardmodel","The name of the reward model to use.").setDefaultValueString("").setIsOptional(true).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,pctlOptionName,false,"Specifies a PCTL formula that is to be checked on the model.")
this->addOption(storm::settings::OptionBuilder(moduleName,propertyOptionName,false,"Specifies a PCTL formula that is to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("formula","The formula to check.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,pctlFileOptionName,false,"Specifies the PCTL formulas that are to be checked on the model.")
this->addOption(storm::settings::OptionBuilder(moduleName,propertyFileOptionName,false,"Specifies the PCTL formulas that are to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The file from which to read the PCTL formulas.").addValidationFunctionString(storm::settings::ArgumentValidators::existingReadableFileValidator()).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,cslOptionName,false,"Specifies a CSL formula that is to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("formula","The formula to check.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,cslFileOptionName,false,"Specifies the CSL formulas that are to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The file from which to read the CSL formulas.").addValidationFunctionString(storm::settings::ArgumentValidators::existingReadableFileValidator()).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,ltlOptionName,false,"Specifies an LTL formula that is to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("formula","The formula to check.").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,ltlFileOptionName,false,"Specifies the LTL formulas that are to be checked on the model.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The file from which to read the LTL formulas.").addValidationFunctionString(storm::settings::ArgumentValidators::existingReadableFileValidator()).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,counterexampleOptionName,false,"Generates a counterexample for the given PRCTL formulas if not satisfied by the model")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename","The name of the file to which the counterexample is to be written.").setDefaultValueString("-").setIsOptional(true).build()).setShortName(counterexampleOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,bisimulationOptionName,false,"Sets whether to perform bisimulation minimization.").setShortName(bisimulationOptionShortName).build());
STORM_LOG_THROW(!isSymbolicSet()||!isExplicitSet(),storm::exceptions::InvalidSettingsException,"The model may be either given in an explicit or a symbolic format, but not both.");
// Make sure that one "source" for properties is given.
STORM_LOG_THROW(propertySources<=1,storm::exceptions::InvalidSettingsException,"Please specify either a file that contains the properties or a property on the command line, but not both.");
STORM_LOG_THROW(model->getType()==storm::models::MDP,storm::exceptions::InvalidTypeException,"Minimal command set generation is only available for MDPs.");
STORM_LOG_THROW(storm::settings::generalSettings().isSymbolicSet(),storm::exceptions::InvalidSettingsException,"Minimal command set generation is only available for symbolic models.");