summaryrefslogtreecommitdiff
path: root/src/theory/uf
diff options
context:
space:
mode:
authorMorgan Deters <mdeters@cs.nyu.edu>2014-02-21 17:15:43 -0500
committerMorgan Deters <mdeters@cs.nyu.edu>2014-02-21 18:15:56 -0500
commita8efcd91a8f7dc107355f347996fb8dd3ba7e74a (patch)
tree8277e66ee857e446dbc59efccadf415bc0517c16 /src/theory/uf
parentb712a12978ea0c1f0f57bb72e28dc1286dc8ac69 (diff)
No diamond-breaking under quantifiers (resolves bug #550).
Diffstat (limited to 'src/theory/uf')
-rw-r--r--src/theory/uf/theory_uf.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
index 1045c5a24..2bce77451 100644
--- a/src/theory/uf/theory_uf.cpp
+++ b/src/theory/uf/theory_uf.cpp
@@ -243,6 +243,13 @@ void TheoryUF::ppStaticLearn(TNode n, NodeBuilder<>& learned) {
while(!workList.empty()) {
n = workList.back();
+ if(n.getKind() == kind::FORALL || n.getKind() == kind::EXISTS) {
+ // unsafe to go under quantifiers; we might pull bound vars out of scope!
+ processed.insert(n);
+ workList.pop_back();
+ continue;
+ }
+
bool unprocessedChildren = false;
for(TNode::iterator i = n.begin(), iend = n.end(); i != iend; ++i) {
if(processed.find(*i) == processed.end()) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback