You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 05b6978
Browse filesBrowse the repository at this point in the historyBrowse files
Define a Boolean variable per quantifier when using Z3
The previous commit makes Z3 return Boolean values for variables that
are defined via a quantified expression. Quantifiers may also be part
of other definitions, such as an assignment to a non-Boolean symbol (in
`int x = __CPROVER_forall { ... };`, x is defined via an if-then-else
over the quantifier), or of Boolean definitions that use define-fun.
Z3's solve_eqs preprocessor eliminates these symbols, too, and then
returns quantified expressions from get-value.
With Z3, now replace each quantifier that is not nested within another
quantifier by a fresh Boolean variable, defined using the encoding of
the previous commit, so that no other definition contains a quantifier.
Quantifiers-assignment, Quantifiers-if, and Quantifiers-not now pass
with Z3 and are no longer tagged broken-z3-smt-backend. Their runtime
with Z3 4.8.12 is 11.5s, 0.14s, and 0.14s, respectively (previously,
these stopped with an error after 5.3s, 0.09s, and 0.09s).
Quantifiers-not-exists/fixed.desc remains broken with Z3: it now
reports an error after 83s, previously after 0.09s.
Fixes: #8679
Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
0 commit comments