RustHornBelt: A Semantic Foundation for Functional Verification of Rust Programs with Unsafe Code

Jun 18, 2022

Sprecher:innen

Über

Rust is a systems programming language that offers both low-level memory operations and high-level safety guarantees, via a strong ownership type system that prohibits mutation of aliased state. In prior work, Matsushita et al. developed RustHorn, a promising technique for functional verification of Rust code: it leverages the strong invariants of Rust types to express the behavior of stateful Rust code with first-order logic (FOL) formulas, whose verification is amenable to off-the-shelf automated techniques. RustHorn’s key idea is to use \emph{prophecies} to describe the behavior of mutable borrows. However, the soundness of RustHorn was only established for a \emph{safe} subset of Rust, and it has remained unclear how to extend it to support various safe APIs that encapsulate \emph{unsafe} code (i.e. code where Rust’s aliasing discipline is relaxed). In this paper, we present \textbf{RustHornBelt}, the first machine-checked proof of soundness for RustHorn-style verification which supports giving FOL specs to safe APIs implemented with unsafe code. RustHornBelt employs the approach of \emph{semantic typing} used in Jung et al.’s RustBelt framework, but it extends RustBelt’s model to reason not only about safety but also functional correctness. The key challenge in RustHornBelt is to develop a semantic model of RustHorn-style prophecies, which we achieve via a new separation-logic mechanism we call \emph{parametric prophecies}.

Organisator

Kategorien

Präsentation speichern

Soll diese Präsentation für 1000 Jahre gespeichert werden?

Wie speichern wir Präsentationen?

Ewigspeicher-Fortschrittswert: 0 = 0.0%

Empfohlene Videos

Präsentationen, deren Thema, Kategorie oder Sprecher:in ähnlich sind

Interessiert an Vorträgen wie diesem? PLDI folgen