Repository navigation
Commit 4e093d1
Share the quantified expression via a let-binding in the Z3 workaround
The Z3 quantifier workaround emits the equivalence between the declared
Boolean and its quantified definition as two implications. Writing the
quantified expression out in both implications doubles its size in the
SMT2 output, which can be significant for large quantified terms. Bind
it once with an SMT-LIB `let` and reference the binding from both
implications instead.
This was verified to still work around Z3's solve_eqs elimination
(Z3Prover/z3#7743) on the affected Z3 versions: get-value returns a
plain Boolean rather than the quantified expression.
The smt2_convt unit test is adjusted to expect the let-bound form.
Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>1 parent 2543aaf commit 4e093d1
2 files changed
Lines changed: 20 additions & 25 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
990 | 990 | | |
991 | 991 | | |
992 | 992 | | |
993 | | - | |
994 | | - | |
995 | | - | |
996 | | - | |
997 | | - | |
998 | | - | |
999 | | - | |
1000 | | - | |
1001 | | - | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
1002 | 999 | | |
1003 | | - | |
| 1000 | + | |
1004 | 1001 | | |
1005 | | - | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
1006 | 1005 | | |
1007 | 1006 | | |
1008 | 1007 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
230 | | - | |
| 230 | + | |
231 | 231 | | |
232 | 232 | | |
233 | 233 | | |
234 | | - | |
| 234 | + | |
| 235 | + | |
235 | 236 | | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
248 | 244 | | |
249 | 245 | | |
250 | 246 | | |
| |||
0 commit comments