paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Decidable verification of uninterpreted programs

未解释程序的可判定验证
POPL 3(POPL)2019匹配度 3/10 · 该论文属于程序验证与静态分析的形式化理论,讨论未解释程序的可判定验证,但未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户当前追踪的交叉方向不匹配。引用 16 inbox
Umang Mathur, P. Madhusudan, Mahesh Viswanathan
crossref: 2026-09-10

AI 速览

一句话:提出 coherent 程序类,使未解释程序的完全自动验证可判定,并可在 Pspace 内完成。

本文研究未解释程序的完全自动验证:程序可运行在任意数据模型上,数据模型为常元、函数和关系提供解释,验证目标是无量词、带等式的最终状态后置条件,且不提供循环不变式或契约。作者首先证明该问题一般不可判定。核心贡献是定义一类 coherent 程序,使验证可判定,并可在 Pspace 内判定;进而通过自动添加 k 个 ghost 变量和赋值,将可判定性扩展到 k-coherent 程序。论文还将可判定性结果扩展到含递归函数调用的程序,并给出若干不可判定性结果,说明所加限制的必要性。

问题
在无循环不变式、无契约且数据模型任意解释的情况下,自动判定程序是否满足最终状态的无量词等词后置条件。
方法
证明一般问题不可判定,定义 coherent 程序,并利用自动添加 ghost 变量/赋值的 k-coherent 扩展及递归函数调用扩展获得可判定性。
评估
评估为理论结果:给出 Pspace 判定过程、递归程序扩展,以及说明限制必要性的若干不可判定性结果。
原文摘要(Abstract)

We study the problem of completely automatically verifying uninterpreted programs—programs that work over arbitrary data models that provide an interpretation for the constants, functions and relations the program uses. The verification problem asks whether a given program satisfies a postcondition written using quantifier-free formulas with equality on the final state, with no loop invariants, contracts, etc. being provided. We show that this problem is undecidable in general. The main contribution of this paper is a subclass of programs, called coherent programs that admits decidable verification, and can be decided in Pspace. We then extend this class of programs to classes of programs that are k -coherent, where k ∈ ℕ, obtained by (automatically) adding k ghost variables and assignments that make them coherent. We also extend the decidability result to programs with recursive function calls and prove several undecidability results that show why our restrictions to obtain decidability seem necessary.

链接与引用

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

BibTeX
@article{paperbot621,
  title = {Decidable verification of uninterpreted programs},
  author = {Umang Mathur and P. Madhusudan and Mahesh Viswanathan},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3290359}
}