STORM_LOG_THROW(!options.keepRewards||!model.hasRewardModel()||model.hasUniqueRewardModel(),storm::exceptions::IllegalFunctionCallException,"Bisimulation currently only supports models with at most one reward model.");
STORM_LOG_THROW(!options.keepRewards||!model.hasRewardModel()||model.getUniqueRewardModel()->second.hasOnlyStateRewards(),storm::exceptions::IllegalFunctionCallException,"Bisimulation is currently supported for models with state rewards only. Consider converting the transition rewards to state rewards (via suitable function calls).");
STORM_LOG_THROW(!options.getKeepRewards()||!model.hasRewardModel()||model.hasUniqueRewardModel(),storm::exceptions::IllegalFunctionCallException,"Bisimulation currently only supports models with at most one reward model.");
STORM_LOG_THROW(!options.getKeepRewards()||!model.hasRewardModel()||model.getUniqueRewardModel()->second.hasOnlyStateRewards(),storm::exceptions::IllegalFunctionCallException,"Bisimulation is currently supported for models with state rewards only. Consider converting the transition rewards to state rewards (via suitable function calls).");
STORM_LOG_THROW(options.type==BisimulationType::Strong,storm::exceptions::IllegalFunctionCallException,"Weak bisimulation is currently not supported for nondeterministic models.");
STORM_LOG_THROW(options.getType()==BisimulationType::Strong,storm::exceptions::IllegalFunctionCallException,"Weak bisimulation is currently not supported for nondeterministic models.");
STORM_LOG_THROW(static_cast<bool>(this->options.optimalityType),storm::exceptions::IllegalFunctionCallException,"Can only compute states with probability 0/1 with an optimization direction (min/max).");
STORM_LOG_THROW(this->options.isOptimizationDirectionSet(),storm::exceptions::IllegalFunctionCallException,"Can only compute states with probability 0/1 with an optimization direction (min/max).");
STORM_LOG_THROW(model->isOfType(storm::models::ModelType::Dtmc)||model->isOfType(storm::models::ModelType::Ctmc)||model->isOfType(storm::models::ModelType::Mdp),storm::exceptions::InvalidSettingsException,"Bisimulation minimization is currently only available for DTMCs, CTMCs and MDPs.");
STORM_LOG_THROW(model->isSparseModel(),storm::exceptions::InvalidSettingsException,"Bisimulation minimization is currently only available for sparse models.");
STORM_LOG_THROW(model->isOfType(storm::models::ModelType::Dtmc)||model->isOfType(storm::models::ModelType::Ctmc)||model->isOfType(storm::models::ModelType::Mdp),storm::exceptions::InvalidSettingsException,"Bisimulation minimization is currently only available for DTMCs, CTMCs and MDPs.");
STORM_LOG_THROW(model->isSparseModel(),storm::exceptions::InvalidSettingsException,"Bisimulation minimization is currently only available for sparse models.");