paperbot · PL 论文追踪

全部论文 待读 收藏

P2 VST-A: A Foundationally Sound Annotation Verifier

VST-A:一个基础可靠的注解验证器
POPL 8(POPL)2024匹配度 3/10 · 该论文属于程序验证与 Coq 形式化方向,与用户画像中“AI→PL:用 LLM/Agent 改进形式化验证”的领域相邻,但本身未涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析,与核心交叉点匹配较弱。引用 11 inbox
Litao Zhou, Jianxing Qin, Qinshi Wang, Andrew W. Appel, Qinxiang Cao
crossref: 2026-09-10

AI 速览

一句话:提出 VST-A,一个基于 VST 丰富断言语言和 Coq 可靠证明的注解验证器,可将 C 函数验证归约为直线 Hoare 三元组。

面向 C 等命令式语言的程序验证中,注解验证器更自动化,但断言语言和可靠性证明常较弱;基于策略的验证器虽有丰富断言与形式可靠性,却依赖交互式证明脚本。VST-A 结合二者:采用 VST 的丰富断言语言和形式可靠性证明,让用户以插入断言的方式描述函数正确性证明。它分析控制流图,将每个 C 函数分解为断言之间的控制流路径,并把验证问题归约为直线 Hoare 三元组。相比 VST 和 Iris,其分解与归约可以是非结构化的,因而更灵活;该过程在 Coq 中定义、证明可靠并按值调用计算。归约的可靠性证明完全逻辑化,独立于 VST Hoare 三元组的复杂语义模型。由于断言语言丰富,并非所有归约后的目标都能自动检查,剩余目标可在 Coq 中证明。

问题
如何让命令式语言(如 C)的注解验证既拥有丰富断言语言与形式可靠性保证,又保持使用上的自动化与灵活性。
方法
VST-A 复用 VST 的断言语言与可靠性证明,通过分析控制流图,将 C 函数分解为断言间的控制流路径,并把验证目标归约为直线 Hoare 三元组;该分解与归约在 Coq 中定义、证明可靠并按值调用执行。
评估
作者将 VST-A 与 VST、Iris 等基础程序验证工具比较,说明其非结构化归约更灵活;归约可靠性在 Coq 中机器化证明,残余证明目标可由用户在 Coq 中完成。
原文摘要(Abstract)

Program verifiers for imperative languages such as C may be annotation-based , in which assertions and invariants are put into source files and then checked, or tactic-based, where proof scripts separate from programs are interactively developed in a proof assistant such as Coq. Annotation verifiers have been more automated and convenient, but some interactive verifiers have richer assertion languages and formal proofs of soundness. We present VST-A, an annotation verifier that uses the rich assertion language of VST, leverages the formal soundness proof of VST, but allows users to describe functional correctness proofs intuitively by inserting assertions. VST-A analyzes control flow graphs, decomposes every C function into control flow paths between assertions, and reduces program verification problems into corresponding straightline Hoare triples . Compared to existing foundational program verification tools like VST and Iris, in VST-A such decompositions and reductions can nonstructural, which makes VST-A more flexible to use. VST-A’s decomposition and reduction is defined in Coq, proved sound in Coq, and computed call-by-value in Coq. The soundness proof for reduction is totally logical, independent of the complicated semantic model (and soundness proof) of VST’s Hoare triple. Because of the rich assertion language, not all reduced proof goals can be automatically checked, but the system allows users to prove residual proof goals using the full power of the Coq proof assistant.

链接与引用

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

BibTeX
@article{paperbot2615,
  title = {VST-A: A Foundationally Sound Annotation Verifier},
  author = {Litao Zhou and Jianxing Qin and Qinshi Wang and Andrew W. Appel and Qinxiang Cao},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {POPL},
  year = {2024},
  doi = {10.1145/3632911}
}