** \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"
}
Node ArithIteUtils::applySubstitutions(TNode f){
+ AlwaysAssert(!options::incrementalSolving());
return d_subs->apply(f);
}
}
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]);
}
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{
}
// 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());