Program synthesis: challenges and opportunities
- PMID: 28871052
- PMCID: PMC5597726
- DOI: 10.1098/rsta.2015.0403
Program synthesis: challenges and opportunities
Abstract
Program synthesis is the mechanized construction of software, dubbed 'self-writing code'. Synthesis tools relieve the programmer from thinking about how the problem is to be solved; instead, the programmer only provides a description of what is to be achieved. Given a specification of what the program should do, the synthesizer generates an implementation that provably satisfies this specification. From a logical point of view, a program synthesizer is a solver for second-order existential logic. Owing to the expressiveness of second-order logic, program synthesis has an extremely broad range of applications. We survey some of these applications as well as recent trends in the algorithms that solve the program synthesis problem. In particular, we focus on an approach that has raised the profile of program synthesis and ushered in a generation of new synthesis tools, namely counter-example-guided inductive synthesis (CEGIS). We provide a description of the CEGIS architecture, followed by recent algorithmic improvements. We conjecture that the capacity of program synthesis engines will see further step change, in a manner that is transparent to the applications, which will open up an even broader range of use-cases.This article is part of the themed issue 'Verified trustworthy software systems'.
Keywords: model checking; synthesis; verification.
© 2017 The Authors.
Conflict of interest statement
The authors declare that they have no competing interests.
Figures
(taken from [9]).
(taken from [9]). (Online version in colour.)
References
-
- Church A. 1962. Logic, arithmetic, automata. In Proc. Int. Congress Mathematicians, pp. 23–35. Djursholm, Sweden: Inst. Mittag-Leffler.
-
- Manna Z, Waldinger RJ. 1971. Toward automatic program synthesis. Commun. ACM 14, 151–165. ( 10.1145/362566.362568) - DOI
-
- Kraan I, Basin DA, Bundy A. 1992. Logic program synthesis via proof planning. In Proc. of LOPSTR 92, Int. Workshop on Logic Program Synthesis and Transformation, Manchester, UK, 2–3 July 1992, pp. 1–14. Berlin, Germany: Springer.
-
- Cunningham W. 1992. The wycash portfolio management system. SIGPLAN OOPS Mess 4, 29–30. ( 10.1145/157710.157715) - DOI
-
- Kruchten P, Nord RL, Ozkaya L. 2012. Technical debt: from metaphor to theory and practice. IEEE Software 29, 18–21. ( 10.1109/MS.2012.167) - DOI
Publication types
LinkOut - more resources
Full Text Sources
Other Literature Sources