This paper is concerned with synthesizing programs based on black-box oracles: we are interested in the case where there exists an executable implementation of a component or library, but its internal structure is unknown. We are provided with just an API or function signature, and aim to synthesize a program with equivalent behavior. To attack this problem, we detail Presyn: a program synthesizer designed for flexible interoperation with existing programs and compiler toolchains. Presyn uses high-level imperative control-flow structures and a pair of cooperating predictive models to efficiently narrow the space of potential programs. These models can be trained effectively on small corpora of synthesized examples. We evaluate Presyn against five leading program synthesizers on a collection of 112 synthesis benchmarks collated from previous studies and real-world software libraries. We show that Presyn is able to synthesize a wider range of programs than each of them with less human input. We demonstrate the application of our approach to real-world code and software engineering problems with two case studies: accelerator library porting and detection of duplicated library reimplementations.


翻译:本文涉及基于黑箱或黑器的合成程序: 我们感兴趣的是存在可执行的组件或图书馆, 但其内部结构未知。 我们仅获得一个 API 或功能签名, 目的是以同等行为合成一个程序。 为了解决这个问题, 我们详细介绍Presyn: 一个程序合成器, 设计用于与现有程序和编译工具链进行灵活互动的方案合成器。 Presyn 使用高层次的紧急控制流结构, 以及一对合作预测模型, 以有效缩小潜在程序的空间。 这些模型可以进行有效的合成实例小公司培训。 我们根据从以往研究和现实世界软件库中整理的112个综合基准收集的五个主要程序合成器进行评估。 我们显示Presyn能够将比每个程序都更广泛的程序合成器, 使用较少的人文输入。 我们通过两个案例研究, 展示了我们对真实世界代码和软件工程问题的方法的应用: 加速器图书馆移植和检测重复的图书馆执行。

0
下载
关闭预览

相关内容

在科学,计算和工程学中,黑盒是一种设备,系统或对象,可以根据其输入和输出(或传输特性)对其进行查看,而无需对其内部工作有任何了解。 它的实现是“不透明的”(黑色)。 几乎任何事物都可以被称为黑盒:晶体管,引擎,算法,人脑,机构或政府。为了使用典型的“黑匣子方法”来分析建模为开放系统的事物,仅考虑刺激/响应的行为,以推断(未知)盒子。 该黑匣子系统的通常表示形式是在该方框中居中的数据流程图。黑盒的对立面是一个内部组件或逻辑可用于检查的系统,通常将其称为白盒(有时也称为“透明盒”或“玻璃盒”)。
100+篇《自监督学习(Self-Supervised Learning)》论文最新合集
专知会员服务
164+阅读 · 2020年3月18日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 2019年10月11日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
计算机类 | 11月截稿会议信息9条
Call4Papers
6+阅读 · 2018年10月14日
【NIPS2018】接收论文列表
专知
5+阅读 · 2018年9月10日
论文浅尝 |「知识表示学习」专题论文推荐
开放知识图谱
13+阅读 · 2018年2月12日
条件GAN重大改进!cGANs with Projection Discriminator
CreateAMind
8+阅读 · 2018年2月7日
「知识表示学习」专题论文推荐 | 每周论文清单
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年11月30日
Arxiv
0+阅读 · 2020年11月29日
Arxiv
0+阅读 · 2020年11月26日
VIP会员
相关资讯
强化学习的Unsupervised Meta-Learning
CreateAMind
17+阅读 · 2019年1月7日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
计算机类 | 11月截稿会议信息9条
Call4Papers
6+阅读 · 2018年10月14日
【NIPS2018】接收论文列表
专知
5+阅读 · 2018年9月10日
论文浅尝 |「知识表示学习」专题论文推荐
开放知识图谱
13+阅读 · 2018年2月12日
条件GAN重大改进!cGANs with Projection Discriminator
CreateAMind
8+阅读 · 2018年2月7日
「知识表示学习」专题论文推荐 | 每周论文清单
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
Auto-Encoding GAN
CreateAMind
7+阅读 · 2017年8月4日
相关论文
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年12月1日
Arxiv
0+阅读 · 2020年11月30日
Arxiv
0+阅读 · 2020年11月29日
Arxiv
0+阅读 · 2020年11月26日
Top
微信扫码咨询专知VIP会员