summaryrefslogtreecommitdiff
path: root/src/theory/builtin/proof_checker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/builtin/proof_checker.cpp')
-rw-r--r--src/theory/builtin/proof_checker.cpp20
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)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback