-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Booster: Optimise handling of known predicates when rewriting #4029
Comments
I think that we always want the ground truth Then, when we're checking a branching on
get the results back and When an
|
Some notes from a first code inspection:
|
As it turned out from lido experiments, it is a much bigger benefit to reduce the amount of prelude and ground truth assertions than to keep them around as state in Z3. Closing |
When processing an
"execute"
request, we are rewriting from onePattern
to one or morePattern
s. In Booster, we assume definedness of the initialPattern
, i.e. it must have no "bad" applications of partial functions and the constrains should not be inconsistent.Since the introduction of the SMT solver into Booster, we have been very conservative in how we interact with it, potentially leaving a lot of performance on the table. We should optimise the communication of the constraints of the initial
Pattern
, aka the known predicates, aka "the path condition" to the solver:vacuous
state (this is done in 4012 evaluate pattern pruning #4020)Pattern
withing the same "execute
" request, we have two options:pop
the scope, add the ensured condition to the known predicates,push
them chcheck-sat
;push
the scope before checking theensures
conditions and avoid re-checking the previous know truth.We will need to re-think how we do solver retries. Currently, we do a hard reset every time we retry, which restarts the solver. We should instead to a soft reset:
pop
the last scope, which includes the predicate we are checkingThe comments to this issue will outline the specific changes that need to be done to the SMT-related types and function in Booster to implement this approach.
The text was updated successfully, but these errors were encountered: