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
HOTFIXES not stuck on uneval.d functions, replacement from path condition (#4117)
## Indeterminate result for function calls under injections
When the rewrite subject contains a function call under an injection,
the function's return sort may be more general than the sort expected by
a rewrite rule that is being tried. This shows up as a failing match
between two injections in rule LHS and subject. Previous code was
declaring this a match failure for the rule but didn't abort the
rewrite. The correct behaviour is to abort the rewrite (or to unify,
which booster doesn't).
Fixes a problem where booster would return `Stuck` which then falls back
to legacy `kore-rpc` where progress can be made.
It is still possible for booster to return `Stuck` when trying to match
a function call (because of rule indexing which limits the amount of
rules that could possibly apply. An expression with an unevaluated
function call will never be rewritten by booster, but a modification of
the indexing mechanism and rule selection is left for future work.
## Added replacement from path conditions into term evaluation
When the path condition contains equations of the form `domain-value
==Int expression`, this information should be used to replace any
syntactic occurrences of `expression` by the obviously simpler
`domain-value` (`expression` should obviously not be another, different,
domain value so it must be a function call or a more complex
expression).
This holds likewise for `==Bool` and for other domain equality
operations, `==Int` and `==Bool` replacements are implemented. The
replacement happens after LLVM evaluation but before any other hook or
(function or simplification) equation application.
0 commit comments