Litcius/Paper detail

Connectivity graphs: a method for proving deadlock freedom based on separation logic

Jules Jacobs, Stephanie Balzer, Robbert Krebbers

2022Proceedings of the ACM on Programming Languages15 citationsDOIOpen Access PDF

Abstract

We introduce the notion of a connectivity graph —an abstract representation of the topology of concurrently interacting entities, which allows us to encapsulate generic principles of reasoning about deadlock freedom . Connectivity graphs are parametric in their vertices (representing entities like threads and channels) and their edges (representing references between entities) with labels (representing interaction protocols). We prove deadlock and memory leak freedom in the style of progress and preservation and use separation logic as a meta theoretic tool to treat connectivity graph edges and labels substructurally. To prove preservation locally, we distill generic separation logic rules for local graph transformations that preserve acyclicity of the connectivity graph. To prove global progress locally, we introduce a waiting induction principle for acyclic connectivity graphs. We mechanize our results in Coq, and instantiate our method with a higher-order binary session-typed language to obtain the first mechanized proof of deadlock and leak freedom.

Topics & Concepts

Computer scienceSeparation logicDeadlockTheoretical computer scienceMathematical proofModular decompositionGraphProgramming languageMathematicsPathwidthLine graphGeometryLogic, programming, and type systemsDistributed systems and fault toleranceSecurity and Verification in Computing