PropProof: Free Model-Checking Harnesses from PBT

Dec 6, 2023

Speakers

About

Property-based testing (PBT) is often used by Rust developers to test functional correctness properties of their code. Since PBT uses randomized testing, its guarantees are limited: it can detect bugs but provides no formal guarantees of correctness. The Kani Rust Verifier uses the CProver verification framework to verify Rust code, given a specification in a Kani verification harness. However, developers must manually write Kani harnesses while avoiding model-checking-specific pitfalls like large memory usage or timeouts. We introduce propproof, a library that automatically converts proptest PBT harnesses into Kani harnesses which can be formally validated using Kani. We discuss the data-structure models we developed in order to optimize performance of these Kani verification harnesses. Using this library, we identified and fixed 2 issues in PROST, an AWS-developed protocol-buffer library with nearly 40 million downloads. propproof is being used in PROST’s CI. Our evaluation on 42 PBT harnesses from top-ranked open-source Rust libraries demonstrates propproof enabling the use of Kani to verify complex, user-defined properties on existing code with minimal user intervention.

Organizer

Categories

Store presentation

Should this presentation be stored for 1000 years?

How do we store presentations

Total of 0 viewers voted for saving the presentation to eternal vault which is 0.0%

Sharing

Recommended Videos

Presentations on similar topic, category or speaker

Interested in talks like this? Follow ESEC-FSE