Aneris: A Mechanised Logic for Modular Reasoning about Distributed Systems


Morten Krogh-Jespersen, Amin Timany, Marit Edna Ohlenbusch, Simon Oddershede Gregersen, and Lars Birkedal: Aneris: A Mechanised Logic for Modular Reasoning about Distributed Systems. In ESOP 2020: European Symposium on Programming, April 2020.
Conference Paper
Keywords: Distributed systems, Separation logic, Higher-order logic, Concurrency, Formal verification
Abstract.

Building network-connected programs and distributed systems is a powerful way to provide scalability and availability in a digital, always-connected era. However, with great power comes great complexity. Reasoning about distributed systems is well-known to be difficult.

In this paper we present Aneris, a novel framework based on separation logic supporting modular, node-local reasoning about concurrent and distributed systems. The logic is higher-order, concurrent, with higher-order store and network sockets, and is fully mechanized in the Coq proof assistant. We use our framework to verify an implementation of a load balancer that uses multi-threading to distribute load amongst multiple servers and an implementation of the two-phase-commit protocol with a replicated logging service as a client. The two examples certify that Aneris is well-suited for both horizontal and vertical modular reasoning.

The bibtex source for this publication:
@inproceedings{DBLP:conf/esop/Krogh-Jespersen20,
  author    = {Morten Krogh{-}Jespersen and
               Amin Timany and
               Marit Edna Ohlenbusch and
               Simon Oddershede Gregersen and
               Lars Birkedal},
  editor    = {Peter M{"{u}}ller},
  title     = {Aneris: {A} Mechanised Logic for Modular Reasoning about Distributed
               Systems},
  booktitle = {Programming Languages and Systems - 29th European Symposium on Programming,
               {ESOP} 2020, Held as Part of the European Joint Conferences on Theory
               and Practice of Software, {ETAPS} 2020, Dublin, Ireland, April 25-30,
               2020, Proceedings},
  series    = {Lecture Notes in Computer Science},
  volume    = {12075},
  pages     = {336--365},
  publisher = {Springer},
  year      = {2020},
  url       = {https://doi.org/10.1007/978-3-030-44914-8\_13},
  doi       = {10.1007/978-3-030-44914-8\_13},
  timestamp = {Mon, 04 May 2020 13:23:23 +0200},
  biburl    = {https://dblp.org/rec/conf/esop/Krogh-Jespersen20.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
 }