3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-19 15:16:29 +00:00

Derived by the wrong "leading character"

This commit is contained in:
CEisenhofer 2026-06-09 16:56:05 +02:00
parent 7a909aedb7
commit 89a2ac133f

View file

@ -463,8 +463,11 @@ namespace smt {
euf::snode* re_node = mem.m_regex;
euf::snode* str_node = mem.m_str;
do {
// eliminate leading character by derivatives
re_node = m_sgraph.brzozowski_deriv(re_node, mem.m_str->first());
// eliminate leading character by derivatives; derive by the
// CURRENT leading char (str_node->first()), not the original
// mem.m_str->first() — otherwise a multi-char prefix is derived
// by its first char repeatedly (unsound).
re_node = m_sgraph.brzozowski_deriv(re_node, str_node->first());
str_node = m_sgraph.drop_first(str_node);
} while (!str_node->is_empty() && str_node->first()->is_char());