Fix for bug 639.
authorClark Barrett <barrett@cs.stanford.edu>
Fri, 16 Jun 2017 00:11:22 +0000 (17:11 -0700)
committerClark Barrett <barrett@cs.stanford.edu>
Fri, 16 Jun 2017 00:11:41 +0000 (17:11 -0700)
src/theory/arrays/theory_arrays.cpp
src/theory/arrays/theory_arrays.h
test/regress/regress0/Makefile.am
test/regress/regress0/bug639.smt2

index 2c7418a77427df7d2477df731baa37666caffe54..e712a51b62b57bb66fb2364386943e375c21cbed 100644 (file)
@@ -1704,7 +1704,7 @@ void TheoryArrays::mergeArrays(TNode a, TNode b)
     // so we take its representative to be safe.
     a = d_equalityEngine.getRepresentative(a);
     Assert(d_equalityEngine.getRepresentative(b) == a);
-    Trace("arrays-merge") << spaces(getSatContext()->getLevel()) << "Arrays::merge: " << a << "," << b << ")\n";
+    Trace("arrays-merge") << spaces(getSatContext()->getLevel()) << "Arrays::merge: (" << a << ", " << b << ")\n";
 
     if (options::arraysLazyRIntro1() && !options::arraysWeakEquivalence()) {
       checkRIntro1(a, b);
index 574702368795735b448f8872009bdc7e82cef1da..48da4c6816962c908ae36aae86628c627e663b1b 100644 (file)
@@ -309,7 +309,6 @@ class TheoryArrays : public Theory {
       Debug("arrays::propagate") << spaces(d_arrays.getSatContext()->getLevel()) << "NotifyClass::eqNotifyTriggerTermEquality(" << t1 << ", " << t2 << ", " << (value ? "true" : "false") << ")" << std::endl;
       if (value) {
         if (t1.getType().isArray()) {
-          d_arrays.mergeArrays(t1, t2);
           if (!d_arrays.isShared(t1) || !d_arrays.isShared(t2)) {
             return true;
           }
@@ -334,7 +333,11 @@ class TheoryArrays : public Theory {
 
     void eqNotifyNewClass(TNode t) { }
     void eqNotifyPreMerge(TNode t1, TNode t2) { }
-    void eqNotifyPostMerge(TNode t1, TNode t2) { }
+    void eqNotifyPostMerge(TNode t1, TNode t2) {
+      if (t1.getType().isArray()) {
+        d_arrays.mergeArrays(t1, t2);
+      }
+    }
     void eqNotifyDisequal(TNode t1, TNode t2, TNode reason) { }
   };
 
index 1d2cc9f451a860587f7922a7e9dcca3a33d9f76f..20bafbc77e614ed0721f73c0f6d31042c6e8317b 100644 (file)
@@ -178,6 +178,7 @@ BUG_TESTS = \
        bug596.cvc \
        bug596b.cvc \
        bug605.cvc \
+       bug639.smt2 \
        bt-test-00.smt2 \
        bt-test-01.smt2
 #bug590.smt2
@@ -188,9 +189,7 @@ TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(TPTP_TESTS) $(BUG_TESTS)
 # we have a minimized version still getting tested
 # bug639 -- still fails, reopened bug
 DISABLED_TESTS = \
-       bug512.smt2 \
-       bug639.smt2
-
+       bug512.smt2
 
 EXTRA_DIST = $(TESTS) \
        simplification_bug4.smt2.expect \
index 9e31e75cd5b1c1efeb7ef3b065ea524804e0d36c..907568d73d947f323435113b0236627cc8e98190 100644 (file)
@@ -1,4 +1,4 @@
-(set-logic QF_AUFLIA)
+(set-logic QF_AUFNIA)
 (set-info :status unsat)
 (declare-fun i () Int)
 (declare-fun j () Int)