Closed levinwinter closed 6 days ago
Contrary to the file name, it is not a bug. Z3 uses a set of decomposition rules for solving equalities. It so happens that the rule for when you have variables a, b, c is more powerful than rules where there are only two variables in the equation. This is an implementation limitation.
@CEisenhofer
Sorry for the imprecise wording, you are absolutely right! Am I correctly assuming that whatever makes the rules for three variables powerful could also be implemented in the two variables rule?
This report is output of a performance fuzzing project which aimed to uncover formulas that Z3 “should" be able to solve but cannot. Does the Z3 project value such contributions that could help to make the solver more complete or is this not a priority? If so, we could post a few more cases here on GitHub involving other theories.
z3 is able to solve
seed.smt2
nearly instantly but cannot solve the even simplerbug.smt2
.The formula is
unsat
, therefore we can replace a free variable with a concrete value, wich preserve unsatisfiability and reduce the search space. Ultimately, the new formula should be at most as difficult to solve as the original one, expecting equivalent or shorter wallclock time. However, z3 is not able to solve the subsituted formula anymore.z3 version/commit: b2b3bab (master)
Operating system: Debian GNU/Linux 12 (bookworm)