paperbot · PL 论文追踪

RSS

RefinedRust: A Type System for High-Assurance Verification of Rust Programs

PLDI 8(PLDI)2024引用 55
Lennard Gäher, Michael Sammler, Ralf Jung, Robbert Krebbers, Derek Dreyer

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(Abstract)

Rust is a modern systems programming language whose ownership-based type system statically guarantees memory safety, making it particularly well-suited to the domain of safety-critical systems. In recent years, a wellspring of automated deductive verification tools have emerged for establishing functional correctness of Rust code. However, none of the previous tools produce foundational proofs (machine-checkable in a generalpurpose proof assistant), and all of them are restricted to the safe fragment of Rust. This is a problem because the vast majority of Rust programs make use of unsafe code at critical points, such as in the implementation of widely-used APIs. We propose RefinedRust , a refinement type system—proven sound in the Coq proof assistant—with the goal of establishing foundational semi-automated functional correctness verification of both safe and unsafe Rust code. We have developed a prototype verification tool implementing RefinedRust. Our tool translates Rust code (with user annotations) into a model of Rust embedded in Coq, and then checks its adherence to the RefinedRust type system using separation logic automation in Coq. All proofs generated by RefinedRust are checked by the Coq proof assistant, so the automation and type system do not have to be trusted. We evaluate the effectiveness of RefinedRust by verifying a variant of Rust’s Vec implementation that involves intricate reasoning about unsafe pointer-manipulating code.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@article{GaherSJKD24,
  title = {RefinedRust: A Type System for High-Assurance Verification of Rust Programs},
  author = {Lennard Gäher and Michael Sammler and Ralf Jung and Robbert Krebbers and Derek Dreyer},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {PLDI},
  year = {2024},
  doi = {10.1145/3656422}
}