After reading the strategies guide of Z3, and this answer by Leo, I expected that (check-sat)
and (check-sat-using smt)
are equivalent. However, when running Z3 4.3.2 three times against our test suite (230 SMTLIB2 files), it took 198s/192s/195s seconds with (check-sat)
, but 275s/283s/270s with (check-sat-using smt)
. I also tried the nightly build Z3 4.4.0 d3fb5f2a4cda, and the difference was similar.
Why might that be?
A bit more information that might be relevant:
- Windows 7 x64, Z3 x64
- All our tests are configured with
auto_config false
andsmt.mbqi false
- All use quantifiers and uninterpreted functions
- Some use (non-linear) int and/or real arithmetic
- All make heavy use of push-pop blocks
Edit: What I ultimately would like to do is to set a timeout for some check-sat
calls, but not for all. AFAIK, this is not possible with check-sat
itself, but check-sat-using (using-params smt :soft_timeout $timeout)
should work. Is that right?
(check-sat-using default)
. See this question. – Douglas B. Staple