Fixed bug in array constant normalization found by fuzzer.
authorClark Barrett <barrett@cs.nyu.edu>
Tue, 13 Nov 2012 01:24:27 +0000 (01:24 +0000)
committerClark Barrett <barrett@cs.nyu.edu>
Tue, 13 Nov 2012 01:24:27 +0000 (01:24 +0000)
src/theory/arrays/theory_arrays_rewriter.h

index f2632c739590ad6429458ab78f5461e54ab7a7f1..dbbfd04ddd1d2c1355180480008d26f85fa09540 100644 (file)
@@ -94,6 +94,7 @@ class TheoryArraysRewriter {
         // replaced, we can just return node[0]
         return node[0];
       }
+      // else rebuild the store without the replaced write and then exit
     }
     else {
       n = nm->mkNode(kind::STORE, n, index, value);
@@ -106,6 +107,11 @@ class TheoryArraysRewriter {
       elements.pop_back();
     }
 
+    // Ready to exit if write was to the default value (see previous comment)
+    if (value == defaultValue) {
+      return n;
+    }
+
     Cardinality indexCard = index.getType().getCardinality();
     if (indexCard.isInfinite()) {
       return n;