Program Synthesis

Sumit Gulwani, Oleksandr Polozov, Rishabh Singh
{"title":"Program Synthesis","authors":"Sumit Gulwani, Oleksandr Polozov, Rishabh Singh","doi":"10.3233/978-1-61499-385-8-43","DOIUrl":null,"url":null,"abstract":"Program synthesis is the task of automatically finding a program in the underlying programming language that satisfies the user intent expressed in the form of some specification. Since the inception of AI in the 1950s, this problem has been considered the holy grail of Computer Science. Despite inherent challenges in the problem such as ambiguity of user intent and a typically enormous search space of programs, the field of program synthesis has developed many different techniques that enable program synthesis in different real-life application domains. It is now used successfully in software engineering, biological discovery, computer-aided education, end-user programming, and data cleaning. In the last decade, several applications of synthesis in the field of programming by examples have been deployed in mass-market industrial products. This survey is a general overview of the state-of-the-art approaches to program synthesis, its applications, and subfields. We discuss the general principles common to all modern synthesis approaches such as syntactic bias, oracle-guided inductive search, and optimization techniques. We then present a literature review covering the four most common state-of-the-art techniques in program synthesis: enumerative search, constraint solving, stochastic search, and deduction-based programming by examples. We conclude with a brief list of future horizons for the field.","PeriodicalId":319733,"journal":{"name":"Software Systems Safety","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"445","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Software Systems Safety","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.3233/978-1-61499-385-8-43","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 445

Abstract

Program synthesis is the task of automatically finding a program in the underlying programming language that satisfies the user intent expressed in the form of some specification. Since the inception of AI in the 1950s, this problem has been considered the holy grail of Computer Science. Despite inherent challenges in the problem such as ambiguity of user intent and a typically enormous search space of programs, the field of program synthesis has developed many different techniques that enable program synthesis in different real-life application domains. It is now used successfully in software engineering, biological discovery, computer-aided education, end-user programming, and data cleaning. In the last decade, several applications of synthesis in the field of programming by examples have been deployed in mass-market industrial products. This survey is a general overview of the state-of-the-art approaches to program synthesis, its applications, and subfields. We discuss the general principles common to all modern synthesis approaches such as syntactic bias, oracle-guided inductive search, and optimization techniques. We then present a literature review covering the four most common state-of-the-art techniques in program synthesis: enumerative search, constraint solving, stochastic search, and deduction-based programming by examples. We conclude with a brief list of future horizons for the field.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
程序合成
程序合成的任务是在底层编程语言中自动找到满足以某种规范形式表示的用户意图的程序。自20世纪50年代人工智能诞生以来,这个问题一直被认为是计算机科学的圣杯。尽管在这个问题中存在固有的挑战,例如用户意图的模糊性和典型的巨大的程序搜索空间,程序合成领域已经开发了许多不同的技术,使程序合成能够在不同的实际应用领域中使用。它现在成功地应用于软件工程、生物学发现、计算机辅助教育、最终用户编程和数据清理。在过去十年中,实例编程领域的几种综合应用已在大众市场工业产品中得到应用。本调查是对程序合成的最先进方法,其应用和子领域的总体概述。我们讨论了所有现代合成方法共同的一般原则,如语法偏差、oracle引导的归纳搜索和优化技术。然后,我们介绍了一篇文献综述,涵盖了程序合成中最常见的四种最新技术:枚举搜索、约束求解、随机搜索和基于演绎的示例编程。最后,我们简要列出了该领域的未来前景。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Applications of Interactive Proof to Data Flow Analysis and Security SAT-based Model Checking: Interpolation, IC3, and Beyond Frameworks for Interprocedural Analysis of Concurrent Programs May/Must Abstraction-Based Software Model Checking for Sound Verification and Falsification Probabilistic Model Checking for Biology
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1