summaryrefslogtreecommitdiff
path: root/src/theory
diff options
context:
space:
mode:
authorDejan Jovanović <dejan@cs.nyu.edu>2013-03-21 14:26:54 -0400
committerDejan Jovanović <dejan@cs.nyu.edu>2013-03-21 14:26:54 -0400
commit33db5447e5e659628ff5845d907aec151765a8c6 (patch)
tree5fa87e074f455f6d1ac051b485e69f407138a313 /src/theory
parent80919c47ee899b85d626b0af923b77144b21e9f3 (diff)
more equality constant evaluation
Diffstat (limited to 'src/theory')
-rw-r--r--src/theory/uf/equality_engine.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/theory/uf/equality_engine.cpp b/src/theory/uf/equality_engine.cpp
index 2fcf43054..50c21a1e6 100644
--- a/src/theory/uf/equality_engine.cpp
+++ b/src/theory/uf/equality_engine.cpp
@@ -244,7 +244,9 @@ void EqualityEngine::subtermEvaluates(EqualityNodeId id) {
Debug("equality::evaluation") << d_name << "::eq::subtermEvaluates(" << d_nodes[id] << "): " << d_subtermsToEvaluate[id] << std::endl;
Assert(!d_isInternal[id]);
Assert(d_subtermsToEvaluate[id] > 0);
- d_subtermsToEvaluate[id] --;
+ if ((-- d_subtermsToEvaluate[id]) == 0) {
+ d_evaluationQueue.push(id);
+ }
d_subtermEvaluates.push_back(id);
d_subtermEvaluatesSize = d_subtermEvaluates.size();
Debug("equality::evaluation") << d_name << "::eq::subtermEvaluates(" << d_nodes[id] << "): new " << d_subtermsToEvaluate[id] << std::endl;
@@ -296,6 +298,7 @@ void EqualityEngine::addTerm(TNode t) {
d_subtermsToEvaluate[result] = t.getNumChildren();
for (unsigned i = 0; i < t.getNumChildren(); ++ i) {
if (isConstant(getNodeId(t[i]))) {
+ Debug("equality::evaluation") << d_name << "::eq::addTerm(" << t << "): evaluatates " << t[i] << std::endl;
subtermEvaluates(result);
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback