Skip to content

Commit 9439a54

Browse files
authored
Clarify the analysis technique used by Kani (rust-lang#2195)
1 parent 0860610 commit 9439a54

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

docs/src/getting-started.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# Getting started
22

3-
Kani is an open-source verification tool that uses automated reasoning to analyze Rust programs.
3+
Kani is an open-source verification tool that uses [model checking](./tool-comparison.md) to analyze Rust programs.
44
Kani is particularly useful for verifying unsafe code in Rust, where many of the Rust’s usual guarantees are no longer checked by the compiler.
55
Some example properties you can prove with Kani include memory safety properties (e.g., null pointer dereferences, use-after-free, etc.), the absence of certain runtime errors (i.e., index out of bounds, panics), and the absence of some types of unexpected behavior (e.g., arithmetic overflows).
66
Kani can also prove custom properties provided in the form of user-specified assertions.
7+
As Kani uses model checking, Kani will either prove the property, disprove the
8+
property (with a counterexample), or may run out of resources.
79

810
Kani uses proof harnesses to analyze programs.
911
Proof harnesses are similar to test harnesses, especially property-based test harnesses.
@@ -15,7 +17,7 @@ Releases are published [here](https://github.com/model-checking/kani/releases).
1517
Major changes to Kani are documented in the [RFC Book](https://model-checking.github.io/kani/rfc).
1618

1719
There is support for a fair amount of Rust language features, but not all (e.g., concurrency).
18-
Please see [Limitations - Rust feature support](./rust-feature-support.md) for a detailed list of supported features.
20+
Please see [Limitations](./limitations.md) for a detailed list of supported features.
1921

2022
Kani releases every two weeks.
2123
As part of every release, Kani will synchronize with a recent nightly release of Rust, and so is generally up-to-date with the latest Rust language features.

docs/src/limitations.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# Limitations
22

33
Like other tools, Kani comes with some limitations. In some cases, these
4-
limitations are inherent because of the techniques it's based on. In other
4+
limitations are inherent because of the techniques it's based on, or the
5+
undecidability of the properties that Kani seeks to prove. In other
56
cases, it's just a matter of time and effort to remove these limitations (e.g.,
67
specific unsupported Rust language features).
78

0 commit comments

Comments
 (0)