Verification of Herlihy & Wing's Queue as an Instance of the Complete Refinement Theory for Linearizability

This page describes KIV proofs that verify Herlihy & Wing's queue (defined in [HeWi90]). This queue implementation, though not of practical interest, is despite its algorithmic simplicity a particularly hard example to prove linearizability. The original proof in [HeWi90] is rather complex. It uses auxiliary data (a partial order), Owicki-Gries style reasoning and assumes without loss of generality, that all queue elements are different. The latter assumption is particularly hard to imitate in a formal proof.

Our proof uses the refinement theory for linearizability described here. According to the completeness result given there, it should be possible to prove any linearizable algorithm using backward simulation, and indeed our proof demonstrates that. It constructs a backward simulation without using any auxiliary data. Both the completeness proof for backward simulation and the verification of the queue have been published in [CAV12]. To get an overview over the specifications, have a look at the toplevel overview, which shows the structure of the specifications as a development graph. The following specification are important: