* prism::Player's no longer keep track of module and action indices to reduce redundancies.
* PrismProgram::CheckValidity and PrismProgram::simplify now treat SMGs properly
* PrismProgram is now responsible for moduleIndex->playerIndex and actionIndex->playerIndex assignment
* More defined behavior for actions that don't have a player (work in progress)
STORM_LOG_ASSERT(moduleIndexPair!=globalProgramInformation.moduleToIndexMap.end(),"Parsing error in "<<this->getFilename()<<" for player "<<playerName<<": No module named '"<<moduleName<<"' present.");
STORM_LOG_THROW(moduleNotYetControlled,storm::exceptions::WrongFormatException,"Parsing error in "<<this->getFilename()<<" for player "<<playerName<<": Module '"<<moduleName<<"' already controlled by another player.");
STORM_LOG_ASSERT(actionIndexPair!=globalProgramInformation.actionIndices.end(),"Parsing error in "<<this->getFilename()<<" for player "<<playerName<<": No action named '"<<actionName<<"' present.");
STORM_LOG_THROW(actionNotYetControlled,storm::exceptions::WrongFormatException,"Parsing error in "<<this->getFilename()<<" for player "<<playerName<<": Command '"<<actionName<<"' already controlled by another player.");
STORM_LOG_ASSERT(hasAction(act),"Action "<<act<<" not found.");
result.emplace(actionToIndexMap.at(act),i);
}
}
returnresult;
}
std::size_tProgram::getNumberOfFormulas()const{
returnthis->getFormulas().size();
@ -1371,6 +1401,17 @@ namespace storm {
STORM_LOG_THROW(label.getStatePredicateExpression().hasBooleanType(),storm::exceptions::WrongFormatException,"Error in "<<label.getFilename()<<", line "<<label.getLineNumber()<<": label predicate must evaluate to type 'bool'.");
}
// Check the players
for(autoconst&player:this->getPlayers()){
// The stored action/module names shall be available
STORM_LOG_THROW(this->hasAction(controlledAction),storm::exceptions::InternalException,"Error in "<<player.getFilename()<<", line "<<player.getLineNumber()<<": The player controlled action "<<controlledAction<<" is not available.");
STORM_LOG_THROW(this->hasModule(controlledModule),storm::exceptions::InternalException,"Error in "<<player.getFilename()<<", line "<<player.getLineNumber()<<": The player controlled module "<<controlledModule<<" is not available.");