summaryrefslogtreecommitdiff
path: root/src/smt/process_assertions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/smt/process_assertions.cpp')
-rw-r--r--src/smt/process_assertions.cpp14
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
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback