-
Notifications
You must be signed in to change notification settings - Fork 82
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
Generating precise modifies clauses #245
Comments
@michael-emmi : Thoughts? Thx! |
Between the two, I think the second is preferable. Don’t forget that besides a linear-time intra-procedural code scan to determine the variables modified directly by each function, you’d still need another (possibly more asymptotically expensive?) inter-procedural pass to propagate transitively-modified variables. So the possible savings with Option 1 may be insignificant in the grand scheme of things. I am missing a basic premise though: are there back-end verifiers besides Boogie that require modifies-clause annotation? and what’s so bad about relying on Boogie to do the annotation? |
UltimateAtomizer requires for modifies clauses to be there. In addition, currently we are not really generating legal Boogie programs (based on the language spec). I think it would be good to fix that, meaning that I think that SMACK should always generate legal Boogie programs. |
Just wanted to bump this, currently running into this issue. Has this been implemented? If not, could you point me in the direction of where in the code I could look to start implementing it as in option 2? |
I implemented this over a year ago; it's currently an open pull request: |
Awesome, thank you! |
It would be good for SMACK to actually generate precise modifies clauses, instead of relying on a back-end verifier to support inference of modified globals.
The way I see it, there are two ways one could go about implementing this feature:
The advantage of the first one is that we do not have to scan the code twice, but on the other hand it would introduce these cross-cutting additions all over the place. The advantage of the second one is that the code would be nice and contained, but on the other hand it would scan the code again.
Let's discuss this a little bit and decide how to go about implementing it.
The text was updated successfully, but these errors were encountered: