-
Notifications
You must be signed in to change notification settings - Fork 20
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
Macaw symbolic seems to produce doubled memory safety assertions #300
Comments
On further investigation, I think the additional assertion is actually coming from here: macaw/symbolic/src/Data/Macaw/Symbolic/MemOps.hs Lines 1008 to 1012 in 2791b10
@travitch, as far as I can tell, this check is just redundant (as are related ones in doWriteMem, etc.) is there some aspect of this that I am missing? |
@robdockins Is it redundant because I'm not that familiar with the reasoning for why these functions are structured the way they are. I suspect you are right. If I had to guess, maybe these were copied and pasted from crucible-llvm before a refactoring that cleaned things up? If |
Indeed, my hypothesis (which I or someone should validate) is that the SAW can indeed use the numbering of goals to select what to do; I don't know offhand how common that is in our finished proofs, but it is something to look out for. |
I'm happy to fix this after getting an idea from the SAW team on expected breakage. I did just chase down |
I think the easiest way is to make a SAW PR and see what breaks. I can do that, if you don't think there's some subtle reason to have the checks in there separately. |
At this point I'm pretty confident that there is no subtle reason - lets give it a shot. Thanks for starting on the PR |
This was fixed in #310. |
When doing verification using macaw symbolic via SAW, I'm getting what appear to be redundant proof obligations on memory reads and writes. The resulting proof obligations always seem to be paired up, like the following:
This appears to be caused by these (And similar lines elsewhere)
macaw/symbolic/src/Data/Macaw/Symbolic/MemOps.hs
Lines 1019 to 1022 in 2791b10
The
assertSafe
will generate one obligation, and thefail
also appears to bubble out and generate a separate proof obligation.Are these actually asserting separate things that are necessary for soundness? If so, can we combine them somehow into a single obligation? If not, what's the best way to remove one of them?
The text was updated successfully, but these errors were encountered: