-
Notifications
You must be signed in to change notification settings - Fork 237
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
A fix in Core, revealed by FStarLang/pulse#100 #3326
Conversation
This was not checking that `p` is constantly true, which is unsound. See FStarLang/pulse#100.
The Core fix change the shape of some guards, and the goal is slightly different. Do some normalization to get it to how it was before and also a test without a tactic.
Fixed by F* patch (FStarLang/FStar#3326)
After fixing FStarLang#100 (see also FStarLang/FStar#3326) this now fails to match a goal of shape A.pts_to ha.tmp (reveal #(Seq.seq U8.t) ?u) since in the context we have A.pts_to ha.tmp (reveal #(Seq.lseq U8.t 32) _) To fix this, just avoid the use of `lseq` and use pure predicates instead. Requires a tiny change to the blake2b assumed API.
Hi @TWal, could you maybe try this PR in your projects to see if there's an impact? Asking since the only regression this caused (besides a tiny one in Pulse) was in the #2756 repro, which you filed. It looks like it could just be a bit of extra noise and only affecting the repro, but would be good if you can confirm. |
My projects still work with this PR! |
Hi, I can confirm my project also still works with this PR! |
Thank you both! |
When checking equality via Core between
x:t{p}
andt
, we were completely ignoring the refinement. We need to add a guard to check that it is constantly true. Also add a local regression test.Fixes FStarLang/pulse#100