一句话:提出基于天使语义与版本空间学习的自底向上递归函数式程序合成方法。
本文研究如何以纯自底向上方式从逻辑规约合成递归函数式程序。自底向上方法常优于自顶向下,但有效方法需要执行待合成代码的子表达式,而未构造完成的递归子表达式无法直接执行。作者引入天使语义:先合成在天使语义下满足规约的程序,分析天使执行中做出的假设,据此强化原规约,再以强化后的规约重新合成。该天使合成算法基于版本空间学习,可高效处理算法中大量增量合成调用。作者实现原型 Burst,并在已有合成基准上评估,可解决基准集中 94% 的问题,优于先前工作。
We present a novel bottom-up method for the synthesis of functional recursive programs. While bottom-up synthesis techniques can work better than top-down methods in certain settings, there is no prior technique for synthesizing recursive programs from logical specifications in a purely bottom-up fashion. The main challenge is that effective bottom-up methods need to execute sub-expressions of the code being synthesized, but it is impossible to execute a recursive subexpression of a program that has not been fully constructed yet. In this paper, we address this challenge using the concept of angelic semantics. Specifically, our method finds a program that satisfies the specification under angelic semantics (we refer to this as angelic synthesis), analyzes the assumptions made during its angelic execution, uses this analysis to strengthen the specification, and finally reattempts synthesis with the strengthened specification. Our proposed angelic synthesis algorithm is based on version space learning and therefore deals effectively with many incremental synthesis calls made during the overall algorithm. We have implemented this approach in a prototype called Burst and evaluate it on synthesis problems from prior work. Our experiments show that Burst is able to synthesize a solution to 94% of the benchmarks in our benchmark suite, outperforming prior work.
@article{paperbot1550,
title = {Bottom-up synthesis of recursive functional programs using angelic execution},
author = {Anders Miltner and Adrian Trejo Nuñez and Ana Brendel and Swarat Chaudhuri and Isil Dillig},
journal = {Proceedings of the ACM on Programming Languages},
volume = {6},
number = {POPL},
year = {2022},
doi = {10.1145/3498682}
}