Improved ptr permission implications #1373
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit changes implication for ptr perms to prioritize using LHS permissions that precisely match the offset of the ptr perm being proven. That is, if we are proving something like
ptr((W,0) |-> p1) * array(8, <z8, *8, [(W,0) |-> int64<>], []) -o ptr((W,0) |-> p2)
the old approach would consider using the
array
permission at index -1 as one way to perform the proof. The new way sees that there is indeed aptr
perm on the LHS with the correct offset, so ignores any other possibilities.This PR also adds the clearbufs example which requires this change for its type-checking.