paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Bit-Precise Procedure-Modular Termination Analysis

位精确的过程模块化终止性分析
TOPLAS 40(1)2017匹配度 3/10 · 该论文属于传统程序验证与抽象解释中的终止性分析,涉及过程间模块化摘要、位精确终止论证和排序函数合成,与用户关注的静态分析/形式化验证有较弱的领域关联;但它不涉及 LLM/Agent、ML 系统、浮点程序分析或贝叶斯程序分析,未命中当前研究画像的核心交叉方向。引用 19 inbox
Hong-Yi Chen, Cristina David, Daniel Kroening, Peter Schrammel, Björn Wachter
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出面向C程序的位精确过程模块化终止性分析,通过模板化过程间摘要结合前向过近似与终止前置条件欠近似推断。

非终止是挂起程序和拒绝服务漏洞等缺陷的根源,自动化证明其不存在十分必要。现有终止分析多聚焦于单过程的小规模问题,难以扩展到大型系统。本文提出一种基于模板化过程间摘要的模块化终止分析:将上下文敏感的前向过近似分析与终止前置条件的欠近似推断相结合,并在字典序线性ranking function模板上合成位精确的终止性论证。实验表明,过程间推理在效率上优于整体式分析,同时保持相当的精度。

问题
非终止是挂起程序和拒绝服务漏洞等bug的根源,而现有终止分析大多针对单过程小问题,难以扩展到大型系统。
方法
提出基于模板化过程间摘要的模块化终止分析,结合上下文敏感的前向过近似分析与终止前置条件的欠近似推断,并合成位精确的字典序线性ranking function。
评估
实验表明,过程间推理在效率上优于整体式分析,同时保持相当的精度。
原文摘要(Abstract)

Non-termination is the root cause of a variety of program bugs, such as hanging programs and denial-of-service vulnerabilities. This makes an automated analysis that can prove the absence of such bugs highly desirable. To scale termination checks to large systems, an interprocedural termination analysis seems essential. This is a largely unexplored area of research in termination analysis, where most effort has focussed on small but difficult single-procedure problems. We present a modular termination analysis for C programs using template-based interprocedural summarisation. Our analysis combines a context-sensitive, over-approximating forward analysis with the inference of under-approximating preconditions for termination. Bit-precise termination arguments are synthesised over lexicographic linear ranking function templates. Our experimental results show the advantage of interprocedural reasoning over monolithic analysis in terms of efficiency, while retaining comparable precision.

链接与引用

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

BibTeX
@article{ChenDKSW18,
  title = {Bit-Precise Procedure-Modular Termination Analysis},
  author = {Hong-Yi Chen and Cristina David and Daniel Kroening and Peter Schrammel and Björn Wachter},
  journal = {ACM Transactions on Programming Languages and Systems},
  volume = {40},
  number = {1},
  year = {2017},
  doi = {10.1145/3121136}
}