Proving that non-blocking algorithms don't block

Alexey Gotsman, Byron Cook, Matthew Parkinson, Viktor Vafeiadis
2008 Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '09  
A concurrent data-structure implementation is considered nonblocking if it meets one of three following liveness criteria: waitfreedom, lock-freedom, or obstruction-freedom. Developers of nonblocking algorithms aim to meet these criteria. However, to date their proofs for non-trivial algorithms have been only manual pencil-and-paper semi-formal proofs. This paper proposes the first fully automatic tool that allows developers to ensure that their algorithms are indeed non-blocking. Our tool uses
more » ... rely-guarantee reasoning while overcoming the technical challenge of sound reasoning in the presence of interdependent liveness properties.
doi:10.1145/1480881.1480886 dblp:conf/popl/GotsmanCPV09 fatcat:ecrein66ajcfnm7323r7bino5y