}
}
- return true;
+ return false; // Return false to enable equality engine reasoning in Theory.
+}
+
+TrustNode BVSolverBitblastInternal::explain(TNode n)
+{
+ Debug("bv-bitblast-internal") << "explain called on " << n << std::endl;
+ return d_im.explainLit(n);
}
bool BVSolverBitblastInternal::collectModelValues(TheoryModel* m,
bool isPrereg,
bool isInternal) override;
+ TrustNode explain(TNode n) override;
+
std::string identify() const override { return "BVSolverBitblastInternal"; };
bool collectModelValues(TheoryModel* m,
#include "base/check.h"
#include "expr/node_algorithm.h"
#include "options/arith_options.h"
-#include "options/bv_options.h"
#include "options/smt_options.h"
#include "options/theory_options.h"
#include "smt/smt_statistics_registry.h"
// conditional on whether we are using the equality solver
return options::arithEqSolver();
}
- if (id == THEORY_BV)
- {
- // the internal bitblast BV solver doesnt use an equality engine
- return options::bvSolver() != options::BVSolver::BITBLAST_INTERNAL;
- }
return id == THEORY_UF || id == THEORY_DATATYPES || id == THEORY_BAGS
|| id == THEORY_FP || id == THEORY_SETS || id == THEORY_STRINGS
|| id == THEORY_SEP || id == THEORY_ARRAYS;