Kani: A Model Checker for Rust
摘要
Kani 是开源的 Rust 模型检查器,基于 Rust MIR 将证明 harness 编译成 CBMC 的位精确验证引擎,实现零用户注解的全面安全属性验证(如原始指针解引用、功能正确性、无运行恐慌)。通过函数与循环合约、量词、函数存根扩展至无界验证。工业案例研究中,合约升级将恐慌自由验证提升至功能正确性,检测到六处未知 bug;Rust 标准库验证战役每日超过 16000 个 harness 处理,适用于生产 CI。
荐读理由
用 cargo kani 编译 harness 到 CBMC 引擎,零注释自动验安全 + panic + 功能正确,工业项目案例中 contracts 把 panic-freedom 升到 functional correctness 还挖出 6 个未知 bug,标准库 CI 每天验 16000+ harness
原文
Computer Science > Software Engineering
[Submitted on 1 Jul 2026]
Title:Kani: A Model Checker for Rust
Authors:Rémi Delmas, Zyad Hassan, Qinheping Hu, Rahul Kumar, Felipe R. Monteiro, Thanh Nguyen, Adrián Palacios, Celina Val, Michael Tautschnig, Justus Adam, Daniel Schwartz-Narbonne, Carolyn Zech
View a PDF of the paper titled Kani: A Model Checker for Rust, by R'emi Delmas and 11 other authors
Abstract:Rust's ownership type system prevents memory errors in safe code, but certain desirable properties remain orthogonal to compilation: the soundness of unsafe operations (e.g., raw pointer dereferences), functional correctness, and absence of runtime panics. We present Kani, an open-source model checker for Rust that pushes bounded model checking beyond bug-finding to provide correctness guarantees for these properties. Kani compiles proof harnesses from Rust's Mid-level Intermediate Representation (MIR) into CBMC's bit-precise verification engine, automatically checking a comprehensive set of safety properties with no user annotation. To extend verification from bounded to unbounded, Kani provides a specification language comprising function contracts, loop contracts, quantifiers, and function stubbing. We demonstrate feasibility through case studies on industrial Rust projects, where contracts upgraded verification from panic-freedom to functional correctness, uncovering six previously unknown bugs. Kani operates at scale in production CI, with over 16,000 harnesses verified per code change in the Rust standard library verification campaign.
https://doi.org/10.48550/arXiv.2607.01504
arXiv-issued DOI via DataCite (pending registration)
| Comments: | |
|---|---|
| Subjects: | Software Engineering (cs.SE); Logic in Computer Science (cs.LO); Programming Languages (cs.PL) |
| ACM classes: | D.2.4; F.3.1 |
| Cite as: | arXiv:2607.01504 [cs.SE] |
| (or arXiv:2607.01504v1 [cs.SE] for this version) | |
Submission history
From: Felipe R. Monteiro [view email] [v1] Wed, 1 Jul 2026 22:05:33 UTC (149 KB)
Full-text links:
Access Paper:
View a PDF of the paper titled Kani: A Model Checker for Rust, by R'emi Delmas and 11 other authors
Current browse context:
cs.SE
Change to browse by:
References & Citations
Loading...
BibTeX formatted citation
Data provided by:
Bookmark
Bibliographic and Citation Tools
Bibliographic Explorer (What is the Explorer?)
Connected Papers (What is Connected Papers?)
Litmaps (What is Litmaps?)
scite Smart Citations (What are Smart Citations?)
Code, Data and Media Associated with this Article
alphaXiv (What is alphaXiv?)
CatalyzeX Code Finder for Papers (What is CatalyzeX?)
DagsHub (What is DagsHub?)
Gotit.pub (What is GotitPub?)
Hugging Face (What is Huggingface?)
ScienceCast (What is ScienceCast?)
Demos
Replicate (What is Replicate?)
Hugging Face Spaces (What is Spaces?)
TXYZ.AI (What is TXYZ.AI?)
Recommenders and Search Tools
Influence Flower (What are Influence Flowers?)
CORE Recommender (What is CORE?)
Author
Venue
Institution
Topic
arXivLabs: experimental projects with community collaborators
arXivLabs is a framework that allows collaborators to develop and share new arXiv features directly on our website.
Both individuals and organizations that work with arXivLabs have embraced and accepted our values of openness, community, excellence, and user data privacy. arXiv is committed to these values and only works with partners that adhere to them.
Have an idea for a project that will add value for arXiv's community? Learn more about arXivLabs.
Which authors of this paper are endorsers? | Disable MathJax (What is MathJax?)
这条对你有帮助吗?