We report on intermediate results of our research on reasoning about liveness properties in addition to deep correctness properties for an imperative, concurrent programming language with a higher-order store. At present, we focus on one particular liveness property, namely termination. By guaranteeing termination we can strengthen statements of partial correctness to total correctness. This is achieved by the classic approach of turning termination into a safety property. In particular we extend the programming language under consideration with call permissions, which have been shown to enable modular reasoning about termination. Atomic blocks are added to increase the expressiveness of our call-permission-based approach. Our work builds on top of Iris -- a foundational, machine-checked, higher-order concurrent separation logic framework -- without modifying it. With these additions we are able to modularly reason about the termination of concurrent, but non-blocking algorithms. Our additions to the programming language under consideration preserve Iris' ability to reason about helping and prophecies. As an example, we apply the current system to an existing case study for a lock-free concurrent stack with helping that has been proven in Iris. Finally, we sketch the next steps to scale our approach to blocking concurrency.
翻译:我们除了报告关于生命属性的理论研究的中间结果之外,还报告关于生命属性的深度正确性特性的中间结果,以及对于一个紧迫的、同时编程的语言,与一个更高级的仓库。目前,我们侧重于一个特定的生命属性,即终止。通过保证终止,我们可以加强部分正确性的陈述,从而完全正确性。这是通过将终止变成安全属性的经典方法实现的。特别是,我们通过呼叫许可来扩展正在审议的编程语言,这已经显示能够进行模块化的终止推理。原子块被添加来增加我们的呼救-许可方法的表达性。我们的工作建立在Iris的顶端 -- -- 一个基础性、机器检查的、更高级的同时分离逻辑框架 -- -- 而不修改它。有了这些添加,我们可以以模块形式解释终止同时但无阻断的算法。我们在考虑的编程语言中添加了“保留帮助和预言”的理由。举例来说,我们把目前的系统应用到一个现有的案例研究中,用于帮助实现固定同步并存的堆叠。最后,我们勾画出我们的下一个步骤是在Iris所证明的。