SAW User Manual
Warning
The SAW User Manual is currently being restructured/rewritten in large chunks.
It is likely that you will encounter typos, omissions, and otherwise incorrect or incomplete information about SAW and SAWScript’s features and operation.
Your help identifying these documentation issues is deeply appreciated, as it helps us prioritize and resolve them more quickly. Thanks for helping to make SAW better for everyone!
Contents
- Introduction
- Installing SAW
- Getting Started
- Getting Started with the Python Bindings
- Overview of SAW and SAW’s Structure
- Running SAW
- Quick Introduction to the SAWScript Language
- Proofs about Cryptol Models
- Introduction to Symbolic Execution
- Verifying Code Using Symbolic Execution
- Simple Example for Getting Started
- Languages for Specifications
- Specifications
- The LLVM Backend and LLVM Specifications
- The JVM Backend and JVM Specifications
- The MIR backend and Rust/MIR Specifications
- Compositional Verification
- Using Ghost State
- Extracting Code
- A Heap-Based Example
- An Extended Example
- Verifying Cryptol FFI functions
- Multi-Step Proofs and Loop Invariants with Cuts
- Verifying Hardware Using Yosys
- The SAWScript Language
- The Python Bindings
- Interactive Proofs
- Extraction to Rocq
- Bisimulation Prover
- Command Line Reference
- SAWScript Language Reference
- SAWScript Commands Reference
- SAW REPL Reference
- Python API Reference
- SAWCore Language Reference
- Mapping Cryptol to SAWCore
- Appendices