diff options
author | guykatzz <katz911@gmail.com> | 2017-03-17 14:11:41 -0700 |
---|---|---|
committer | guykatzz <katz911@gmail.com> | 2017-03-17 14:12:04 -0700 |
commit | 768534c0973788cab0097c6485e5113da1d406da (patch) | |
tree | 32e8eda1c7882f05b16c4bbec4e4095efbec34d3 /src/proof/theory_proof.cpp | |
parent | afe84522b87b6fc0ad5d0e9a396b61f7b523f674 (diff) |
better support for proof production when encountering bool terms: handle the new proof constructs generated by the equality engine.
proof production for bool-array.smt2 passes
Diffstat (limited to 'src/proof/theory_proof.cpp')
-rw-r--r-- | src/proof/theory_proof.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/proof/theory_proof.cpp b/src/proof/theory_proof.cpp index e245117fd..c684aa6bc 100644 --- a/src/proof/theory_proof.cpp +++ b/src/proof/theory_proof.cpp @@ -1092,6 +1092,20 @@ void BooleanProof::registerTerm(Expr term) { } } +void LFSCBooleanProof::printConstantDisequalityProof(std::ostream& os, Expr c1, Expr c2, const ProofLetMap &globalLetMap) { + Node falseNode = NodeManager::currentNM()->mkConst(false); + Node trueNode = NodeManager::currentNM()->mkConst(true); + + Assert(c1 == falseNode.toExpr() || c1 == trueNode.toExpr()); + Assert(c2 == falseNode.toExpr() || c2 == trueNode.toExpr()); + Assert(c1 != c2); + + if (c1 == trueNode.toExpr()) + os << "t_t_neq_f"; + else + os << "(negsymm _ _ _ t_t_neq_f)"; +} + void LFSCBooleanProof::printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) { Assert (term.getType().isBoolean()); if (term.isVariable()) { |