3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-29 03:48:51 +00:00

Port reverse normalization into derive class

Instead of treating reverse(r) as stuck (returning symbolic mk_derivative),
normalize it by pushing reverse inward through the regex structure, then
compute the derivative of the normalized result. Mirrors mk_re_reverse logic.

Handles: concat, union, intersection, diff, ite, opt, complement, star,
plus, loop, to_re (string literals, units, concats), and symmetric cases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Nikolaj Bjorner 2026-06-03 15:29:30 -07:00
parent 2b06d6ddb2
commit 3a22994b80
2 changed files with 102 additions and 2 deletions

View file

@ -103,6 +103,9 @@ namespace seq {
// Distribute concatenation through ITE/union in derivative
expr_ref mk_deriv_concat(expr* d, expr* tail);
// Normalize reverse(r) by pushing reverse inward
expr_ref normalize_reverse(expr* r);
// Simplify ITE conditions w.r.t. m_ele
expr_ref simplify_ite(expr* d);
expr_ref simplify_ite_rec(expr* cond, bool sign, expr* d);