diff options
author | Dejan Jovanović <dejan@cs.nyu.edu> | 2013-04-03 17:55:58 -0400 |
---|---|---|
committer | Dejan Jovanović <dejan@cs.nyu.edu> | 2013-04-03 17:55:58 -0400 |
commit | bb6c74a7bb306de8b7c5d7e9701b3524eda68f4a (patch) | |
tree | 17482f7fcc4f5af3ae46c9428e942f05f7f8abf8 /src/theory/bv/theory_bv.cpp | |
parent | 62748da1e72dbcc5c6daef88ad899706de8ae7db (diff) |
* changing the bitblast-eager to bitblast on pre-register
* the newVar interface of the sat solver now changed to include (isTheoryLiteral, preRegister, canEliminate)
* when bitblast-eager all bv atoms are (theory=false, prereg = true, canelim = true)
* bitblast-eager implies decision=internal
Diffstat (limited to 'src/theory/bv/theory_bv.cpp')
-rw-r--r-- | src/theory/bv/theory_bv.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/theory/bv/theory_bv.cpp b/src/theory/bv/theory_bv.cpp index 228a4d8a3..433223308 100644 --- a/src/theory/bv/theory_bv.cpp +++ b/src/theory/bv/theory_bv.cpp @@ -102,6 +102,7 @@ void TheoryBV::preRegisterTerm(TNode node) { if (options::bitvectorEagerBitblast()) { // don't use the equality engine in the eager bit-blasting + d_subtheoryMap[SUB_BITBLAST]->preRegister(node); return; } for (unsigned i = 0; i < d_subtheories.size(); ++i) { @@ -124,6 +125,10 @@ void TheoryBV::sendConflict() { void TheoryBV::check(Effort e) { Debug("bitvector") << "TheoryBV::check(" << e << ")" << std::endl; + if (options::bitvectorEagerBitblast()) { + return; + } + if (Theory::fullEffort(e)) { ++(d_statistics.d_numCallsToCheckFullEffort); } else { @@ -186,6 +191,10 @@ Node TheoryBV::getModelValue(TNode var) { void TheoryBV::propagate(Effort e) { Debug("bitvector") << indent() << "TheoryBV::propagate()" << std::endl; + if (options::bitvectorEagerBitblast()) { + return; + } + if (inConflict()) { return; } |