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’.
Subject
General Physics and Astronomy,General Engineering,General Mathematics
Cited by
22 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Program Synthesis on Single-Layer Loop Behavior in Pure Functional Programming;2024 IEEE Congress on Evolutionary Computation (CEC);2024-06-30
2. VeRe: Verification Guided Synthesis for Repairing Deep Neural Networks;Proceedings of the IEEE/ACM 46th International Conference on Software Engineering;2024-02-06
3. Plant science in the age of simulation intelligence;Frontiers in Plant Science;2024-01-16
4. LTL Learning on GPUs;Lecture Notes in Computer Science;2024
5. Parallel Assembly Synthesis;Lecture Notes in Computer Science;2024