-
Notifications
You must be signed in to change notification settings - Fork 62
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
SyGuS, find SMT array write of a fixed size #2037
Conversation
Co-authored-by: Ryan Scott <rscott@galois.com>
This bumps: * The `crucible` submodule to bring in the changes from GaloisInc/crucible#1178 * The `what4` submodule to bring in the changes from GaloisInc/what4#256
SAW creates a variety of different ExprBuilders in the course of a typical SAW script, but we were only applying the pushMuxOps option to some of them. This patch makes the treatment a bit more comprehensive. Unfortunately, doing so requires a rather uncomfortable amount of extra plumbing in `SAWScript.Proof`, but I'm not sure how to do better without refactoring all of `SAWScript.Proof` to use `TopLevel` instead of `IO` (and it's unclear if that is desirable).
This updates the `SAW_URL` environment variables to point to a more recent version of SAW that includes the changes from GaloisInc/saw-script#2037, which are necessary to support the AES-GCM proofs.
This updates the `SAW_URL` environment variables to point to a more recent version of SAW that includes the changes from GaloisInc/saw-script#2037, which are necessary to support the AES-GCM proofs.
This updates the `SAW_URL` environment variables to point to a more recent version of SAW that includes the changes from GaloisInc/saw-script#2037, which are necessary to support the AES-GCM proofs.
This updates the `SAW_URL` environment variables to point to a more recent version of SAW that includes the changes from GaloisInc/saw-script#2037, which are necessary to support the AES-GCM proofs.
This updates the `SAW_URL` environment variables to point to a more recent version of SAW that includes the changes from GaloisInc/saw-script#2037, which are necessary to support the AES-GCM proofs.
This proves unbounded AES-GCM functions, building on top of the cryptol-specs work in GaloisInc/cryptol-specs#72 and the saw-script work in GaloisInc/saw-script#2037. This requires a newer version of SAW to work than what aws-lc-verification's CI currently uses, so I isolated these proofs into their own SAW scripts, Cryptol specs, shell scripts, Docker image, and CI action. Moreover, some of the AES-GCM proofs use Z3's Constrained Horn Clause (CHC) feature, which is buggy on Z3-4.8.8. aws-lc-verification's other CI jobs are currently using Z3-4.8.8, so I specifically chose a newer version (Z3-4.8.14) for the new, AES-GCM–specific CI job. Co-authored-by: Robert Dockins <rdockins@galois.com> Co-authored-by: Samuel Breese <samuel@chame.co> Co-authored-by: Andrei Stefanescu <andrei@stefanescu.io>
This proves unbounded AES-GCM functions, building on top of the cryptol-specs work in GaloisInc/cryptol-specs#72 and the saw-script work in GaloisInc/saw-script#2037. This requires a newer version of SAW to work than what aws-lc-verification's CI currently uses, so I isolated these proofs into their own SAW scripts, Cryptol specs, shell scripts, Docker image, and CI action. Moreover, some of the AES-GCM proofs use Z3's Constrained Horn Clause (CHC) feature, which is buggy on Z3-4.8.8. aws-lc-verification's other CI jobs are currently using Z3-4.8.8, so I specifically chose a newer version (Z3-4.8.14) for the new, AES-GCM–specific CI job. Co-authored-by: Robert Dockins <rdockins@galois.com> Co-authored-by: Samuel Breese <samuel@chame.co> Co-authored-by: Andrei Stefanescu <andrei@stefanescu.io>
IO (C.ExecutionFeature p sym ext rtp, IORef (Crucible.LLVM.FixpointCHC.ExecutionFeatureContext sym 64 ext)) | ||
|
||
setupSimpleLoopFixpointCHCFeature sym sc sawst cfg mvar func = do | ||
let ?ptrWidth = knownNat @64 |
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.
I'm not very comfortable with hard-coding this here (which could deviate from similar settings in src/SAWScript/X86Spec.hs), but there's nothing here that looks immediately available for inheriting/determining this value.
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.
Indeed. While uncomfortable, this is an assumption which is currently baked into several parts of the code, not just SAW. See GaloisInc/crucible#1028 for where this restriction ultimately arises in crucible-llvm
. It would be nice to generalize this code to work over any pointer width, but it would likely require addressing GaloisInc/crucible#1028 first.
This is an amalgamation of:
This bumps:
crucible
submodule to bring in the changes from SyGuS, match concrete size array crucible#1178what4
submodule to bring in the changes from Guard mux-pushing simplifications behind option what4#256