-
Notifications
You must be signed in to change notification settings - Fork 84
Flow-insensitive YAML witness invariants #830
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
Conversation
|
Actually, does this account for modifications to the values of globals before multi-threaded mode is entered if |
|
No, and that's what the third task above would be about. That could be fixed by doing the earlyglobs side effects even when it's disabled, but still reading values from the local state in singlethreaded mode, such that the flow-insensitive invariant would be correct. I don't want to introduce that extra complication right now though, because these flow-insensitive invariants aren't too useful for self-validation (we don't want to evaluate/unassume such expressions at every point, that would be hugely expensive). I'll restrict the generation of these to only when earlyglobs is enabled for now, because this PR also contains other fixes/refactorings to base's invariant generation that are still required for #833, etc. |
Co-authored-by: Michael Schwarz <michael.schwarz93@gmail.com>
7619258 to
77ab055
Compare
This adds the generation of non-standard
flow_insensitive_invariantentries to YAML witnesses. Base privatizations are extended to emit such invariants based on their internal unprotected/weak values.TODO
Too inefficient, would have to evaluate such invariant at every node in every context.flow_insensitive_invariantchecking validation?earlyglobs? Works automatically, becauseearlyglobsdelegates to base privatization.earlyglobs?