3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00
This commit is contained in:
Nikolaj Bjorner 2021-03-29 14:11:49 -07:00
parent 6bdf377e11
commit 6d28b1a858
3 changed files with 40 additions and 8 deletions

View file

@ -4136,6 +4136,30 @@ br_status seq_rewriter::mk_re_star(expr* a, expr_ref& result) {
* (re.range c_1 c_n)
*/
br_status seq_rewriter::mk_re_range(expr* lo, expr* hi, expr_ref& result) {
zstring s;
unsigned len = 0;
rational rlen;
bool is_empty = false;
if (str().is_string(lo, s) && s.length() != 1)
is_empty = true;
if (str().is_string(hi, s) && s.length() != 1)
is_empty = true;
min_length(lo, len);
if (len > 1)
is_empty = true;
min_length(hi, len);
if (len > 1)
is_empty = true;
if (max_length(lo, rlen) && rlen == 0)
is_empty = true;
if (max_length(hi, rlen) && rlen == 0)
is_empty = true;
if (is_empty) {
sort* srt = re().mk_re(lo->get_sort());
result = re().mk_empty(srt);
return BR_DONE;
}
return BR_FAILED;
}