This guide explains how Caesar and related tools work internally and how to contribute to the code.
The whole project currently lives in a GitHub repository:
We use GitHub's issue tracker.
We try to use rustdoc as much as possible to document how
cargo doc --open to build and open the Rust API documentation of the project.
To run all tests, execute
cargo test --all.
The source code for the
caesar crate lives in
z3rro is our dedicated crate for basic SMT functionality.
It lives in
The idea is that this code is independent of Caesar itself and may be useful to other projects.
pgcl2heyvl is our pGCL frontend.
It lives in
The tool is written in Python and we use poetry for its dependency management.
The most important dependency is
probably which defines the accepted pGCL syntax.
The tool has a terrible user interface (need to specify invariants as command-line arguments!) and
pgcl2heyvl is being phased out (see its documentation) in favor of integration of the encodings directly in Caesar.
You can install it using
Then either run
yarn start or
npm run start to start a local development server and open the site in a browser window.