Crates.io | ravencheck |
lib.rs | ravencheck |
version | 0.1.2 |
created_at | 2025-08-18 22:24:12.236114+00 |
updated_at | 2025-08-21 22:17:35.844787+00 |
description | Decidable verification of Rust code using relational abstraction. |
homepage | |
repository | https://github.com/cuplv/ravencheck |
max_upload_size | |
id | 1801136 |
size | 32,020 |
ravencheck
ravencheck
is a tool for symbolic verification of Rust code, using guaranteed-decidable SMT queries for predictable results.
First, make sure you have the CVC5 SMT
solver available. You should be able to run cvc5 --version
in your
dev environment.
Then, you can add ravencheck
as a dependency in your Cargo.toml
file, in three different ways:
Add the following to your Cargo.toml:
[dependencies]
ravencheck = "0.1.2"
This gives you the latest published version (v0.1.2).
Add the following to your Cargo.toml:
[dependencies]
ravencheck = { git = "https://github.com/cuplv/ravencheck" }
This gives you the latest commit to main
.
Alternatively, you can clone the repo and use its path on your filesystem as the dependency:
# Cargo.toml
...
[dependencies]
ravencheck = { path = "path/to/cloned/repo" }
...
This allows you to choose which commit in the repo to use.
You use ravencheck
by adding the #[ravencheck::check_module]
macro
attribute at the top of modules in which you want to use
verification. See examples/sets.rs for an
example.
"Raven" is an acronym for relationally-abstracted verification encoding, the technique that is used to reduce verification conditions to a decidable fragment of first-order logic (specifically, the Extended EPR fragment).