-
Notifications
You must be signed in to change notification settings - Fork 152
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
Refactoring the branching mechanism #4248
Conversation
As a first example, I have that the KCFG of the CSE execution of
which is not great, and in which simultaneous applications of multiple specifications of the underlying functions cause non-deterministic branching, to this
where there are no non-deterministic branches and all branching conditions are present. |
In a recent proof, also, the two branchings below were characterised as non-deterministic, but their constraints are now fully captured:
|
It looks great! It would be good to also run it on the entire KEVM and Kontrol test-suite, and update expected outputs there, and post draft PRs to those pull requests. This will change output there, so we need to make sure we know that it will work before merging this, so that we don't end up blocking other merges to KEVM and Kontrol. |
@ehildenb @tothtamas28 This PR, together with the accompanying KEVM and Kontrol draft PRs, is passing CI. There were no changes required to KEVM, and an update of a few expected outputs in Kontrol. The update shows that the resulting KCFGs are more readable and that there are no more |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving, but consider Tamas suggestion.
Transfer of: runtimeverification/pyk#1072
This PR that uses branching information from the backend (for which support was enabled by runtimeverification/pyk#942) to simplify the branching mechanism, potentially making the
extract_branches
obsolete and only creatingNDBranches
in the presence of true non-determinism.I've done a preliminary testing in Kontrol, more info in comments below.