Verifying Reliable Network Components in a Distributed Separation Logic with Dependent Separation Protocols

被引:2
|
作者
Gondelman, Leon [1 ]
Hinrichsen, Jonas Kastberg [1 ]
Pereira, Mario [2 ]
Timany, Amin [1 ]
Birkedal, Lars [1 ]
机构
[1] Aarhus Univ, Aarhus, Denmark
[2] NOVA Sch Sci & Technol, NOVA LINCS, Lisbon, Portugal
关键词
Distributed systems; separation logic; refinement; higher-order logic; concurrency; formal verification;
D O I
10.1145/3607859
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present a foundationally verified implementation of a reliable communication library for asynchronous client-server communication, and a stack of formally verified components on top thereof. Our library is implemented in an OCaml-like language on top of UDP and features characteristic traits of existing protocols, such as a simple handshaking protocol, bidirectional channels, and retransmission/acknowledgement mechanisms. We verify the library in the Aneris distributed separation logic using a novel proof pattern-dubbed the session escrow pattern-based on the existing escrow proof pattern and the so-called dependent separation protocols, which hitherto have only been used in a non-distributed concurrent setting. We demonstrate how our specification of the reliable communication library simplifies formal reasoning about applications, such as a remote procedure call library, which we in turn use to verify a lazily replicated key-value store with leader-followers and clients thereof. Our development is highly modular-each component is verified relative to specifications of the components it uses (not the implementation). All our results are formalized in the Coq proof assistant.
引用
收藏
页码:847 / 877
页数:31
相关论文
共 50 条
  • [1] Grove: a Separation-Logic Library for Verifying Distributed Systems
    Sharma, Upamanyu
    Jung, Ralf
    Tassarotti, Joseph
    Kaashoek, M. Frans
    Zeldovich, Nickolai
    PROCEEDINGS OF THE TWENTY-NINTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, SOSP 2023, 2023, : 113 - 129
  • [2] Verifying Parallel Loops with Separation Logic
    Blom, Stefan
    Darabi, Saeed
    Huisman, Marieke
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2014, (155): : 47 - 53
  • [3] Dependent Session Protocols in Separation Logic from First Principles (Functional Pearl)
    Jacobs, Jules
    Hinrichsen, Jonas Kastberg
    Krebbers, Robbert
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2023, 7 (ICFP): : 768 - 795
  • [4] Formalizing and Verifying Decentralized Systems with Extended Concurrent Separation Logic
    Ding, Yepeng
    Sato, Hiroyuki
    ALGORITHMS AND ARCHITECTURES FOR PARALLEL PROCESSING, ICA3PP 2020, PT I, 2020, 12452 : 480 - 494
  • [5] Tool for Verifying Cloud Block Storage Based on Separation Logic
    Zhang, Bo-Wen
    Jin, Zhao
    Wang, Han-Pin
    Cao, Yong-Zhi
    Ruan Jian Xue Bao/Journal of Software, 2022, 33 (06): : 2264 - 2287
  • [6] Simuliris: A Separation Logic Framework for Verifying Concurrent Program Optimizations
    Gaeher, Lennard
    Sammler, Michael
    Spies, Simon
    Jung, Ralf
    Dang, Hoang-Hai
    Krebbers, Robbert
    Kang, Jeehoon
    Dreyer, Derek
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2022, 6 (POPL):
  • [7] Verifying Executable Object-Oriented Specifications with Separation Logic
    van Staden, Stephan
    Calcagno, Cristiano
    Meyer, Bertrand
    ECOOP 2010: OBJECT-ORIENTED PROGRAMMING, 2010, 6183 : 151 - +
  • [8] Distributed separation of concerns with aspect components
    Pawlak, R
    Duchien, L
    Florin, G
    Martelli, L
    Seinturier, L
    TECHNOLOGY OF OBJECT-ORIENTED LANGUAGES - TOOLS 33, PROCEEDINGS, 2000, : 276 - 287
  • [9] Formally verifying exceptions for low-level code with separation logic
    Paviotti, Marco
    Bengtson, Jesper
    JOURNAL OF LOGICAL AND ALGEBRAIC METHODS IN PROGRAMMING, 2018, 94 : 1 - 14
  • [10] Heap-Dependent Expressions in Separation Logic
    Smans, Jan
    Jacobs, Bart
    Piessens, Frank
    FORMAL TECHNIQUES FOR DISTRIBUTED SYSTEMS, PROCEEDINGS, 2010, 6117 : 170 - 185