#include "Lib/Environment.hpp"
#include "Shell/Statistics.hpp"
#include "FallbackSolverWrapper.hpp"
namespace SAT
{
VarAssignment FallbackSolverWrapper::getAssignment(unsigned var)
{
ASS_G(var,0); ASS_LE(var,_varCnt);
if(_usingFallback){
return _fallback->getAssignment(var);
}
return _inner->getAssignment(var);
}
Status FallbackSolverWrapper::solveUnderAssumptionsLimited(const SATLiteralStack& assumps, unsigned conflictCountLimit) {
Status status = _inner->solveUnderAssumptionsLimited(assumps, conflictCountLimit);
if(status == Status::UNKNOWN){
status = _fallback->solveUnderAssumptionsLimited(assumps, conflictCountLimit);
_usingFallback = true;
ASS(status != Status::UNKNOWN);
env.statistics->smtFallbacks++;
}
else{
_usingFallback = false;
}
return status;
}
}