STORM_LOG_THROW(!components.exitRates.is_initialized()||components.exitRates->size()==stateCount,storm::exceptions::IllegalArgumentException,"Size of exit rate vector does not match state count.");
STORM_LOG_THROW(!components.exitRates.is_initialized()||components.exitRates->size()==stateCount,storm::exceptions::IllegalArgumentException,"Size of exit rate vector does not match state count.");
STORM_LOG_THROW(this->isOfType(ModelType::Ctmc)||components.markovianStates.is_initialized(),storm::exceptions::IllegalArgumentException,"Can not create Markov Automaton: no Markovian states given.");
STORM_LOG_THROW(this->isOfType(ModelType::Ctmc)||components.markovianStates.is_initialized(),storm::exceptions::IllegalArgumentException,"Can not create Markov Automaton: no Markovian states given.");
}else{
}else{
STORM_LOG_ERROR_COND(!components.rateTransitions&&!components.exitRates.is_initialized(),"Rates specified for discrete-time model. The rates will be ignored.");
STORM_LOG_WARN_COND(!components.rateTransitions&&!components.exitRates.is_initialized(),"Rates specified for discrete-time model. The rates will be ignored.");
}
}
STORM_LOG_ERROR_COND(this->isOfType(ModelType::MarkovAutomaton)||!components.markovianStates.is_initialized(),"Markovian states given for a model that is not a Markov automaton (will be ignored).");
STORM_LOG_WARN_COND(this->isOfType(ModelType::MarkovAutomaton)||!components.markovianStates.is_initialized(),"Markovian states given for a model that is not a Markov automaton (will be ignored).");
STORM_LOG_THROW(type!=storm::models::ModelType::MarkovAutomaton,storm::exceptions::NotSupportedException,"Markov Automata in DRN format are not supported (unclear indication of Markovian Choices in DRN format)");
STORM_LOG_THROW(type!=storm::models::ModelType::S2pg,storm::exceptions::NotSupportedException,"Stochastic Two Player Games in DRN format are not supported.");
STORM_LOG_THROW(type!=storm::models::ModelType::S2pg,storm::exceptions::NotSupportedException,"Stochastic Two Player Games in DRN format are not supported.");
this->addOption(storm::settings::OptionBuilder(moduleName,counterexampleOptionName,false,"Generates a counterexample for the given PRCTL formulas if not satisfied by the model.").setShortName(counterexampleOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,counterexampleOptionName,false,"Generates a counterexample for the given PRCTL formulas if not satisfied by the model.").setShortName(counterexampleOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,dontFixDeadlockOptionName,false,"If the model contains deadlock states, they need to be fixed by setting this option.").setShortName(dontFixDeadlockOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,dontFixDeadlockOptionName,false,"If the model contains deadlock states, they need to be fixed by setting this option.").setShortName(dontFixDeadlockOptionShortName).build());
this->addOption(storm::settings::OptionBuilder(moduleName,engineOptionName,false,"Sets which engine is used for model building and model checking.").setShortName(engineOptionShortName)
this->addOption(storm::settings::OptionBuilder(moduleName,engineOptionName,false,"Sets which engine is used for model building and model checking.").setShortName(engineOptionShortName)
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the engine to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(engines)).setDefaultValueString("sparse").build()).build());
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of the engine to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(engines)).setDefaultValueString("sparse").build()).build());
STORM_LOG_THROW(!hasProbabilisticCommand,storm::exceptions::WrongFormatException,"The input model is a CTMC, but uses probabilistic commands like they are used in PRISM. Please use Markovian commands instead or turn on the PRISM compatibility mode using the appropriate flag.");
STORM_LOG_THROW(!hasProbabilisticCommand,storm::exceptions::WrongFormatException,"The input model is a CTMC, but uses probabilistic commands like they are used in PRISM. Please use Markovian commands instead or turn on the PRISM compatibility mode using the flag '-pc'.");