diff options
Diffstat (limited to 'src/smt/process_assertions.cpp')
-rw-r--r-- | src/smt/process_assertions.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/smt/process_assertions.cpp b/src/smt/process_assertions.cpp index 504814e07..971288b67 100644 --- a/src/smt/process_assertions.cpp +++ b/src/smt/process_assertions.cpp @@ -339,8 +339,7 @@ bool ProcessAssertions::apply(Assertions& as) // assertion IteSkolemMap::iterator it = iskMap.begin(); IteSkolemMap::iterator iend = iskMap.end(); - NodeBuilder<> builder(AND); - builder << assertions[assertions.getRealAssertionsEnd() - 1]; + std::vector<Node> newConj; vector<TNode> toErase; for (; it != iend; ++it) { @@ -367,19 +366,20 @@ bool ProcessAssertions::apply(Assertions& as) } } // Move this iteExpr into the main assertions - builder << assertions[(*it).second]; - assertions[(*it).second] = d_true; + newConj.push_back(assertions[(*it).second]); + assertions.replace((*it).second, d_true); toErase.push_back((*it).first); } - if (builder.getNumChildren() > 1) + if (!newConj.empty()) { while (!toErase.empty()) { iskMap.erase(toErase.back()); toErase.pop_back(); } - assertions[assertions.getRealAssertionsEnd() - 1] = - Rewriter::rewrite(Node(builder)); + size_t index = assertions.getRealAssertionsEnd() - 1; + Node newAssertion = NodeManager::currentNM()->mkAnd(newConj); + assertions.conjoin(index, newAssertion); } // TODO(b/1256): For some reason this is needed for some benchmarks, such // as |