summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathias Preiner <mathias.preiner@gmail.com>2021-11-01 18:00:12 -0700
committerGitHub <noreply@github.com>2021-11-02 01:00:12 +0000
commit7a2312eb876ddd632bd5cdcda34ca6a550f55df7 (patch)
tree25e335ec5e77e7c8431902fb4ce382c3baf1ab92 /src
parent50687471628722439b1eafa7085c6d3ff2fe5e5c (diff)
bv: Remove remaining Rewriter::rewrite calls. (#7545)
Diffstat (limited to 'src')
-rw-r--r--src/theory/bv/bitblast/bitblast_proof_generator.cpp9
-rw-r--r--src/theory/bv/bitblast/bitblast_proof_generator.h7
-rw-r--r--src/theory/bv/bitblast/bitblaster.h52
-rw-r--r--src/theory/bv/bitblast/proof_bitblaster.cpp5
-rw-r--r--src/theory/bv/theory_bv_rewrite_rules_normalization.h6
5 files changed, 13 insertions, 66 deletions
diff --git a/src/theory/bv/bitblast/bitblast_proof_generator.cpp b/src/theory/bv/bitblast/bitblast_proof_generator.cpp
index 57435f651..c05243e8c 100644
--- a/src/theory/bv/bitblast/bitblast_proof_generator.cpp
+++ b/src/theory/bv/bitblast/bitblast_proof_generator.cpp
@@ -21,9 +21,10 @@ namespace cvc5 {
namespace theory {
namespace bv {
-BitblastProofGenerator::BitblastProofGenerator(ProofNodeManager* pnm,
+BitblastProofGenerator::BitblastProofGenerator(Env& env,
+ ProofNodeManager* pnm,
TConvProofGenerator* tcpg)
- : d_pnm(pnm), d_tcpg(tcpg)
+ : EnvObj(env), d_pnm(pnm), d_tcpg(tcpg)
{
}
@@ -78,7 +79,7 @@ std::shared_ptr<ProofNode> BitblastProofGenerator::getProofFor(Node eq)
* sub-terms and recording these bit-blast steps in the conversion proof.
*/
- Node rwt = Rewriter::rewrite(t);
+ Node rwt = rewrite(t);
std::vector<Node> transSteps;
@@ -94,7 +95,7 @@ std::shared_ptr<ProofNode> BitblastProofGenerator::getProofFor(Node eq)
transSteps.push_back(rwt.eqNode(bbt));
// Record post-rewrite of bit-blasted term.
- Node rwbbt = Rewriter::rewrite(bbt);
+ Node rwbbt = rewrite(bbt);
if (bbt != rwbbt)
{
cdp.addStep(bbt.eqNode(rwbbt), PfRule::REWRITE, {}, {bbt});
diff --git a/src/theory/bv/bitblast/bitblast_proof_generator.h b/src/theory/bv/bitblast/bitblast_proof_generator.h
index 114bf4749..a0627010a 100644
--- a/src/theory/bv/bitblast/bitblast_proof_generator.h
+++ b/src/theory/bv/bitblast/bitblast_proof_generator.h
@@ -19,6 +19,7 @@
#include "proof/proof_generator.h"
#include "proof/proof_node_manager.h"
+#include "smt/env_obj.h"
namespace cvc5 {
@@ -28,10 +29,12 @@ namespace theory {
namespace bv {
/** Proof generator fot bit-blast proofs. */
-class BitblastProofGenerator : public ProofGenerator
+class BitblastProofGenerator : public ProofGenerator, protected EnvObj
{
public:
- BitblastProofGenerator(ProofNodeManager* pnm, TConvProofGenerator* tcpg);
+ BitblastProofGenerator(Env& env,
+ ProofNodeManager* pnm,
+ TConvProofGenerator* tcpg);
~BitblastProofGenerator(){};
/**
diff --git a/src/theory/bv/bitblast/bitblaster.h b/src/theory/bv/bitblast/bitblaster.h
index ef75bd5f8..fddf6c51e 100644
--- a/src/theory/bv/bitblast/bitblaster.h
+++ b/src/theory/bv/bitblast/bitblaster.h
@@ -199,58 +199,6 @@ void TBitblaster<T>::invalidateModelCache()
d_modelCache.clear();
}
-template <class T>
-Node TBitblaster<T>::getTermModel(TNode node, bool fullModel)
-{
- if (d_modelCache.find(node) != d_modelCache.end()) return d_modelCache[node];
-
- if (node.isConst()) return node;
-
- Node value = getModelFromSatSolver(node, false);
- if (!value.isNull())
- {
- Debug("bv-equality-status")
- << "TLazyBitblaster::getTermModel from SatSolver" << node << " => "
- << value << "\n";
- d_modelCache[node] = value;
- Assert(value.isConst());
- return value;
- }
-
- if (Theory::isLeafOf(node, theory::THEORY_BV))
- {
- // if it is a leaf may ask for fullModel
- value = getModelFromSatSolver(node, true);
- Debug("bv-equality-status") << "TLazyBitblaster::getTermModel from VarValue"
- << node << " => " << value << "\n";
- Assert((fullModel && !value.isNull() && value.isConst()) || !fullModel);
- if (!value.isNull())
- {
- d_modelCache[node] = value;
- }
- return value;
- }
- Assert(node.getType().isBitVector());
-
- NodeBuilder nb(node.getKind());
- if (node.getMetaKind() == kind::metakind::PARAMETERIZED)
- {
- nb << node.getOperator();
- }
-
- for (unsigned i = 0; i < node.getNumChildren(); ++i)
- {
- nb << getTermModel(node[i], fullModel);
- }
- value = nb;
- value = Rewriter::rewrite(value);
- Assert(value.isConst());
- d_modelCache[node] = value;
- Debug("bv-term-model") << "TLazyBitblaster::getTermModel Building Value"
- << node << " => " << value << "\n";
- return value;
-}
-
} // namespace bv
} // namespace theory
} // namespace cvc5
diff --git a/src/theory/bv/bitblast/proof_bitblaster.cpp b/src/theory/bv/bitblast/proof_bitblaster.cpp
index 6119e9d7c..d8f327b29 100644
--- a/src/theory/bv/bitblast/proof_bitblaster.cpp
+++ b/src/theory/bv/bitblast/proof_bitblaster.cpp
@@ -45,7 +45,8 @@ BBProof::BBProof(Env& env,
d_tcontext.get(),
false)
: nullptr),
- d_bbpg(pnm ? new BitblastProofGenerator(pnm, d_tcpg.get()) : nullptr),
+ d_bbpg(pnm ? new BitblastProofGenerator(env, pnm, d_tcpg.get())
+ : nullptr),
d_recordFineGrainedProofs(fineGrained)
{
}
@@ -75,7 +76,7 @@ void BBProof::bbAtom(TNode node)
NodeManager* nm = NodeManager::currentNM();
// post-rewrite atom
- Node rwNode = Rewriter::rewrite(node);
+ Node rwNode = rewrite(node);
// Post-order traversal of `rwNode` to make sure that all subterms are
// bit-blasted and recorded.
diff --git a/src/theory/bv/theory_bv_rewrite_rules_normalization.h b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
index 5ead8a215..d73497adf 100644
--- a/src/theory/bv/theory_bv_rewrite_rules_normalization.h
+++ b/src/theory/bv/theory_bv_rewrite_rules_normalization.h
@@ -844,15 +844,9 @@ inline Node RewriteRule<SolveEq>::apply(TNode node)
if (newLeft < newRight)
{
- Assert((newRight == left && newLeft == right)
- || Rewriter::rewrite(newRight) != left
- || Rewriter::rewrite(newLeft) != right);
return newRight.eqNode(newLeft);
}
- Assert((newLeft == left && newRight == right)
- || Rewriter::rewrite(newLeft) != left
- || Rewriter::rewrite(newRight) != right);
return newLeft.eqNode(newRight);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback