paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Pushing the Limit of 1-Minimality of Language-Agnostic Program Reduction

突破语言无关程序约简的 1-极小性极限
OOPSLA 7(OOPSLA1)2023匹配度 3/10 · 该论文属于程序语言与调试/程序缩减方向,关注语言无关的 1-minimality 改进,与 PL 工程实现和 benchmark 有一定邻近性;但它不涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析,因此与用户当前核心研究方向关联较弱。引用 19 inbox
Zhenyang Xu, Yongqiang Tian, Mengxiao Zhang, Gaosen Zhao, Yu Jiang, Chengnian Sun
crossref: 2026-09-10

AI 速览

一句话:提出语言无关框架 Vulcan,通过细粒度程序变换进一步缩小 AGR 约简结果,突破 1-极小性。

程序约简通过最小化触发缺陷的程序来辅助调试语言实现。语言无关约简器(AGR)通用但易陷入 1-极小性,结果仍含大量无关元素;语言相关约简器(SPR)结果更小却需针对每种语言专门实现。本文提出语言无关框架 Vulcan,利用语言形式语法执行激进的细粒度程序变换,为其他约简算法创造机会或直接删除无关元素,从而突破 AGR 的 1-极小性。作者给出三种变换示例,并在 C、Rust 与 SMT-LIBv2 基准上评估。Vulcan 相比 Perses 平均减少 33.55%、21.61%、31.34% 的 token,还能将 C-Reduce 结果再缩小 10.07%。

问题
程序约简是 NP 完全问题,现有 AGR 只能产生 1-极小结果,常包含大量与缺陷无关的程序元素;而 SPR 虽结果更小却语言特定、实现成本高。
方法
提出语言无关框架 Vulcan,利用语言的形式语法进行激进的细粒度程序变换,为其他约简算法创造约简机会或直接删除无关元素,从而进一步突破 AGR 结果的 1-极小性。
评估
在 C、Rust、SMT-LIBv2 等多语言基准上,Vulcan 相比 Perses 平均分别减少 33.55%、21.61%、31.34% 的 token,并能将 C-Reduce 结果再缩小 10.07%。
原文摘要(Abstract)

Program reduction has demonstrated its usefulness in facilitating debugging language implementations in practice, by minimizing bug-triggering programs. There are two categories of program reducers: language-agnostic program reducers (AGRs) and language-specific program reducers (SPRs). AGRs, such as HDD and Perses, are generally applicable to various languages; SPRs are specifically designed for one language with meticulous thoughts and significant engineering efforts, e.g., C-Reduce for reducing C/C++ programs. Program reduction is an NP-complete problem: finding the globally minimal program is usually infeasible. Thus all existing program reducers resort to producing 1-minimal results, a special type of local minima. However, 1-minimality can still be large and contain excessive bug-irrelevant program elements. This is especially the case for AGR-produced results because of the generic reduction algorithms used in AGRs. An SPR often yields smaller results than AGRs for the language for which the SPR has customized reduction algorithms. But SPRs are not language-agnostic, and implementing a new SPR for a different language requires significant engineering efforts. This paper proposes Vulcan, a language-agnostic framework to further minimize AGRs-produced results by exploiting the formal syntax of the language to perform aggressive program transformations, in hope of creating reduction opportunities for other reduction algorithms to progress or even directly deleting bugirrelevant elements from the results. Our key insights are two-fold. First, the program transformations in all existing program reducers including SPRs are not diverse enough, which traps these program reducers early in 1-minimality. Second, compared with the original program, the results of AGRs are much smaller, and time-wise it is affordable to perform diverse program transformations that change programs but do not necessarily reduce the sizes of the programs directly. Within the Vulcan framework, we proposed three simple examples of fine-grained program transformations to demonstrate that Vulcan can indeed further push the 1-minimality of AGRs. By performing these program transformations, a 1-minimal program might become a non-1-minimal one that can be further reduced later. Our extensive evaluations on multilingual benchmarks including C, Rust and SMT-LIBv2 programs strongly demonstrate the effectiveness and generality of Vulcan. Vulcan outperforms the state-of-the-art language-agnostic program reducer Perses in size in all benchmarks: On average, the result of Vulcan contains 33.55%, 21.61%, and 31.34% fewer tokens than that of Perses on C, Rust, and SMT-LIBv2 subjects respectively. Vulcan can produce even smaller results if more reduction time is allocated. Moreover, for the C programs that are reduced by C-Reduce, Vulcan is even able to further minimize them by 10.07%.

链接与引用

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

BibTeX
@article{paperbot2027,
  title = {Pushing the Limit of 1-Minimality of Language-Agnostic Program Reduction},
  author = {Zhenyang Xu and Yongqiang Tian and Mengxiao Zhang and Gaosen Zhao and Yu Jiang and Chengnian Sun},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA1},
  year = {2023},
  doi = {10.1145/3586049}
}