Program synthesis: challenges and opportunities

  title={Program synthesis: challenges and opportunities},
  author={Cristina David and Daniel Kroening},
  journal={Philosophical transactions. Series A, Mathematical, physical, and engineering sciences},
  • C. David, D. Kroening
  • Published 4 September 2017
  • Computer Science
  • Philosophical transactions. Series A, Mathematical, physical, and engineering sciences
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… 

Figures from this paper

Assuage: Assembly Synthesis Using A Guided Exploration

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

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

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.

  • S. Habershon
  • Computer Science
    The 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

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

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

  • P. Gardner
  • Computer Science
    Philosophical 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

  • S. Habershon
  • Computer Science
    Journal 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

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

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



Program synthesis by sketching

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

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

  • Armando Solar-Lezama
  • Computer Science
    International 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

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

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

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

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

  • K. Krawiec
  • Computer Science
    Studies 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

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

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.