- Introduction
- 1. Brief introduction to VeriFast for Rust
- 2. Symbolic execution states
- 3. Annotations
- 3.1. Keywords
- 3.2. Types
- 3.3. Expressions
- 3.4. Assertions
- 3.5. Function specifications
- 3.6. Function body annotations
- 3.7. Ghost declarations
- 4. Verifying compliance with Rust's pointer aliasing rules
- 5. Verifying non-`unsafe` functions
- 5.1. The lifetime logic