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,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());
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_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_INFO("State partition after "<<iterations<<" iterations ("<<durationSinceStart<<"s) has "<<refiner->getStatePartition().getNumberOfBlocks()<<" blocks.");
STORM_LOG_INFO("State partition after "<<iterations<<" iterations ("<<durationSinceStart<<"ms) has "<<refiner->getStatePartition().getNumberOfBlocks()<<" blocks.");
STORM_LOG_INFO("State partition after "<<iterations<<" iterations ("<<durationSinceStart<<"ms) has "<<refiner->getStatePartition().getNumberOfBlocks()<<" blocks.");
STORM_LOG_INFO("State partition after "<<iterations<<" iterations ("<<durationSinceStart<<"ms) has "<<refiner->getStatePartition().getNumberOfBlocks()<<" blocks.");
STORM_LOG_THROW(model.getType()==storm::models::ModelType::Dtmc||model.getType()==storm::models::ModelType::Mdp,storm::exceptions::InvalidOperationException,"Can only extract partial quotient for discrete-time models.");
STORM_LOG_INFO("Refinement "<<(this->refinements-1)<<" produced "<<newStatePartition.getNumberOfBlocks()<<" blocks and was completed in "<<(signatureTime+refinementTime)<<"ms (signature: "<<signatureTime<<"ms, refinement: "<<refinementTime<<"ms).");
STORM_LOG_INFO("Created distance and label-based initial partition in "<<std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count()<<"ms.");
// Store the partition as an ADD only in the case of CUDD.
STORM_LOG_TRACE("Refinement "<<refinements<<" produced "<<newPartition.getNumberOfBlocks()<<" blocks and was completed in "<<totalTimeInRefinement<<"ms (signature: "<<signatureTime<<"ms, refinement: "<<refinementTime<<"ms).");
STORM_LOG_INFO("Refinement "<<refinements<<" produced "<<newPartition.getNumberOfBlocks()<<" blocks and was completed in "<<totalTimeInRefinement<<"ms (signature: "<<signatureTime<<"ms, refinement: "<<refinementTime<<"ms).");
STORM_LOG_TRACE("Refinement "<<refinements<<" produced "<<newPartition.getNumberOfBlocks()<<" blocks and was completed in "<<totalTimeInRefinement<<"ms.");
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.");