diff options
Diffstat (limited to 'src/theory/builtin/proof_checker.cpp')
-rw-r--r-- | src/theory/builtin/proof_checker.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/theory/builtin/proof_checker.cpp b/src/theory/builtin/proof_checker.cpp index 73d39f417..4e2e78bae 100644 --- a/src/theory/builtin/proof_checker.cpp +++ b/src/theory/builtin/proof_checker.cpp @@ -34,6 +34,8 @@ const char* toString(MethodId id) case MethodId::RW_REWRITE_EQ_EXT: return "RW_REWRITE_EQ_EXT"; case MethodId::RW_EVALUATE: return "RW_EVALUATE"; case MethodId::RW_IDENTITY: return "RW_IDENTITY"; + case MethodId::RW_REWRITE_THEORY_PRE: return "RW_REWRITE_THEORY_PRE"; + case MethodId::RW_REWRITE_THEORY_POST: return "RW_REWRITE_THEORY_POST"; case MethodId::SB_DEFAULT: return "SB_DEFAULT"; case MethodId::SB_LITERAL: return "SB_LITERAL"; case MethodId::SB_FORMULA: return "SB_FORMULA"; @@ -76,7 +78,7 @@ void BuiltinProofRuleChecker::registerTo(ProofChecker* pc) pc->registerTrustedChecker(PfRule::WITNESS_AXIOM, this, 3); pc->registerTrustedChecker(PfRule::TRUST_REWRITE, this, 1); pc->registerTrustedChecker(PfRule::TRUST_SUBS, this, 1); - pc->registerTrustedChecker(PfRule::TRUST_SUBS_MAP, this, 1); + pc->registerTrustedChecker(PfRule::TRUST_SUBS_MAP, this, 3); } Node BuiltinProofRuleChecker::applySubstitutionRewrite( @@ -282,6 +284,10 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id, exp.push_back(children[i]); } Node res = applySubstitution(args[0], exp, ids); + if (res.isNull()) + { + return Node::null(); + } return args[0].eqNode(res); } else if (id == PfRule::REWRITE) @@ -294,6 +300,10 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id, return Node::null(); } Node res = applyRewrite(args[0], idr); + if (res.isNull()) + { + return Node::null(); + } return args[0].eqNode(res); } else if (id == PfRule::EVALUATE) @@ -301,6 +311,10 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id, Assert(children.empty()); Assert(args.size() == 1); Node res = applyRewrite(args[0], MethodId::RW_EVALUATE); + if (res.isNull()) + { + return Node::null(); + } return args[0].eqNode(res); } else if (id == PfRule::MACRO_SR_EQ_INTRO) @@ -312,6 +326,10 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id, return Node::null(); } Node res = applySubstitutionRewrite(args[0], children, ids, idr); + if (res.isNull()) + { + return Node::null(); + } return args[0].eqNode(res); } else if (id == PfRule::MACRO_SR_PRED_INTRO) |