paperbot · PL 论文追踪

全部论文 待读 收藏

P1 Engineering a Formally Verified Automated Bug Finder

工程化一个经过形式验证的自动缺陷查找器
FSE Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering2023匹配度 5/10 · 论文聚焦符号执行的形式语义与Coq验证,属于程序分析与形式化验证,与用户对静态分析及形式化验证的兴趣有部分重叠,但未涉及LLM/Agent、浮点或贝叶斯程序分析等核心交叉方向,因此匹配度中等。引用 8 inbox
Arthur Correnson, Dominic Steinhöfel
crossref: 2026-09-12dblp: 2026-09-12arxiv: 2026-09-12

AI 速览

一句话:提出用操作语义与符号语义关联来工程化可证明可靠且完备的符号执行缺陷查找器,并在 Coq 中验证 WiSE。

符号执行用符号输入探索多条程序路径,广泛用于测试,但其语义基础不足,难以保证报告缺陷可复现(可靠性)以及能找全缺陷(完备性)。本文提出系统方法,将语言操作语义与符号语义关联,工程化可证明可靠且完备的符号执行缺陷查找器,并覆盖搜索策略与约束求解器剪枝等实现细节的正确性。作者在 Coq 中实现原型 WiSE 并证明其可靠完备,随后自动抽取 OCaml 实现,并将 WiSE 转为功能等价的 Python 版 PyWiSE,表明设计原则可脱离交互式证明助手生态。

问题
符号执行的语义基础不足,无法令人满意地回答缺陷查找器的可靠性(误报)与完备性(漏报)问题,尤其包括搜索策略和约束求解器剪枝等实现细节的正确性。
方法
通过将编程语言的操作语义与符号语义关联,提出工程化可证明可靠且完备的符号执行缺陷查找器的系统方法,并在 Coq 中实现 WiSE,支持抽取 OCaml 和转写为 Python。
评估
在 Coq 中机器化证明 WiSE 的可靠性与完备性,自动抽取 OCaml 实现并构造功能等价的 PyWiSE,验证设计原则可脱离交互式证明助手生态。
原文摘要(Abstract)

Symbolic execution is a program analysis technique executing programs with symbolic instead of concrete inputs. This principle allows for exploring many program paths at once. Despite its wide adoption—in particular for program testing–little effort was dedicated to studying the semantic foundations of symbolic execution. Without these foundations, critical questions regarding the correctness of symbolic executors cannot be satisfyingly answered: Can a reported bug be reproduced, or is it a false positive (soundness)? Can we be sure to find all bugs if we let the testing tool run long enough (completeness)? This paper presents a systematic approach for engineering provably sound and complete symbolic execution-based bug finders by relating a programming language’s operational semantics with a symbolic semantics. In contrast to prior work on symbolic execution semantics, we address the correctness of critical implementation details of symbolic bug finders, including the search strategy and the role of constraint solvers to prune the search space. We showcase our approach by implementing WiSE, a prototype of a verified bug finder for an imperative language, in the Coq proof assistant and proving it sound and complete. We demonstrate that the design principles of WiSE survive outside the ecosystem of interactive proof assistants by (1) automatically extracting an OCaml implementation and (2) transforming WiSE to PyWiSE, a functionally equivalent Python version.

链接与引用

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

BibTeX
@inproceedings{CorrensonS23,
  title = {Engineering a Formally Verified Automated Bug Finder},
  author = {Arthur Correnson and Dominic Steinhöfel},
  booktitle = {FSE},
  year = {2023},
  doi = {10.1145/3611643.3616290}
}