3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-07 05:44:51 +00:00
z3/spec
Nikolaj Bjorner 4b58d57b61 Add Phase 4: length reasoning and canonize fix
- Length axiom generation: concat decomposition, unit=1, empty=0, string=k
- Bidirectional len(x)=0 <-> x="" axioms
- check_zero_length: propagate zero-length variables to empty
- propagate_length_eqs: equate lengths of equation sides
- Fixed canonize: decompose structurally first, then follow e-graph roots
  Prevents both equation sides resolving to same root expression
- Fixed branch_var_prefix: skip cyclic candidates (containing variable itself)
  and ground candidates with wrong length
- check_length_conflict prevents e-graph corruption from incompatible merges
- Fresh value pinning for model generation (m_fresh_values)
- Regression: 36/62 correct, 0 wrong, 26 unknown on string-concat.smt2

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 22:48:58 -08:00
..
ClemensTableau.pdf initial spec 2026-02-27 16:25:58 -08:00
LazyMemberships.pdf initial spec 2026-02-27 16:25:58 -08:00
log.txt Add Phase 4: length reasoning and canonize fix 2026-02-27 22:48:58 -08:00
plan.md initial spec 2026-02-27 16:25:58 -08:00
reference.md initial spec 2026-02-27 16:25:58 -08:00