summaryrefslogtreecommitdiff
path: root/src/theory/builtin/proof_checker.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-12-02 09:41:31 -0600
committerGitHub <noreply@github.com>2020-12-02 09:41:31 -0600
commit5151238c98492fe332a2603c05752f3319ae8035 (patch)
treefd4310fa51ccc59983d9d2d9adb9ed491ab0642c /src/theory/builtin/proof_checker.cpp
parent901cea314c4dc3be411c345e42c858063fe5aa1b (diff)
(proof-new) Proofs for expand definitions (#5562)
Diffstat (limited to 'src/theory/builtin/proof_checker.cpp')
-rw-r--r--src/theory/builtin/proof_checker.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/theory/builtin/proof_checker.cpp b/src/theory/builtin/proof_checker.cpp
index 4e2e78bae..332a90d4e 100644
--- a/src/theory/builtin/proof_checker.cpp
+++ b/src/theory/builtin/proof_checker.cpp
@@ -75,10 +75,11 @@ void BuiltinProofRuleChecker::registerTo(ProofChecker* pc)
pc->registerTrustedChecker(PfRule::PREPROCESS_LEMMA, this, 3);
pc->registerTrustedChecker(PfRule::THEORY_PREPROCESS, this, 3);
pc->registerTrustedChecker(PfRule::THEORY_PREPROCESS_LEMMA, this, 3);
+ pc->registerTrustedChecker(PfRule::THEORY_EXPAND_DEF, this, 3);
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, 3);
+ pc->registerTrustedChecker(PfRule::TRUST_SUBS_MAP, this, 1);
}
Node BuiltinProofRuleChecker::applySubstitutionRewrite(
@@ -335,7 +336,7 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
else if (id == PfRule::MACRO_SR_PRED_INTRO)
{
Trace("builtin-pfcheck") << "Check " << id << " " << children.size() << " "
- << args.size() << std::endl;
+ << args[0] << std::endl;
Assert(1 <= args.size() && args.size() <= 3);
MethodId ids, idr;
if (!getMethodIds(args, ids, idr, 1))
@@ -347,6 +348,9 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
{
return Node::null();
}
+ Trace("builtin-pfcheck") << "Result is " << res << std::endl;
+ Trace("builtin-pfcheck") << "Witness form is "
+ << SkolemManager::getWitnessForm(res) << std::endl;
// **** NOTE: can rewrite the witness form here. This enables certain lemmas
// to be provable, e.g. (= k t) where k is a purification Skolem for t.
res = Rewriter::rewrite(SkolemManager::getWitnessForm(res));
@@ -356,6 +360,7 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
<< "Failed to rewrite to true, res=" << res << std::endl;
return Node::null();
}
+ Trace("builtin-pfcheck") << "...success" << std::endl;
return args[0];
}
else if (id == PfRule::MACRO_SR_PRED_ELIM)
@@ -412,11 +417,12 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
Assert(args.size() == 1);
return RemoveTermFormulas::getAxiomFor(args[0]);
}
- else if (id == PfRule::PREPROCESS || id == PfRule::THEORY_PREPROCESS
- || id == PfRule::WITNESS_AXIOM || id == PfRule::THEORY_LEMMA
- || id == PfRule::PREPROCESS_LEMMA || id == PfRule::THEORY_REWRITE
- || id == PfRule::TRUST_REWRITE || id == PfRule::TRUST_SUBS
- || id == PfRule::TRUST_SUBS_MAP)
+ else if (id == PfRule::PREPROCESS || id == PfRule::PREPROCESS_LEMMA
+ || id == PfRule::THEORY_PREPROCESS
+ || id == PfRule::THEORY_PREPROCESS_LEMMA
+ || id == PfRule::THEORY_EXPAND_DEF || id == PfRule::WITNESS_AXIOM
+ || id == PfRule::THEORY_LEMMA || id == PfRule::THEORY_REWRITE
+ || id == PfRule::TRUST_SUBS || id == PfRule::TRUST_SUBS_MAP)
{
// "trusted" rules
Assert(children.empty());
@@ -424,6 +430,7 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
Assert(args[0].getType().isBoolean());
return args[0];
}
+
// no rule
return Node::null();
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback