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.
CITATION STYLE
Jacobs, J., Balzer, S., & Krebbers, R. (2022). Connectivity graphs: A method for proving deadlock freedom based on separation logic. Proceedings of the ACM on Programming Languages, 6(POPL). https://doi.org/10.1145/3498662
Mendeley helps you to discover research relevant for your work.