# Program synthesis: challenges and opportunities

@article{David2017ProgramSC, title={Program synthesis: challenges and opportunities}, author={Cristina David and Daniel Kroening}, journal={Philosophical transactions. Series A, Mathematical, physical, and engineering sciences}, year={2017}, volume={375} }

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…

## 16 Citations

### Assuage: Assembly Synthesis Using A Guided Exploration

- Computer ScienceUIST
- 2021

Assuage is a parallel interactive assembly synthesizer that engages the user as an active collaborator, enabling synthesis to scale beyond current limits, and exposes information about the underlying synthesis process using multiple representations to help users guide synthesis.

### Generating Agent Based Models From Scratch With Genetic Programming

- Computer ScienceALIFE
- 2021

This work demonstrates a new domain-independent approach which is able to evolve interpretable agent logic of an ABM from scratch using a flexible domain-specific language (DSL) which consists of basic mathematical building blocks.

### Automated and Sound Synthesis of Lyapunov Functions with SMT Solvers

- MathematicsTACAS
- 2020

The overall technique is evaluated over a broad set of benchmarks, which shows that this methodology not only scales to 10-dimensional models within reasonable computational time, but also offers a novel soundness proof for the generated Lyapunov functions and their domains of validity.

### Solving the Schrödinger equation using program synthesis.

- Computer ScienceThe Journal of chemical physics
- 2021

We demonstrate that a program synthesis approach based on a linear code representation can be used to generate algorithms that approximate the ground-state solutions of one-dimensional…

### Automated Synthesis of Mechanisms

- Computer ScienceIJCAI
- 2022

This paper shows that Quantitative Strategy Logic is a perfect candidate for specifying mechanisms as it can express complex strategic and quantitative properties and solve automated mechanism design in two cases: when the number of actions is bounded, and when agents play in turn.

### M3: Semantic API Migrations

- Computer Science2020 35th IEEE/ACM International Conference on Automated Software Engineering (ASE)
- 2020

This paper proposes a novel approach, where probabilistic program synthesis is used to semantically model the behavior of library functions, and uses an SMT-based code search engine to discover similar code in user applications that provide potential locations for API migrations.

### Verified trustworthy software systems

- Computer SciencePhilosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences
- 2017

The challenge is to bring program specification and verification to the heart of the software design process, based on outdated ideas of trusting that the internal, unpublished procedures of a company are robust and the assumption that the developer is not malicious.

### Program Synthesis of Sparse Algorithms for Wave Function and Energy Prediction in Grid-Based Quantum Simulations

- Computer ScienceJournal of chemical theory and computation
- 2022

It is anticipated that PS-generated algorithms based on effective Hamiltonian approximations, such as those proposed here, could be useful in direct simulations of quantum dynamics via wave function propagation and evaluation of molecular electronic structure.

### Neurosymbolic Deep Generative Models for Sequence Data with Relational Constraints

- Computer Science
- 2020

This work proposes a novel approach for incorporating structure in the form of relational constraints between different subcomponents of an example (e.g., lines of a poem or measures of music) by proposing a novel program synthesis algorithm that infers the relational constraints present in the training data and then trains the models based on the resulting relational constraints.

### Deceiving neural source code classifiers: finding adversarial examples with grammatical evolution

- Computer ScienceGECCO Companion
- 2021

This work presents an evolutionary approach for assessing the robustness of a system trained in the detection of software vulnerabilities. By applying a Grammatical Evolution genetic algorithm, and…

## References

SHOWING 1-10 OF 47 REFERENCES

### Program synthesis by sketching

- Computer Science
- 2008

Sketching is introduced, a new style of synthesis that offers a fresh approach to the synergy problem and shows that sketching is a viable approach to making synthesis practical in a general programming context.

### Syntax-guided synthesis

- Computer Science2013 Formal Methods in Computer-Aided Design
- 2013

This work describes three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, reports on prototype implementations, and presents experimental results on an initial set of benchmarks.

### Program sketching

- Computer ScienceInternational Journal on Software Tools for Technology Transfer
- 2012

CEGIS combines a SAT-based inductive synthesizer with an automated validation procedure, a bounded model-checker, that checks whether the candidate implementation produced by inductive synthesis is indeed correct and to produce new counterexamples.

### Using Program Synthesis for Program Analysis

- Computer ScienceLPAR
- 2015

This paper identifies a fragment of second-order logic with restricted quantification that is expressive enough to capture numerous static analysis problems e.g. safety proving, bug finding, termination and non-termination proving, superoptimisation.

### Using Program Synthesis for Program Analysis

- Computer Science
- 2018

This paper identifies a fragment of second-order logic with restricted quantification that is expressive enough to capture numerous static analysis problems and builds a decision procedure for the synthesis fragment over finite domains in the form of a program synthesiser.

### Logic Program Synthesis via Proof Planning

- Computer ScienceLOPSTR
- 1992

A novel approach to automating the synthesis of logic programs as a by-product of the planning of a verification proof by proving program verification conjectures in a sorted, first-order theory.

### Toward automatic program synthesis

- Computer ScienceCACM
- 1971

An elementary outline of the theorem-proving approach to automatic program synthesis is given, without dwelling on technical details, and the relation between the version of the induction rule used and the form of the program constructed is explored.

### Behavioral Program Synthesis with Genetic Programming

- Computer ScienceStudies in Computational Intelligence
- 2016

Genetic programming (GP) is a popular heuristic methodology of program synthesis with origins in evolutionary computation. In this generate-and-test approach, candidate programs are iteratively…

### A Deductive Approach to Program Synthesis

- Computer ScienceTOPL
- 1980

A deductive approach to program synthesis is presented for the construction of recursive programs and relies on a theorem-proving method that combines the features of transformation rules, unification, and mathematical induction within a single framework.

### Synthesizing geometry constructions

- Computer SciencePLDI '11
- 2011

This paper describes a new program synthesis technique based on three key insights based on reduction of symbolic reasoning to concrete reasoning, extending the instruction set of the programming language with higher level primitives, and pruning the forward exhaustive search using a goal-directed heuristic.