Make strings model construction robust to lengths that are not propagated equal ...
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 17 Sep 2018 19:38:07 +0000 (14:38 -0500)
committerAndres Noetzli <andres.noetzli@gmail.com>
Mon, 17 Sep 2018 19:38:07 +0000 (12:38 -0700)
commitc90b5b15ca93e64683c2bbf85def8d7afb4edab8
tree725385999cf96340d7d70adb1845f8f2ce817461
parentfc07d6af4156fde8af048ca5db8ff1f43de48ebc
Make strings model construction robust to lengths that are not propagated equal (#2444)

This fixes #2429.

This was caused by arithmetic not notifying an equality between shared terms that it assigned to the same value.  See explanation in comment.

We should investigate a bit more why this is happening. I didnt think arithmetic was allowed to assign the same value to unpropagated shared length terms.  I've opened issue https://github.com/CVC4/CVC4/issues/2443 to track this.

Regardless, the strings model construction should be robust to handle this case, which this PR does.
src/theory/strings/theory_strings.cpp
src/theory/strings/theory_strings.h
test/regress/Makefile.tests
test/regress/regress1/strings/issue2429-code.smt2 [new file with mode: 0644]
test/regress/regress3/issue2429.smt2 [new file with mode: 0644]