STORM_LOG_THROW((this->checkResult==RegionCheckResult::UNKNOWN||checkResult!=RegionCheckResult::UNKNOWN),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from something known to UNKNOWN ");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSSAT||checkResult!=RegionCheckResult::EXISTSUNSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSSAT to EXISTSUNSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSSAT||checkResult!=RegionCheckResult::ALLUNSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSSAT to ALLUNSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSUNSAT||checkResult!=RegionCheckResult::EXISTSSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSUNSAT to EXISTSSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSUNSAT||checkResult!=RegionCheckResult::ALLSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSUNSAT to ALLSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSSAT||checkResult!=RegionCheckResult::EXISTSVIOLATED),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSSAT to EXISTSVIOLATED");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSSAT||checkResult!=RegionCheckResult::ALLVIOLATED),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSSAT to ALLVIOLATED");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSVIOLATED||checkResult!=RegionCheckResult::EXISTSSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSVIOLATED to EXISTSSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSVIOLATED||checkResult!=RegionCheckResult::ALLSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSVIOLATED to ALLSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSBOTH||checkResult!=RegionCheckResult::ALLSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSBOTH to ALLSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSBOTH||checkResult!=RegionCheckResult::ALLUNSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSBOTH to ALLUNSAT");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::EXISTSBOTH||checkResult!=RegionCheckResult::ALLVIOLATED),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from EXISTSBOTH to ALLVIOLATED");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::ALLSAT||checkResult==RegionCheckResult::ALLSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from ALLSAT to something else");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::ALLUNSAT||checkResult==RegionCheckResult::ALLUNSAT),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from ALLUNSAT to something else");
STORM_LOG_THROW((this->checkResult!=RegionCheckResult::ALLVIOLATED||checkResult==RegionCheckResult::ALLVIOLATED),storm::exceptions::InvalidArgumentException,"Tried to change the check result of a region from ALLVIOLATED to something else");
STORM_LOG_THROW(false,storm::exceptions::UnexpectedException,"The checkresult of the current region should not be conclusive, i.e. it should be either EXISTSSAT or EXISTSUNSAT or UNKNOWN");
STORM_LOG_THROW(false,storm::exceptions::UnexpectedException,"The checkresult of the current region should not be conclusive, i.e. it should be either EXISTSSAT or EXISTSVIOLATED or UNKNOWN");
STORM_LOG_THROW(false,storm::exceptions::UnexpectedException,"The checkresult of the current region should not be conclusive, i.e. it should be either EXISTSSAT or EXISTSUNSAT or UNKNOWN");
STORM_LOG_THROW(false,storm::exceptions::UnexpectedException,"The checkresult of the current region should not be conclusive, i.e. it should be either EXISTSSAT or EXISTSVIOLATED or UNKNOWN");
STORM_LOG_WARN_COND((region.getCheckResult()!=RegionCheckResult::EXISTSBOTH),"checkFullSmt invoked although the result is already clear (EXISTSBOTH). Will validate this now...");
caseRegionCheckResult::ALLSAT:
STORM_LOG_WARN_COND((region.getCheckResult()!=RegionCheckResult::ALLSAT),"checkFullSmt invoked although the result is already clear (ALLSAT). Will validate this now...");
STORM_LOG_WARN_COND((region.getCheckResult()!=RegionCheckResult::ALLVIOLATED),"checkFullSmt invoked although the result is already clear (ALLVIOLATED). Will validate this now...");
STORM_LOG_THROW((guard.getType()==carl::VariableType::VT_BOOL),storm::exceptions::IllegalArgumentException,"Tried to add a guarded constraint, but the guard is not of type bool.");
//if some of the occurring variables are not declared yet, we will have to (including the guard!).
STORM_LOG_THROW((variable.getType()==carl::VariableType::VT_BOOL),storm::exceptions::IllegalArgumentException,"Tried to add a constraint that consists of a non-boolean variable.");
STORM_LOG_THROW(var==carl::Variable::NO_VARIABLE,storm::exceptions::InvalidArgumentException,"Tried to create a new variable but the name "<<variableName<<" is already in use.");
carl::VariableTypecarlVarType;
switch(sort){
caseVariableSort::VS_BOOL:
carlVarType=carl::VariableType::VT_BOOL;
break;
caseVariableSort::VS_REAL:
carlVarType=carl::VariableType::VT_REAL;
break;
caseVariableSort::VS_INT:
carlVarType=carl::VariableType::VT_INT;
break;
default:
STORM_LOG_THROW(false,storm::exceptions::NotImplementedException,"The given variable sort is not implemented");
STORM_LOG_THROW(guard.getType()==carl::VariableType::VT_BOOL,storm::exceptions::IllegalArgumentException,"Tried to add a constraint to the solver whose guard is not of type bool");
storm::CompareRelationcompRel;
switch(relation){
casestorm::logic::ComparisonType::Greater:
compRel=storm::CompareRelation::GT;
break;
casestorm::logic::ComparisonType::GreaterEqual:
compRel=storm::CompareRelation::GEQ;
break;
casestorm::logic::ComparisonType::Less:
compRel=storm::CompareRelation::LT;
break;
casestorm::logic::ComparisonType::LessEqual:
compRel=storm::CompareRelation::LEQ;
break;
default:
STORM_LOG_THROW(false,storm::exceptions::InvalidArgumentException,"the comparison relation of the formula is not supported");
}
//Note: this only works if numerators and denominators are positive...
STORM_LOG_THROW(variable.getType()==carl::VariableType::VT_BOOL,storm::exceptions::IllegalArgumentException,"Tried to add a constraint to the solver that is a non boolean variable. Only boolean variables are allowed");