We present TaDA Live, a concurrent separation logic for reasoning compositionally about the termination of blocking fine-grained concurrent programs. The crucial challenge is how to deal with abstract atomic blocking: that is, abstract atomic operations that have blocking behaviour arising from busy-waiting patterns as found in, for example, fine-grained spin locks. Our fundamental innovation is with the design of abstract specifications that capture this blocking behaviour as liveness assumptions on the environment. We design a logic that can reason about the termination of clients which use such operations without breaking their abstraction boundaries, and the correctness of the implementations of the operations with respect to their abstract specifications. We introduce a novel semantic model using layered subjective obligations to express liveness invariants, and a proof system that is sound with respect to the model. The subtlety of our specifications and reasoning is illustrated using several case studies.
翻译:我们提出Tada Live(TaDA Live),这是一个同时的分离逻辑,用来从结构上解释如何终止阻止微粒的同步程序。关键的挑战是如何处理抽象原子封隔:即抽象原子行动,它阻挡了诸如微粒旋转锁等繁忙等待模式所产生的行为。我们的基本创新是设计抽象的规格,将这种封隔行为作为对环境的活性假设。我们设计了一种逻辑,它可以用来解释终止使用这种操作而不会打破其抽象界限的客户,以及操作在抽象规格方面的正确性。我们引入了一个新的语义模型,使用分层的主观义务来表达变化中的活性,以及一个与模型相符合的验证系统。我们规格和推理的微妙性通过几个案例研究加以说明。