From 5151238c98492fe332a2603c05752f3319ae8035 Mon Sep 17 00:00:00 2001 From: Andrew Reynolds Date: Wed, 2 Dec 2020 09:41:31 -0600 Subject: (proof-new) Proofs for expand definitions (#5562) --- src/theory/builtin/proof_checker.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/theory/builtin') 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(); } -- cgit v1.2.3