Abstract

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 non-blocking algorithms, e.g. a counter and a stack. Our specifications can express lock- and 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.

Keywords

Program Logic Loop Iteration Concurrent Program Read Operation Total Correctness

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Notes

Acknowledgements

We thank Bart Jacobs, Hongjin Liang, Peter Müller and the anonymous referees for useful feedback. This research was supported by EPSRC Programme Grants EP/H008373/1 and EP/K008528/1, by the “ModuRes” Sapere Aude Advanced Grant from The Danish Council for Independent Research for the Natural Sciences (FNU) and the “Automated Verification for Concurrent Programs” Individual Postdoc Grant from The Danish Council for Independent Research for Technology and Production Sciences (FTP).