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
Retry SMT queries in Booster when deciding predicates (#3889)
Fixes#3884
- refactor the SMT modules to allow re-initializing the solver
dynamically:
- `SMTContext` now carries the prelude and `SMTOptions`
- the `closeContext` function only closes the solver handle, and does
not close the solver transcript handle. The new `destroyContext`
function does both.
- The `SMT` monad is is changed to have `StateT SMTContext`. The
`Booster.SMT.Interface.restartSolver` function restarts the solver with
modified options, altering the context. Note that it does not touch the
transcript handle, i.e. it will persist the sovler restarts.
- the `getModelFor` and `checkPredicates` functions now have logic to
retry with doubled timeout when the solver returns unknown.
I'm checking-in the integration test that I was using when developing. I
ran the server with `--smt-timeout 1` to observe the retry mechanism
kicking-in, but I do not think it is a good idea to try to force it to
retry the queries in CI. The test may still be useful when working on
the SMT code in future.
---------
Co-authored-by: github-actions <[email protected]>
Co-authored-by: rv-jenkins <[email protected]>
0 commit comments