Skip to content

Commit 1e839e5

Browse files
add missing new_value_eh when repaired up
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 7ed185a commit 1e839e5

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/ast/sls/sls_seq_plugin.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ namespace sls {
394394
if (is_value(e))
395395
return;
396396
strval0(e) = strval1(e);
397+
ctx.new_value_eh(e);
397398
return;
398399
}
399400

@@ -1007,8 +1008,15 @@ namespace sls {
10071008
auto& ev = get_eval(t);
10081009
ev.max_length = 1;
10091010
}
1010-
// extract with constant length.
1011-
1011+
expr* x, * offset, * len;
1012+
rational len_r;
1013+
if (seq.str.is_extract(t, x, offset, len) && a.is_numeral(len, len_r)) {
1014+
auto& ev = get_eval(t);
1015+
if (len_r < 0)
1016+
ev.max_length = 0;
1017+
if (len_r.is_unsigned())
1018+
ev.max_length = std::min(ev.max_length, len_r.get_unsigned());
1019+
}
10121020
}
10131021
}
10141022

@@ -1018,6 +1026,7 @@ namespace sls {
10181026
if (!is_seq_predicate(e))
10191027
return;
10201028
auto a = to_app(e);
1029+
// verbose_stream() << "repair " << lit << " " << mk_pp(e, m) << " " << bval1(e) << "\n";
10211030
if (bval1(e) == lit.sign())
10221031
ctx.flip(lit.var());
10231032
}

0 commit comments

Comments
 (0)