paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Modular Termination Verification of Single-Threaded and Multithreaded Programs

单线程与多线程程序的模块化终止性验证
TOPLAS 40(3)2018匹配度 3/10 · 该论文属于形式化验证与程序终止性分析,与用户关注的“AI→PL”中形式化验证方向有间接关联;但它未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,也不是针对 ML/Agentic 程序的静态分析,因此匹配度较低。引用 7 inbox
Bart Jacobs, Dragan Bosnacki, Ruurd Kuiper
crossref: 2026-09-10

AI 速览

一句话:提出一种模块化规约与验证方法,用方法名多重集等层级表达式证明面向对象程序(含堆修改与并发)的终止性与活性。

论文研究面向对象程序全正确性(终止性)的模块化规约与验证。核心是一种规约风格:为每个方法赋予层级表达式,要求被调用方法的层级低于调用者,即便存在动态绑定也能隐藏实现细节。作者以方法名多重集作为层级,并为对象关联抽象层级,从而由方法名和实参对象层级定义方法层级。方法先处理不修改对象字段的程序,随后结合分离逻辑与抽象谓词族支持堆修改,最后融入已有的通道与锁死锁自由验证,用终止层级进行锁排序并引入调用权限,支持线程池、细粒度并发算法等跨线程工作验证,也可用于非终止程序的活性。

问题
如何在存在动态绑定、堆修改和并发的情况下,模块化地规约并验证面向对象程序的全正确性/终止性,同时隐藏实现细节。
方法
提出基于层级表达式的规约风格,用方法名多重集与对象层级定义方法层级,并结合分离逻辑、抽象谓词族、死锁自由验证、锁排序和 call permissions。
评估
摘要未报告实验评估;作者通过从无字段修改到堆修改再到并发的逐步扩展说明方法适用性,并讨论线程池、CAS 循环及非终止程序活性等验证场景。
原文摘要(Abstract)

We propose an approach for the modular specification and verification of total correctness properties of object-oriented programs. The core of our approach is a specification style that prescribes a way to assign a level expression to each method such that each callee’s level is below the caller’s, even in the presence of dynamic binding. The specification style yields specifications that properly hide implementation details. The main idea is to use multisets of method names as levels, and to associate with each object levels that abstractly reflect the way the object is built from other objects. A method’s level is then defined in terms of the method’s own name and the levels associated with the objects passed as arguments. We first present the specification style in the context of programs that do not modify object fields. We then combine it with separation logic and abstract predicate families to obtain an approach for programs with heap mutation. In a third step, we address concurrency, by incorporating an existing approach for verifying deadlock freedom of channels and locks. Our main contribution here is to achieve information hiding by using the proposed termination levels for lock ordering as well. Also, we introduce call permissions to enable elegant verification of termination of programs where threads cause work in other threads, such as in thread pools or fine-grained concurrent algorithms involving compare-and-swap loops. We explain how our approach can be used also to verify the liveness of nonterminating programs.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot318,
  title = {Modular Termination Verification of Single-Threaded and Multithreaded Programs},
  author = {Bart Jacobs and Dragan Bosnacki and Ruurd Kuiper},
  journal = {ACM Transactions on Programming Languages and Systems},
  volume = {40},
  number = {3},
  year = {2018},
  doi = {10.1145/3210258}
}