- 1. Getting started
- 1.1. Installation
- 1.1.1. Building from source
- 1.1.2. GitHub CI Action
- 1.2. Using Kani
- 1.3. Verification results
- 2. Crates Documentation
- 3. Tutorial
- 3.1. First steps
- 3.2. Failures that Kani can spot
- 3.3. Loop unwinding
- 3.4. Nondeterministic variables
- 4. Reference
- 4.1. Arbitrary Trait
- 4.2. Attributes
- 4.3. Bounded Non-deterministic variables
- 4.4. List Kani Metadata
- 4.5. Experimental features
- 4.5.1. Automatic Harness Generation
- 4.5.2. Coverage
- 4.5.3. Stubbing
- 4.5.4. Contracts
- 4.5.5. Loop Contracts
- 4.5.6. Concrete Playback
- 4.5.7. Quantifiers
- 5. Application
- 5.1. Comparison with other tools
- 5.2. Where to start on real code
- 5.3. Debugging slow proofs
- 6. Developer documentation
- 6.1. Coding conventions
- 6.2. Working with CBMC
- 6.3. Working with rustc
- 6.4. Migrating to StableMIR
- 6.5. Command cheat sheets
- 6.6. Testing
- 6.6.1. Regression testing
- 6.7. Performance comparisons
- 6.7.1. benchcomp command line
- 6.7.2. benchcomp configuration file
- 6.7.3. Custom parsers
- 6.8. Profiling Kani
- 7. Limitations
- 7.1. Undefined behaviour
- 7.2. Rust feature support
- 7.2.1. Intrinsics
- 7.2.2. Unstable features
- 7.3. Overrides
- 8. FAQ