一句话:提出交替迭代前向与后向抽象解释来剪枝搜索空间,显著提升归纳程序合成效果。
基于示例的归纳程序合成面临程序搜索空间过大的核心挑战。已有工作虽引入抽象解释进行剪枝,但大多仅使用前向抽象解释,未能充分发挥其潜力。本文提出一种新方法:对部分程序交替迭代地执行前向与后向抽象解释。前向解释由输入推导程序可能输出,后向解释由输出反推可能输入;两者交替进行可有效判定每个部分程序的任一补全是否能满足给定输入-输出示例。作者将该方法应用于标准的语法引导合成(SyGuS)框架,从而支持多种归纳合成任务。实现后在既有工作的基准集上评估,实验表明借助精细的抽象解释技术,该方法显著优于当前最先进的方法。
A key challenge in example-based program synthesis is the gigantic search space of programs. To address this challenge, various work proposed to use abstract interpretation to prune the search space. However, most of existing approaches have focused only on forward abstract interpretation, and thus cannot fully exploit the power of abstract interpretation. In this paper, we propose a novel approach to inductive program synthesis via iterative forward-backward abstract interpretation. The forward abstract interpretation computes possible outputs of a program given inputs, while the backward abstract interpretation computes possible inputs of a program given outputs. By iteratively performing the two abstract interpretations in an alternating fashion, we can effectively determine if any completion of each partial program as a candidate can satisfy the input-output examples. We apply our approach to a standard formulation, syntax-guided synthesis (SyGuS), thereby supporting a wide range of inductive synthesis tasks. We have implemented our approach and evaluated it on a set of benchmarks from the prior work. The experimental results show that our approach significantly outperforms the state-of-the-art approaches thanks to the sophisticated abstract interpretation techniques.
@article{paperbot1997,
title = {Inductive Program Synthesis via Iterative Forward-Backward Abstract Interpretation},
author = {Yongho Yoon and Woosuk Lee and Kwangkeun Yi},
journal = {Proceedings of the ACM on Programming Languages},
volume = {7},
number = {PLDI},
year = {2023},
doi = {10.1145/3591288}
}