-
Notifications
You must be signed in to change notification settings - Fork 12
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 first draft of "Proof Guide" document for review. #246
Conversation
I think this should also be reviewed by someone who does not know CBMC. @mkannwischer What about you? I imagine you don't have time until November? |
97f0cd8
to
2ea6f60
Compare
2ea6f60
to
7fc1030
Compare
ff8a577
to
6530579
Compare
6530579
to
2accf06
Compare
2accf06
to
43c426d
Compare
3f558ad
to
d8b8e30
Compare
2604f23
to
f7da28a
Compare
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.
Thanks @rod-chapman - this is excellent.
Let's merge this after some very minor edits.
Sorry for the the long delay - I wanted to take the time and write my first proof at the same time. I just added a proof for poly_tomont in #307 .
f7da28a
to
eefc04a
Compare
430f2b8
to
4462500
Compare
High-level comment: should there be any links towards more-general CBMC training (like https://model-checking.github.io/cbmc-training/)? |
Most of that existing training material talks about using CBMC in "bounded model checking" mode, rather than "deductive sound contract-based proof" mode. I think pushing readers towards the former will cause confusion... |
b76acf0
to
5896b3c
Compare
6638384
to
150efc7
Compare
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.
@rod-chapman Can you wrap this up, by rebasing and cleaning up the history and addressing whatever comments, if any, are still outstanding? The PR has been open for too long, let's get it in.
ee6444a
to
7ad2e5f
Compare
Rebased and squashed. Ready to approve and merge. |
b216f5d
to
c18d4b3
Compare
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.
@rod-chapman Can you change all occurrences of mlkem-c-aarch64
to mlkem-native
?
82dcea8
to
6f5e75c
Compare
6f5e75c
to
92da76d
Compare
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.
Thanks @rod-chapman for writing this up and for taking our comments into account!
LGTM now!
If we later want to extend it, we can always have another PR.
This PR add a guide to proof using CBMC for the mlkem-native project in cbmc/proofs/proof_guide.md The document contains: * Onboarding and installation guide for CBMC * Common proof "patterns" * Advice on writing loop invariants and contracts * A step-by-step guide to producing a new proof of a C function * A worked example of the above process. Signed-off-by: Rod Chapman <[email protected]>
92da76d
to
15c9d20
Compare
This PR adds a "Cookbook" for how to develop and run CBMC proofs for the C code in this repo.
The guide uses the proof of poly_tobytes() as an example, so PR #235 should be reviewed and merged first.