An approach for modularly verifying the core of Rust's atomic reference counting algorithm against the (X)C20 memory consistency model
Abstract: We propose an approach for modular verification of programs that use relaxed-consistency atomic memory access primitives and fences, sufficient for verifying the core of Rust's Atomic Reference Counting (ARC) algorithm, and we argue its soundness, when combined with a simple static analysis and admitting an open sub-problem, with respect to the C20 memory consistency model, as well as, even in the absence of any static analysis and without any assumptions, with respect to XC20, a recently proposed minor strengthening of C20 that rules out out-of-thin-air behaviors but allows load buffering. In contrast to existing work on verifying ARC, we do not assume acyclicity of the union of the program-order and reads-from relations. We define an interleaving operational semantics, prove its soundness with respect to (X)C20's axiomatic semantics, and then apply any existing program logic for fine-grained interleaving concurrency, such as Iris.
Paper Prompts
Sign up for free to create and run prompts on this paper.