-
Notifications
You must be signed in to change notification settings - Fork 63
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
Add basic prove_refinement tactic #1849
Conversation
Hunh, and now it looks like the CI refuses to run for some reason on this latest commit (that checkmark is bogus and appeared instantly). We should definitely make it sure it runs before merging, I had a GHC 9 issue on my previous commit that I should have fixed, but didn't actually check on my machine. |
Huh, it is quite strange that the CI just straight-up didn't happen. Can you try pushing an empty commit to see if that kickstarts it? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, other than the few places I've asked for more comments in the SAW core. I'm marking as approved because those are minor, but please address those before merging.
Okay, @eddywestbrook, I think I addressed your comments! Thank you for suggesting to add more docs, those definitions are definitely not intuitive at first glance. Also thankfully the CI now appears to start when I commit now, not sure what that one failure was about ¯_(ツ)_/¯ |
Wuh oh, looks like the Coq translator doesn't want to translate the |
No idea why My only guess is that somehow it's running the test with an old version of |
This PR adds a
prove_refinement
tactic which can be used to prove goals of the form:within a call to
prove_extcore
(theProp
version ofprove_print
). All of the existing MRSolver unit tests work with this new tactic, andprove_refinement
versions of all tests inmr_solver_unit_tests.saw
have been added to that file to reflect this.Note this tactic hooks into the existing MRSolver machinery with no changes, so if MRSolver fails it will currently exit the SAW script instead of proving more useful feedback and/or leaving unsolved goals over for the user. There is also currently no way to use theorems proved using this tactic in subsequent proofs using this tactic. Both of these things will change in coming PRs as we adapt MRSolver to this new paradigm.