this->addOption(storm::settings::OptionBuilder(moduleName,quotientFormatOptionName,true,"Sets the format in which the quotient is extracted (only applies to DD-based bisimulation).").addArgument(storm::settings::ArgumentBuilder::createStringArgument("format","The format of the quotient.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(quotTypes)).setDefaultValueString("dd").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,quotientFormatOptionName,true,"Sets the format in which the quotient is extracted (only applies to DD-based bisimulation).").addArgument(storm::settings::ArgumentBuilder::createStringArgument("format","The format of the quotient.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(quotTypes)).setDefaultValueString("dd").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,representativeOptionName,false,"Sets whether to use representatives in the quotient rather than block numbers.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,representativeOptionName,false,"Sets whether to use representatives in the quotient rather than block numbers.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,originalVariablesOptionName,false,"Sets whether to use the original variables in the quotient rather than the block variables.").build());
this->addOption(storm::settings::OptionBuilder(moduleName,signatureModeOptionName,false,"Sets the signature computation mode.").addArgument(storm::settings::ArgumentBuilder::createStringArgument("mode","The mode to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(signatureModes)).setDefaultValueString("eager").build()).build());
this->addOption(storm::settings::OptionBuilder(moduleName,signatureModeOptionName,false,"Sets the signature computation mode.").addArgument(storm::settings::ArgumentBuilder::createStringArgument("mode","The mode to use.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(signatureModes)).setDefaultValueString("eager").build()).build());
STORM_LOG_THROW(this->containsMetaVariable(metaVariable),storm::exceptions::InvalidOperationException,"Cannot rename variable '"<<metaVariable.getName()<<"' that is not present.");
// std::sort(fromBdds.begin(), fromBdds.end(), [] (InternalBdd<LibraryType> const& a, InternalBdd<LibraryType> const& b) { return a.getLevel() < b.getLevel(); } );
for(autoconst&metaVariable:to){
STORM_LOG_THROW(!this->containsMetaVariable(metaVariable),storm::exceptions::InvalidOperationException,"Cannot rename to variable '"<<metaVariable.getName()<<"' that is already present.");
STORM_LOG_THROW(this->containsMetaVariable(metaVariable),storm::exceptions::InvalidOperationException,"Cannot rename variable '"<<metaVariable.getName()<<"' that is not present.");
STORM_LOG_THROW(!this->containsMetaVariable(metaVariable),storm::exceptions::InvalidOperationException,"Cannot rename to variable '"<<metaVariable.getName()<<"' that is already present.");
STORM_LOG_ASSERT(quotientTransitionMatrix.greater(storm::utility::one<ValueType>()).isZero(),"Illegal entries in quotient matrix.");
}else{
STORM_LOG_ASSERT(quotientTransitionMatrix.greater(storm::utility::one<ValueType>()+storm::utility::convertNumber<ValueType>(1e-6)).isZero(),"Illegal entries in quotient matrix.");