mirror of
https://github.com/Z3Prover/z3
synced 2026-03-22 20:39:11 +00:00
Port ZIPT Parikh features: minterm_to_char_set, char range constraints, fix stride soundness
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
45a574d7fa
commit
194dfe6c61
3 changed files with 122 additions and 37 deletions
|
|
@ -2301,8 +2301,15 @@ namespace seq {
|
|||
nielsen_subst s(first, replacement, mem.m_dep);
|
||||
e->add_subst(s);
|
||||
child->apply_subst(m_sg, s);
|
||||
// TODO: derive char_set from minterm and add as range constraint
|
||||
// child->add_char_range(fresh_char, minterm_to_char_set(mt));
|
||||
// Constrain fresh_char to the character class of this minterm.
|
||||
// This is the key Parikh pruning step: when x → ?c · x' is
|
||||
// generated from minterm m_i, ?c must belong to the character
|
||||
// class described by m_i so that str ∈ derivative(R, m_i).
|
||||
if (mt->get_expr()) {
|
||||
char_set cs = m_parith->minterm_to_char_set(mt->get_expr());
|
||||
if (!cs.is_empty())
|
||||
child->add_char_range(fresh_char, cs);
|
||||
}
|
||||
created = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue