diff options
author | Tim King <taking@cs.nyu.edu> | 2015-06-14 00:51:19 +0200 |
---|---|---|
committer | Tim King <taking@cs.nyu.edu> | 2015-06-14 00:56:25 +0200 |
commit | 812e6b5fe8105a7dc912ddcc5c9cceeb5831aca0 (patch) | |
tree | 1a308cacbb7291dd3adb216b5f0ba2929911849c | |
parent | 26291553d4c909fdf01e4436a34616abb43d9119 (diff) |
Turning off aggressive arith ite simplifications during incremental solving.
-rw-r--r-- | src/theory/arith/arith_ite_utils.cpp | 3 | ||||
-rw-r--r-- | src/theory/theory_engine.cpp | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/theory/arith/arith_ite_utils.cpp b/src/theory/arith/arith_ite_utils.cpp index 757dab8fb..2b31831e2 100644 --- a/src/theory/arith/arith_ite_utils.cpp +++ b/src/theory/arith/arith_ite_utils.cpp @@ -15,6 +15,7 @@ ** \todo document this file **/ +#include "smt/options.h" #include "theory/arith/arith_ite_utils.h" #include "theory/arith/normal_form.h" #include "theory/arith/arith_utilities.h" @@ -272,6 +273,7 @@ void ArithIteUtils::addSubstitution(TNode f, TNode t){ } Node ArithIteUtils::applySubstitutions(TNode f){ + AlwaysAssert(!options::incrementalSolving()); return d_subs->apply(f); } @@ -285,6 +287,7 @@ Node ArithIteUtils::selectForCmp(Node n) const{ } void ArithIteUtils::learnSubstitutions(const std::vector<Node>& assertions){ + AlwaysAssert(!options::incrementalSolving()); for(size_t i=0, N=assertions.size(); i < N; ++i){ collectAssertions(assertions[i]); } diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp index a70f84b76..ecc2259dd 100644 --- a/src/theory/theory_engine.cpp +++ b/src/theory/theory_engine.cpp @@ -1531,7 +1531,12 @@ void TheoryEngine::mkAckermanizationAsssertions(std::vector<Node>& assertions) { Node TheoryEngine::ppSimpITE(TNode assertion) { - if(!d_iteRemover.containsTermITE(assertion)){ + if(options::incrementalSolving()){ + // disabling the d_iteUtilities->simpITE(assertion) pass for incremental solving. + // This is paranoia. We do not actually know of a bug coming from this. + // TODO re-enable + return assertion; + } else if(!d_iteRemover.containsTermITE(assertion)){ return assertion; }else{ @@ -1576,7 +1581,8 @@ bool TheoryEngine::donePPSimpITE(std::vector<Node>& assertions){ } // Do theory specific preprocessing passes - if(d_logicInfo.isTheoryEnabled(theory::THEORY_ARITH)){ + if(d_logicInfo.isTheoryEnabled(theory::THEORY_ARITH) + && !options::incrementalSolving() ){ if(!simpDidALotOfWork){ ContainsTermITEVisitor& contains = *d_iteRemover.getContainsVisitor(); arith::ArithIteUtils aiteu(contains, d_userContext, getModel()); |