3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-08-05 13:44:10 +00:00
z3/src/qe
Hari Govind V K 922f49e187
Fix MBP QEL soundness bug in datatype accessor elimination (#9571) (#9692)
Two fixes for mbp_dt_tg::apply() when encountering an accessor whose
argument has a different constructor in the model:

1. Don't call rm_accessor (which would assert a contradictory
recognizer, making the formula false). This prevents the original bug
where QEL returned 'false' for satisfiable formulas.

2. Branch on the model-assigned constructor for the accessor's argument.

The correct output should include the literal introduced in (2).
However, this fix does not produce it. Spacer is sound with this
over-approximation, as long as the counter example does not depend on
value of mismatched accessors (e.g. (tl nil)).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-03 07:23:21 -07:00
..
lite
mbp
CMakeLists.txt
nlarith_util.cpp
nlarith_util.h
nlqsat.cpp
nlqsat.h
qe.cpp
qe.h
qe_arith_plugin.cpp
qe_array_plugin.cpp
qe_bool_plugin.cpp
qe_bv_plugin.cpp
qe_cmd.cpp
qe_cmd.h
qe_datatype_plugin.cpp
qe_dl_plugin.cpp
qe_mbi.cpp
qe_mbi.h
qe_mbp.cpp
qe_mbp.h
qe_tactic.cpp
qe_tactic.h
qsat.cpp
qsat.h