2个不稳定版本
0.2.0 | 2024年7月30日 |
---|---|
0.1.1 | 2024年6月25日 |
#504 in 数学
1,086 星标 & 24 关注者
630KB
15K SLoC
Le marteau-pilon, 铁匠和钢铁厂 Saint-Chamond, Joseph-Fortuné LAYRAUD, 1889
关于
Creusot 是一个针对Rust代码的演绎验证器。它验证您的代码免于panic、溢出和断言失败。通过添加注释,您可以进一步验证您的代码是否执行了正确的操作。
Creusot通过将Rust代码翻译为WhyML(Why3的验证和规范语言)来工作。Why3。用户可以利用Why3的全部功能(半)自动释放验证条件!
有关技术细节,请参阅ARCHITECTURE.md。
帮助和讨论
如果您需要使用Creusot的帮助或想进行讨论,您可以在讨论论坛上发帖或加入我们的Zulip聊天!
引用Creusot
如果您想在学术环境中引用Creusot,我们鼓励您使用我们的ICFEM'22论文。
验证示例
为了了解使用Creusot验证程序的样子,我们鼓励您查看我们的测试套件之一
更多示例请参阅creusot/tests/should_succeed。
使用Creusot构建的项目
- CreuSAT是一个用Rust编写的经过验证的SAT求解器,并使用Creusot进行验证。它将工具推到了极限,并展示了“实战应用”是什么样的。
- 另一个大型项目正在开发中:)
以用户身份安装Creusot
- 安装
rustup
,以获取合适的Rust工具链 - 获取
opam
,OCaml的包管理器 - 克隆creusot存储库,然后进入
creusot
目录进行其余的设置。$ git clone https://github.com/creusot-rs/creusot $ cd creusot
- 设置Why3和Alt-Ergo。使用why3和alt-ergo创建一个本地的
opam
开关
这将在本地的$ opam switch create -y . ocaml.4.14.1 $ eval $(opam env)
_opam
目录中构建why3、alt-ergo及其OCaml依赖项。 - 构建Creusot
这将构建$ cargo install --path creusot-rustc $ cargo install --path cargo-creusot
cargo-creusot
和creusot-rustc
可执行文件,并将它们放置在~/.cargo/bin
中。 - 设置Creusot
这将下载额外的求解器(Z3、CVC4、CVC5)并配置Why3以使用它们。$ cargo creusot setup install
升级Creusot
- 进入之前用于安装Creusot克隆的Creusot git存储库
- 更新Creusot的源代码
$ git pull
- 如有需要,升级Why3和Alt-Ergo
$ eval $(opam env) $ opam update $ opam install .
- 重新构建和重新安装Creusot
$ cargo install --path creusot-rustc $ cargo install --path cargo-creusot
- 重新运行Creusot的设置
$ cargo creusot setup install
使用Creusot和Why3进行验证
参阅指南。
在Creusot上修改
有关在Creusot代码库上修改的开发者工作流程信息,请参阅HACKING.md。
依赖项
~5.5–8MB
~141K SLoC