IMDEA Software

IMDEA initiative

Home > Events > Invited Talks > 2010 > Dimensions in Program Synthesis

Sumit Gulwani

Monday, January 25, 2010

9:15am Amphitheatre H-1002

Sumit Gulwani, Researcher, Microsoft, USA

Dimensions in Program Synthesis

Abstract:

In this talk, I will briefly describe some recent program synthesis projects that are motivated by various reasons: enabling people with no programming background to develop utility programs, helping regular programmers automatically discover tricky/mundane details, and even discovery of new algorithms. These projects target synthesis of a variety of programs such as standard undergraduate textbook algorithms (e.g., sorting, dynamic programming), program inverses (e.g., decoders, deserializers), bit-vector manipulation routines, deobfuscators, graph algorithms, data transformers, algebraic algorithms, and mutual exclusion algorithms. Our tools today scale to synthesis of about 25 lines of code within an hour.

These projects cover various design points along three dimensions in program synthesis: functional specification, search space, and search technique.

  • The functional specification is in the form of formal pre/postconditions, input-output examples, or partial/inefficient/related programs. Interactive rounds play an important role in resolving any potential under/over-specification.
  • The search space is either over imperative/functional programs, or over restricted models of computation such as regular/context-free transducers, or succinct logical representations.
  • The search technique has two components: constraint generation, and constraint solving.
  • Constraint generation is input-based, path-based, or invariant-based.
  • Constraint solving of resultant quantified formulas typically involves use of quantifier elimination techniques (such as Farkas Lemma, cover algorithms, sampling) that further enable efficient solving of quantifier-free constraints using off-the-shelf SAT/SMT solvers.