paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Boosting Program Reduction with the Missing Piece of Syntax-Guided Transformations

补全语法引导变换以提升程序归约
OOPSLA 9(OOPSLA2)2025匹配度 2/10 · 该论文研究程序归约与语法引导变换,属于测试/调试和程序变换方向,但不涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析,与用户画像的核心交叉方向无直接关联。引用 0 inbox
Zhenyang Xu, Yongqiang Tian, Mengxiao Zhang, Chengnian Sun
crossref: 2026-09-10

AI 速览

一句话:提出结构形式转换 SFC 补全语法引导变换,并设计三种归约方法,显著提升程序归约的最小化与规范化效果。

程序归约用于测试和调试语言处理器:给定触发 bug 的程序,寻找能触发同一 bug 的最小规范化程序。已有语法引导变换会过度剪枝搜索空间,遗漏更小结果。本文提出新语法引导变换 SFC(结构形式转换),并基于它设计更小结构替换、标识符消除和结构规范化三种归约方法,集成到 Perses 与 Vulcan 得到 SFC Perses 和 SFC Vulcan。在 C、Rust、SMT-LIBv2 基准上,二者在最小化和规范化上显著优于原工具,SFC Perses 最多多减小 41.05%,SFC Vulcan 最多多减小 14.51%;在 46 个唯一 bug 的 C 程序实验中,分别多归约 442 和 435 个重复程序。

问题
语言处理器测试中,程序归约需在保持触发同一 bug 的前提下最小化并规范化程序;已有语法引导变换过度剪枝搜索空间,难以发现更小结果。
方法
提出语法引导变换 Structure Form Conversion(SFC),并基于它设计更小结构替换、标识符消除、结构规范化三种归约方法,集成到 Perses 和 Vulcan。
评估
在 C、Rust、SMT-LIBv2 基准及 3,796 个 C 程序(46 个唯一 bug)上,与 Perses/Vulcan 对比最小化、规范化、重复程序归约数量与耗时。
原文摘要(Abstract)

Program reduction is a widely used technique in testing and debugging language processors. Given a program that triggers a bug in a language processor, program reduction searches for a canonicalized and minimized program that triggers the same bug, thereby facilitating bug deduplication and simplifying the debugging process. To improve reduction performance without sacrificing generality, prior research has leveraged the formal syntax of the programming language as guidance. Two key syntax-guided transformations—Compatible Substructure Hoisting and Quantified Node Reduction—were introduced to enhance this process. While these transformations have proven effective to some extent, their application excessively prunes the search space, preventing the discovery of many smaller results. Consequently, there remains significant potential for further improvement in overall reduction performance. To this end, we propose a novel syntax-guided transformation named Structure Form Conversion (SFC) to complement the aforementioned two transformations. Building on SFC, we introduce three reduction methods: Smaller Structure Replacement, Identifier Elimination, and Structure Canonicalization, designed to effectively and efficiently leverage SFC for program reduction. By integrating these reduction methods to previous language-agnostic program reducers, Perses and Vulcan, we implement two prototypes named SFC Perses and SFC Vulcan . Extensive evaluations show that SFC Perses and SFC Vulcan significantly outperforms Perses and Vulcan in both minimization and canonicalization. Specifically, compared to Perses, SFC Perses produces programs that are 36.82%, 18.71%, and 41.05% smaller on average on the C, Rust, and SMT-LIBv2 benchmarks at the cost of 3.65×, 16.99×, and 1.42× the time of Perses, respectively. Similarly, SFC Vulcan generates programs that are 14.51%, 7.65%, and 7.66% smaller than those produced by Vulcan at the cost of 1.56×, 2.35×, and 1.42× the execution time of Vulcan. Furthermore, in an experiment with a benchmark suite containing 3,796 C programs that trigger 46 unique bugs, SFC Perses and SFC Vulcan reduce 442 and 435 more duplicates (programs that trigger the same bug) to identical programs than Perses and Vulcan, respectively.

链接与引用

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

BibTeX
@article{paperbot2890,
  title = {Boosting Program Reduction with the Missing Piece of Syntax-Guided Transformations},
  author = {Zhenyang Xu and Yongqiang Tian and Mengxiao Zhang and Chengnian Sun},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763053}
}