Assert(desiredVal != SAT_VALUE_UNKNOWN, "expected known value");
/* Good luck, hope you can get what you want */
- Assert(litVal == desiredVal || litVal == SAT_VALUE_UNKNOWN,
+ // if(not (litVal == desiredVal || litVal == SAT_VALUE_UNKNOWN)) {
+ // Warning() << "WARNING: IMPORTANT: Please look into this. Sat solver is asking for a decision" << std::endl
+ // << "when the assertion we are trying to justify is already unsat. OR there is a bug" << std::endl;
+ // GiveUpException();
+ // }
+ Assert(litVal == desiredVal || litVal == SAT_VALUE_UNKNOWN,
"invariant violated");
/* What type of node is this */
}
for(unsigned i = d_prvsIndex; i < d_assertions.size(); ++i) {
- Debug("decision") << d_assertions[i] << std::endl;
+ Debug("decision") << "---" << std::endl << d_assertions[i] << std::endl;
// Sanity check: if it was false, aren't we inconsistent?
Assert( tryGetSatValue(d_assertions[i]) != SAT_VALUE_FALSE);
SatValue desiredVal = SAT_VALUE_TRUE;
- SatLiteral litDecision = findSplitter(d_assertions[i], desiredVal);
+ SatLiteral litDecision;
+ try {
+ litDecision = findSplitter(d_assertions[i], desiredVal);
+ }catch(GiveUpException &e) {
+ return prop::undefSatLiteral;
+ }
if(litDecision != undefSatLiteral)
return litDecision;
{
bool ret;
SatLiteral litDecision;
- try {
- ret = findSplitterRec(node, desiredVal, &litDecision);
- }catch(GiveUpException &e) {
- return prop::undefSatLiteral;
- }
+ ret = findSplitterRec(node, desiredVal, &litDecision);
if(ret == true) {
Debug("decision") << "Yippee!!" << std::endl;
//d_prvsIndex = i;