Use rewriteViaMethod instead of accessing builtin proof checker (#7146)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Wed, 8 Sep 2021 07:00:23 +0000 (02:00 -0500)
committerGitHub <noreply@github.com>
Wed, 8 Sep 2021 07:00:23 +0000 (00:00 -0700)
src/proof/method_id.h
src/smt/proof_post_processor.cpp
src/theory/builtin/proof_checker.cpp
src/theory/builtin/proof_checker.h

index b353232f48fa2dce8acb598f0ba366dcf04e24ad..fe7a9a90d813fb8c6ecd03b689b39618a5ec2030 100644 (file)
@@ -49,7 +49,8 @@ enum class MethodId : uint32_t
   RW_IDENTITY,
   // theory preRewrite, note this is only intended to be used as an argument
   // to THEORY_REWRITE in the final proof. It is not implemented in
-  // applyRewrite below, see documentation in proof_rule.h for THEORY_REWRITE.
+  // Rewriter::rewriteViaMethod, see documentation in proof_rule.h for
+  // THEORY_REWRITE.
   RW_REWRITE_THEORY_PRE,
   // same as above, for theory postRewrite
   RW_REWRITE_THEORY_POST,
index 9db8f1020629545a9110d1bd81305739b1ab39e4..f5d0e8ee813885686abadc832f430354092cea58 100644 (file)
@@ -477,10 +477,8 @@ Node ProofPostprocessCallback::expandMacros(PfRule id,
         rargs.push_back(args[3]);
       }
     }
-    builtin::BuiltinProofRuleChecker* builtinPfC =
-        static_cast<builtin::BuiltinProofRuleChecker*>(
-            d_pnm->getChecker()->getCheckerFor(PfRule::MACRO_SR_EQ_INTRO));
-    Node tr = builtinPfC->applyRewrite(ts, idr);
+    Rewriter* rr = d_env.getRewriter();
+    Node tr = rr->rewriteViaMethod(ts, idr);
     Trace("smt-proof-pp-debug")
         << "...eq intro rewrite equality is " << ts << " == " << tr << ", from "
         << idr << std::endl;
@@ -954,17 +952,14 @@ Node ProofPostprocessCallback::expandMacros(PfRule id,
     {
       getMethodId(args[1], idr);
     }
-    builtin::BuiltinProofRuleChecker* builtinPfC =
-        static_cast<builtin::BuiltinProofRuleChecker*>(
-            d_pnm->getChecker()->getCheckerFor(PfRule::REWRITE));
-    Node ret = builtinPfC->applyRewrite(args[0], idr);
+    Rewriter* rr = d_env.getRewriter();
+    Node ret = rr->rewriteViaMethod(args[0], idr);
     Node eq = args[0].eqNode(ret);
     if (idr == MethodId::RW_REWRITE || idr == MethodId::RW_REWRITE_EQ_EXT)
     {
       // rewrites from theory::Rewriter
       bool isExtEq = (idr == MethodId::RW_REWRITE_EQ_EXT);
       // use rewrite with proof interface
-      Rewriter* rr = d_env.getRewriter();
       TrustNode trn = rr->rewriteWithProof(args[0], isExtEq);
       std::shared_ptr<ProofNode> pfn = trn.toProofNode();
       if (pfn == nullptr)
index e51db4ce3726b4488fec1f0ee4a0eb421abba896..d71b3635b900291965598c7f4f3531066c993a87 100644 (file)
@@ -67,12 +67,7 @@ Node BuiltinProofRuleChecker::applySubstitutionRewrite(
     MethodId idr)
 {
   Node nks = applySubstitution(n, exp, ids, ida);
-  return applyRewrite(nks, idr);
-}
-
-Node BuiltinProofRuleChecker::applyRewrite(TNode n, MethodId idr)
-{
-  return d_env.getRewriter()->rewriteViaMethod(n, idr);
+  return d_env.getRewriter()->rewriteViaMethod(nks, idr);
 }
 
 bool BuiltinProofRuleChecker::getSubstitutionForLit(Node exp,
@@ -254,7 +249,7 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
     {
       return Node::null();
     }
-    Node res = applyRewrite(args[0], idr);
+    Node res = d_env.getRewriter()->rewriteViaMethod(args[0], idr);
     if (res.isNull())
     {
       return Node::null();
@@ -265,7 +260,7 @@ Node BuiltinProofRuleChecker::checkInternal(PfRule id,
   {
     Assert(children.empty());
     Assert(args.size() == 1);
-    Node res = applyRewrite(args[0], MethodId::RW_EVALUATE);
+    Node res = d_env.getRewriter()->rewriteViaMethod(args[0], MethodId::RW_EVALUATE);
     if (res.isNull())
     {
       return Node::null();
index bb746e467f1d82bff4de8c523769f02fab881ba2..8b3988f27afbd41eedc8db7b52c331eeee50fc77 100644 (file)
@@ -39,16 +39,6 @@ class BuiltinProofRuleChecker : public ProofRuleChecker
   BuiltinProofRuleChecker(Env& env);
   /** Destructor. */
   ~BuiltinProofRuleChecker() {}
-  /**
-   * Apply rewrite on n (in skolem form). This encapsulates the exact behavior
-   * of a REWRITE step in a proof.
-   *
-   * @param n The node to rewrite,
-   * @param idr The method identifier of the rewriter, by default RW_REWRITE
-   * specifying a call to Rewriter::rewrite.
-   * @return The rewritten form of n.
-   */
-  Node applyRewrite(TNode n, MethodId idr = MethodId::RW_REWRITE);
   /**
    * Get substitution for literal exp. Updates vars/subs to the substitution
    * specified by exp for the substitution method ids.