Linearizability has been the long standing gold standard for consistency in concurrent data structures. However, proofs of linearizability can be long and intricate, hard to produce, and extremely time consuming even to verify. In this work, we address this issue by introducing simple $universal$, $sound$, and $complete$ proof methods for producing machine-verifiable proofs of linearizability and its close cousin, strong linearizability. Universality means that our method works for any object type; soundness means that an algorithm can be proved correct by our method only if it is linearizable (resp. strong linearizable); and completeness means that any linearizable (resp. strong linearizable) implementation can be proved so using our method. We demonstrate the simplicity and power of our method by producing proofs of linearizability for the Herlihy-Wing queue and Jayanti's single-scanner snapshot, as well as a proof of strong linearizability of the Jayanti-Tarjan union-find object. All three of these proofs are machine-verified by TLAPS (the Temporal Logic of Actions Proof System).
翻译:在这项工作中,我们通过采用简单的通用美元、美元和完整的证明方法来解决这个问题。普遍性意味着我们的方法对任何物体类型都有效;健全的意味着一种算法只有在可以线性(可线性强可线性)的情况下才能被我们的方法证明是正确的(可线性强可线性);完整性意味着任何可线性(可线性强可线性)的实施都可以用我们的方法证明。我们通过为Herlihy-wing队列和Jayanti的单扫描器短片提供可线性证据,并证明Jayanti-Tarjan联合设计的物体具有很强的线性,来证明我们方法的简单性和力量。所有这些证据都由TLAPS(行动模拟逻辑系统)进行机器核查。