STORM_LOG_WARN_COND(!model.hasUndefinedConstants(),"Model contains undefined constants. Game-based abstraction can treat such models, but you should make sure that you did not simply forget to define these constants. In particular, it may be necessary to constrain the values of the undefined constants.");
STORM_LOG_WARN_COND(!model.hasUndefinedConstants(),"Model contains undefined constants ("<<boost::algorithm::join(undefinedConstantNames,",")<<"). Game-based abstraction can treat such models, but you should make sure that you did not simply forget to define these constants. In particular, it may be necessary to constrain the values of the undefined constants.");
// In this case, we know the result for the initial states for both player 2 minimizing and maximizing.
STORM_LOG_TRACE("No initial state is a 'maybe' state.");
STORM_LOG_INFO("Obtained qualitative bounds [0, 1] on the actual value for the initial states. Refining abstraction based on qualitative check.");
STORM_LOG_INFO("Obtained qualitative bounds [0, 1] on the actual value for the initial states (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<"). Refining abstraction based on qualitative check.");
// If we get here, the initial states were all identified as prob0/1 states, but the value (0 or 1)
// depends on whether player 2 is minimizing or maximizing. Therefore, we need to find a place to refine.
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms.");
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<").");
}else{
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] (approx. ["<<storm::utility::convertNumber<double>(minVal)<<", "<<storm::utility::convertNumber<double>(maxVal)<<"]) on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms.");
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] (approx. ["<<storm::utility::convertNumber<double>(minVal)<<", "<<storm::utility::convertNumber<double>(maxVal)<<"]) on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<").");
}
@ -1259,7 +1267,7 @@ namespace storm {
// In this case, we know the result for the initial states for both player 2 minimizing and maximizing.
STORM_LOG_TRACE("No initial state is a 'maybe' state.");
STORM_LOG_INFO("Obtained qualitative bounds [0, 1] on the actual value for the initial states. Refining abstraction based on qualitative check.");
STORM_LOG_INFO("Obtained qualitative bounds [0, 1] on the actual value for the initial states (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<"). Refining abstraction based on qualitative check.");
// Post-process strategies for better refinements.
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms.");
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<").");
}else{
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] (approx. ["<<storm::utility::convertNumber<double>(minVal)<<", "<<storm::utility::convertNumber<double>(maxVal)<<"]) on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms.");
STORM_LOG_INFO("Obtained quantitative bounds ["<<minVal<<", "<<maxVal<<"] (approx. ["<<storm::utility::convertNumber<double>(minVal)<<", "<<storm::utility::convertNumber<double>(maxVal)<<"]) on the actual value for the initial states in "<<quantitativeWatch.getTimeInMilliseconds()<<"ms (after "<<totalWatch.getTimeInMilliseconds()<<"ms in iteration "<<this->iteration<<").");
}
// (9) Check whether the lower and upper bounds are close enough to terminate with an answer.