-
Notifications
You must be signed in to change notification settings - Fork 41
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 10 more challenges #260
base: main
Are you sure you want to change the base?
Add 10 more challenges #260
Conversation
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 curious why some of these challenges are focused on correctness.
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.
- You'll need to add links to these challenge files in SUMMARY.md as well.
- I don't think we should merge any challenges about correctness--this effort is about safety, and we should stay focused on that goal.
|
||
The verification must be unbounded---it must hold for slices of arbitrary length. | ||
|
||
It is OK to assume that the generic type `T` of the proofs is primitive types, e.g., `i32`, `u32`, `bool`, etc. |
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.
We should be explicit about which concrete types we want proofs for.
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. I will edit.
@@ -0,0 +1,79 @@ | |||
# Challenge 20: Verify the memory safety of `slice` functions |
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.
This file name has a typo (silce instead of slice).
- **Tracking Issue:** [#29](https://github.com/model-checking/verify-rust-std/issues/29) | ||
- **Start date:** *2025/03/07* | ||
- **End date:** *2025/10/17* | ||
- **Reward:** *?* |
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.
Note for the future: we'll need to ping @rahulku for reward numbers before merging this, but let's get the content reviews done before doing that.
|
||
| Function | | ||
|---------| | ||
|next_back_unchecked| |
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.
@celinval already started work on this in #148 . So we either need to update this challenge to acknowledge that fact and be explicit about what remains to be done, or, if we don't think enough remains to justify a challenge, remove it altogether. You should audit the work that Celina did and see what remains to be done, and we can make a decision from there.
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. I have taken a look at it. The different is that this challenge requires unbounded proofs.
|
||
The verification must be unbounded---it must hold for slices of arbitrary length. | ||
|
||
It is OK to assume that the generic type `T` of the proofs is primitive types, e.g., `i32`, `u32`, `bool`, etc. |
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.
Same comment about being explicit about which of these primitive types we care about.
In this PR, I add 10 new challenge:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.