Soteria is an OCaml library for writing efficient symbolic interpreters directly in OCaml.
The core library provides a set of batteries-included abstractions for writing one's own symbolic interpreter. Currently, two symbolic interpreters have been written: Soteria Rust and Soteria C. Our current main focus is Soteria Rust.
For users wishing to user Soteria Rust for writing and running symbolic tests, we strongly recommend installing Soteria Rust through cargo on macOS with M-series chips and Linux x86_64:
cargo install soteria
cargo soteria setup # Installs pre-built binaries
# setup can be run again at every nightly release of Soteria Rust (every day).For other architectures, please follow the manual installation instructions in the contributing guide.
Soteria can be used as an OCaml library to build your own symbolic execution engines. The API documentation provides a complete reference, and includes a tutorial on how to get started building your own analysis tools.
Pin it with opam:
opam pin add soteria git+https://github.com/soteria-tools/soteria.git#<commit>Soteria Rust is a symbolic execution engine for Rust. It is in heavy development.
Using cargo soteria, the tests inside of the current crate can be run using:
cargo soteriaIf the crate contains Kani harnesses, the Kani compatibility layer can be enabled with:
cargo soteria --kaniThe full help for cargo soteria can be obtained with:
cargo soteria --helpInstalling from source install a soteria-rust binary, which can be used as follows.
Run on a standalone Rust file, symbolically executing the main function, or any function with the #[soteria::test] attribute:
soteria-rust exec <file.rs>Run all tests in a crate:
soteria-rust exec <crate-dir>Run in Kani mode to execute any function with the #[kani::proof] attribute, with compatibility with the Kani api (e.g. kani::any):
soteria-rust exec --kani <file.rs>Use --help with any command for a full list of options:
soteria-rust exec --helpSoteria Rust supports a large subset of Rust, but some features are not yet supported:
Soteria C is an automatic bug finder for C programs. It is in heavy development.
Binaries for Linux x86 and MacOS Arm are available in the latest release on this GitHub repository. For other architectures, please follow the manual installation instructions.
Run on a standalone C file:
soteria-c exec-main <file.c>Run with a compilation database:
soteria-c capture-db compile_commands.jsonUse --help for a full list of options:
soteria-c --helpWe welcome contributions from the community! Soteria is open source and will remain open source.
Soteria is developed and maintained by Soteria Tools Ltd. The core team makes final decisions on project direction, but we value community input and aim to be transparent about our decision-making process.
We welcome contributions assisted by AI, as long as they follow our AI Policy.
Soteria relies on many excellent open source libraries and tools, and we are deeply grateful to their authors and contributors.
We would especially like to thank:
Soteria and derived tools in this repository are under Apache-2.0 license, copyright Soteria Tools Ltd 2026.
The Soteria logo is a trademark of the Soteria Tools Ltd.