mirror of
https://github.com/Z3Prover/z3
synced 2025-12-20 19:23:44 +00:00
add rewrites for #2575
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
78ed71b8de
commit
12034df11a
3 changed files with 70 additions and 0 deletions
|
|
@ -1093,6 +1093,16 @@ app* seq_util::re::mk_loop(expr* r, unsigned lo, unsigned hi) {
|
|||
return m.mk_app(m_fid, OP_RE_LOOP, 2, params, 1, &r);
|
||||
}
|
||||
|
||||
app* seq_util::re::mk_loop(expr* r, expr* lo) {
|
||||
expr* rs[2] = { r, lo };
|
||||
return m.mk_app(m_fid, OP_RE_LOOP, 0, nullptr, 2, rs);
|
||||
}
|
||||
|
||||
app* seq_util::re::mk_loop(expr* r, expr* lo, expr* hi) {
|
||||
expr* rs[3] = { r, lo, hi };
|
||||
return m.mk_app(m_fid, OP_RE_LOOP, 0, nullptr, 3, rs);
|
||||
}
|
||||
|
||||
app* seq_util::re::mk_full_char(sort* s) {
|
||||
return m.mk_app(m_fid, OP_RE_FULL_CHAR_SET, 0, nullptr, 0, nullptr, s);
|
||||
}
|
||||
|
|
@ -1129,3 +1139,28 @@ bool seq_util::re::is_loop(expr const* n, expr*& body, unsigned& lo) {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool seq_util::re::is_loop(expr const* n, expr*& body, expr*& lo, expr*& hi) {
|
||||
if (is_loop(n)) {
|
||||
app const* a = to_app(n);
|
||||
if (a->get_num_args() == 3) {
|
||||
body = a->get_arg(0);
|
||||
lo = a->get_arg(1);
|
||||
hi = a->get_arg(2);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool seq_util::re::is_loop(expr const* n, expr*& body, expr*& lo) {
|
||||
if (is_loop(n)) {
|
||||
app const* a = to_app(n);
|
||||
if (a->get_num_args() == 2) {
|
||||
body = a->get_arg(0);
|
||||
lo = a->get_arg(1);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue