Tackling Real-Life Relaxed Concurrency with FSL++


We extend fenced separation logic (FSL), a program logic for reasoning about C11 relaxed access and memory fences. Our extensions to FSL allow us to handle concurrent algorithms appearing in practice. New features added to FSL allow for reasoning about concurrent nonatomic reads, atomic updates, ownership transfer via release sequences, and ghost state. As a demonstration of power of the extended FSL, we verify correctness of the atomic reference counter (ARC), a standard library of the Rust programing language, whose implementation relies heavily on advanced features of the C11 memory model. Soundness of FSL and its extensions, as well as the correctness proof of ARC have been established in Coq.

DOI: 10.1007/978-3-662-54434-1_17
View Slides

13 Figures and Tables

Cite this paper

@inproceedings{Doko2017TacklingRR, title={Tackling Real-Life Relaxed Concurrency with FSL++}, author={Marko Doko and Viktor Vafeiadis}, booktitle={ESOP}, year={2017} }