Refinement Proofs in Rust Using Ghost Locks
Aurel B\'il\'y (1), Jo\~ao C. Pereira (1), Jan Sch\"ar (1), Peter, M\"uller (1) ((1) ETH Zurich)

TL;DR
This paper introduces a new refinement technique for Rust programs that overcomes previous limitations, supporting diverse structures and properties, and demonstrates its practicality through substantial case studies.
Contribution
It presents a novel refinement method for Rust that handles various program and proof structures, enabling reasoning about safety and liveness properties.
Findings
Supports a wide range of program structures and data representations
Enables reasoning about both safety and liveness properties
Demonstrates practicality on substantial case studies
Abstract
Refinement transforms an abstract system model into a concrete, executable program, such that properties established for the abstract model carry over to the concrete implementation. Refinement has been used successfully in the development of substantial verified systems. Nevertheless, existing refinement techniques have limitations that impede their practical usefulness. Some techniques generate executable code automatically, which generally leads to implementations with sub-optimal performance. Others employ bottom-up program verification to reason about efficient implementations, but impose strict requirements on the structure of the code, the structure of the refinement proofs, as well as the employed verification logic and tools. In this paper, we present a novel refinement technique that removes these limitations. It supports a wide range of program structures, data…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Software Testing and Debugging Techniques · Security and Verification in Computing
