3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-21 14:35:50 +00:00

Implemented some kind of regex range decomposition

This commit is contained in:
CEisenhofer 2026-07-02 20:23:25 +02:00
parent e8884faa23
commit ed41c2a09f
2 changed files with 25 additions and 2 deletions

View file

@ -4338,6 +4338,13 @@ namespace seq {
}
}
}
// Self-concatenation (e.g. x++x): the tail collapses back onto the
// exact same token as the head, so Δ and ∇ constrain the same
// variable simultaneously and must be checked jointly -- otherwise
// a Δ/∇ pair that is only individually non-empty (e.g. <eps, "a">)
// is wrongly treated as feasible.
if (st->m_tail == first)
regexes_p.push_back(sn_q);
if (m_seq_regex->check_intersection_emptiness(regexes_p, 100) == l_true) {
eliminated_dep = m_dep_mgr.mk_join(eliminated_dep, first_filter_dep);
continue; // infeasible split → skip without branching