STORM_LOG_THROW(model.isPrismProgram(),storm::exceptions::NotSupportedException,"Currently only PRISM models are supported by the game-based model checker.");
STORM_LOG_THROW(originalProgram.getModelType()==storm::prism::Program::ModelType::DTMC||originalProgram.getModelType()==storm::prism::Program::ModelType::MDP,storm::exceptions::NotSupportedException,"Currently only DTMCs/MDPs are supported by the game-based model checker.");
STORM_LOG_DEBUG("Qualitative computation completed in "<<std::chrono::duration_cast<std::chrono::milliseconds>(qualitativeEnd-qualitativeStart).count()<<"ms.");
@ -432,44 +436,98 @@ namespace storm {
STORM_LOG_THROW(false,storm::exceptions::InvalidPropertyException,"Could not derive player 1 optimization direction.");
STORM_LOG_ASSERT(result.hasPlayer1Strategy()&&(result.getPlayer1States().isZero()||!result.getPlayer1Strategy().isZero()),"Unable to proceed without strategy.");
}else{
STORM_LOG_ASSERT(result.hasPlayer1Strategy()&&((result.getPlayer1States()&&!targetStates).isZero()||!result.getPlayer1Strategy().isZero()),"Unable to proceed without strategy.");
}
STORM_LOG_ASSERT(result.hasPlayer2Strategy()&&(result.getPlayer2States().isZero()||!result.getPlayer2Strategy().isZero()),"Unable to proceed without strategy.");
STORM_LOG_ASSERT(result.hasPlayer1Strategy()&&(result.getPlayer1States().isZero()||!result.getPlayer1Strategy().isZero()),"Unable to proceed without strategy.");
STORM_LOG_ASSERT(result.hasPlayer1Strategy()&&((result.getPlayer1States()&&!targetStates).isZero()||!result.getPlayer1Strategy().isZero()),"Unable to proceed without strategy.");
STORM_LOG_ASSERT(result.hasPlayer2Strategy()&&(result.getPlayer2States().isZero()||!result.getPlayer2Strategy().isZero()),"Unable to proceed without strategy.");
STORM_LOG_TRACE("Computed states with probability "<<(prob0?"0":"1")<<" (player 1: "<<player1Direction<<", player 2: "<<player2Direction<<"): "<<result.getPlayer1States().getNonZeroCount()<<" '"<<(prob0?"no":"yes")<<"' states (completed in "<<std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count()<<"ms).");
this->addOption(storm::settings::OptionBuilder(moduleName,addAllGuardsOptionName,true,"Sets whether all guards are added as initial predicates.").build());
@ -29,6 +30,7 @@ namespace storm {
this->addOption(storm::settings::OptionBuilder(moduleName,splitAllOptionName,true,"Sets whether all predicates are split into atoms before they are added.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,useInterpolationOptionName,true,"Sets whether interpolation is to be used to eliminate spurious pivot blocks.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,precisionOptionName,true,"The precision used for detecting convergence.").addArgument(storm::settings::ArgumentBuilder::createDoubleArgument("value","The precision to achieve.").setDefaultValueDouble(1e-03).addValidationFunctionDouble(storm::settings::ArgumentValidators::doubleRangeValidatorExcluding(0.0,1.0)).build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,pivotHeuristicOptionName,true,"Sets the pivot selection heuristic.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of an available heuristic. Available are: 'nearest-max-dev', 'most-prob-path' and 'max-weighted-dev'.").addValidationFunctionString(storm::settings::ArgumentValidators::stringInListValidator(pivotHeuristic)).setDefaultValueString("nearest-max-dev").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,invalidBlockStrategyOptionName,true,"Sets the strategy to detect invalid blocks.")
.addArgument(storm::settings::ArgumentBuilder::createStringArgument("name","The name of an available strategy. Available are: 'none', 'command' and 'global'.").addValidationFunctionString(storm::settings::ArgumentValidators::stringInListValidator(invalidBlockStrategies)).setDefaultValueString("global").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,reuseQualitativeResultsOptionName,true,"Sets whether to reuse qualitative results.").build());