Proving linearizability of concurrent data structures remains a key challenge for verification. We present temporal interpolation as a new proof principle to conduct such proofs using hindsight arguments within concurrent separation logic. Temporal reasoning offers an easy-to-use alternative to prophecy variables and has the advantage of structuring proofs into easy-to-discharge hypotheses. To hindsight theory, our work brings the formal rigor and proof machinery of concurrent program logics. We substantiate the usefulness of our development by verifying the linearizability of the Logical Ordering (LO-)tree and RDCSS. Both of these involve complex proof arguments due to future-dependent linearization points. The LO-tree additionally features complex structure overlays. Our proof of the LO-tree is the first formal proof of this data structure. Interestingly, our formalization revealed an unknown bug and an existing informal proof as erroneous.
翻译:证明并发数据结构的线性化仍然是验证的关键挑战。我们提出了时间插值作为一种新的证明原理,使用并发分离逻辑中的反事实论证来进行这样的证明。时间推理为预言变量提供了易于使用的替代方案,并具有将证明分成易于产生的假设的优点。对于反事实理论,我们的工作将并发程序逻辑的形式化严谨性和证明机制带入其中。我们通过验证逻辑排序(LO-)树和RDCSS的线性化来证明我们的开发的有用性。两者都涉及由于未来依赖性线性化点而存在的复杂的证明论点。LO-树另外还涉及复杂的结构叠加。我们对LO-树的证明是这种数据结构的第一个正式证明。有趣的是,我们的形式化揭示了一个未知的错误和一个现有的非正式证明是错误的。