You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add documentation to run Kani on single harnesses (model-checking#85)
This PR adds to the documentation in the Verification Tools->Kani
section of the [challenge
book](https://model-checking.github.io/verify-rust-std/tools/kani.html).
### Changes
- New step to help Kani user run specific proofs and identify
harness full names.
### Issue
I tried to follow step 1 & 2 but Kani could not find the harnesses in
the example code. At this point there are many proofs in the library so
I couldn't find the full name of the harness in the example code by just
running all proofs. I tried to move `example.rs` into
`library/core/src/ptr/` and use `--harness ptr::verify::example` or
`--harness dummy_proof` but both got `error: no harnesses matched the
harness filter`.
---------
Co-authored-by: Jaisurya Nanduri <[email protected]>
Co-authored-by: Felipe R. Monteiro <[email protected]>
Copy file name to clipboardExpand all lines: doc/src/tools/kani.md
+11-1
Original file line number
Diff line number
Diff line change
@@ -58,6 +58,7 @@ Here is a short tutorial of how to use Kani to verify proofs for the standard li
58
58
Create a local copy of the [model-checking fork](https://github.com/model-checking/verify-rust-std) of the Rust Standard Library. The fork comes with Kani configured, so all you'll need to do is to call Kani's building-block APIs (such as
59
59
`assert`, `assume`, `proof` and [function-contracts](https://github.com/model-checking/kani/blob/main/rfc/src/rfcs/0009-function-contracts.md) such as `modifies`, `requires` and `ensures`) directly.
60
60
61
+
61
62
For example, insert this module into an existing file in the core library, like `library/core/src/hint.rs` or `library/core/src/error.rs` in your copy of the library. This is just for the purpose of getting started, so you can insert in any existing file in the core library if you have other preferences.
62
63
63
64
```rust
@@ -97,7 +98,7 @@ The command `kani verify-std` is a sub-command of the `kani`. This specific sub-
97
98
-`"path/to/library"`: This argument specifies the path to the modified Rust Standard Library that was prepared earlier in the script. For example, `./library` or `/home/ubuntu/verify-rust-std/library`
98
99
-`--target-dir "path/to/target"`: This optional argument sets the target directory where Kani will store its output and intermediate files. For example, `/tmp` or `/tmp/verify-std`
99
100
100
-
Apart from these, you can use your regular `kani-args` such as `-Z function-contracts`and `-Z stubbing` depending on your verification needs.
101
+
Apart from these, you can use your regular `kani-args` such as `-Z function-contracts`, `-Z stubbing`and `-Z mem-predicates` depending on your verification needs. If you run into a Kani error that says `Use of unstable feature`, add the corresponding feature with `-Z` to the command line.
101
102
For more details on Kani's features, refer to [the features section in the Kani Book](https://model-checking.github.io/kani/reference/attributes.html)
0 commit comments