Modular Termination Verification for Non-blocking Concurrency (Extended Version)

We present Total-TaDA, a program logic for verifying the total correctness of concurrent programs: that such programs both terminate and produce the correct result. With Total-TaDA, we can specify constraints on a thread’s concurrent environment that are necessary to guarantee termination. This allows us to verify total correctness for nonblocking algorithms, e.g. a counter and a stack. Our specifications can express lockand wait-freedom. More generally, they can express that one operation cannot impede the progress of another, a new non-blocking property we call non-impedance. Moreover, our approach is modular. We can verify the operations of a module independently, and build up modules on top of each other.

[1]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[2]  Pontus Boström,et al.  Modular Verification of Finite Blocking in Non-terminating Programs , 2015, ECOOP 2015.

[3]  Lars Birkedal,et al.  Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning , 2015, POPL.

[4]  John Tang Boyland,et al.  Checking Interference with Fractional Permissions , 2003, SAS.

[5]  Lars Birkedal,et al.  Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency , 2013, ICFP.

[6]  Gerhard Hessenberg Grundbegriffe der Mengenlehre , 1906 .

[7]  Viktor Vafeiadis,et al.  Proving that non-blocking algorithms don't block , 2009, POPL '09.

[8]  Lars Birkedal,et al.  Impredicative Concurrent Abstract Predicates , 2014, ESOP.

[9]  Zhong Shao,et al.  Quantitative Reasoning for Proving Lock-Freedom , 2013, 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science.

[10]  A. M. Turing,et al.  Checking a large routine , 1989 .

[11]  Philippa Gardner,et al.  Steps in Modular Specifications for Concurrent Modules (Invited Tutorial Paper) , 2015, MFPS.

[12]  Philippa Gardner,et al.  TaDA: A Logic for Time and Data Abstraction , 2014, ECOOP.

[13]  Xinyu Feng,et al.  Compositional verification of termination-preserving refinement of concurrent programs , 2014, CSL-LICS.

[14]  Maurice Herlihy,et al.  Wait-free synchronization , 1991, TOPL.

[15]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[16]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[17]  Hongseok Yang,et al.  Views: compositional reasoning for concurrent programs , 2013, POPL.

[18]  Calton Pu,et al.  A Lock-Free Multiprocessor OS Kernel , 1992, OPSR.

[19]  Viktor Vafeiadis,et al.  Concurrent Abstract Predicates , 2010, ECOOP.