Bug fix:
authorGuy <katz911@gmail.com>
Tue, 26 Jul 2016 23:37:57 +0000 (16:37 -0700)
committerGuy <katz911@gmail.com>
Tue, 26 Jul 2016 23:37:57 +0000 (16:37 -0700)
If a lemma (a disjunction) has a "false" literal in it, it can be ignored, but a "true" literal really should stay

src/proof/proof_manager.cpp

index e5e00f11791918b069a7da8f6662779ae92e35cb..65dbb644dd84106dda12dd7af84efb3ea999f45f 100644 (file)
@@ -336,11 +336,8 @@ std::set<Node> ProofManager::satClauseToNodeSet(prop::SatClause* clause) {
     prop::SatLiteral lit = (*clause)[i];
     Node node = getCnfProof()->getAtom(lit.getSatVariable());
     Expr atom = node.toExpr();
-    if (atom.isConst()) {
-      Assert (atom == utils::mkTrue());
-      continue;
-    }
-    result.insert(lit.isNegated() ? node.notNode() : node);
+    if (atom != utils::mkTrue())
+      result.insert(lit.isNegated() ? node.notNode() : node);
   }
 
   return result;