Keynote talk I: Syntax-guided synthesis

The classical formulation of the program-synthesis problem is to find a program that meets a correctness specification given as a logical formula. Recent work on program synthesis and program optimization illustrates many potential benefits of allowing the user to supplement the logical specification with a syntactic template that constrains the space of allowed implementations. The formulation of the syntax-guided synthesis problem (SyGuS) is aimed at standardizing the core computational problem common to these proposals in a logical framework [1]. The input to the SyGuS problem consists of a background theory, a semantic correctness specification for the desired program given by a logical formula, and a syntactic set of candidate implementations given by a grammar. The computational problem then is to find an implementation from the set of candidate expressions so that it satisfies the specification in the given theory. In this talk, we first describe how a wide range of problems such as automatic synthesis of loop invariants, program optimization, learning programs from examples, and program sketching, can be formalized as SyGuS instances. We then describe three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the SyGuS problem. Finally, we discuss our efforts over the past two years on defining the standardized interchange format built on top of SMT-LIB, repository of benchmarks from diverse applications, organization of the annual competition, SyGuS-COMP, of solvers, and experimental evaluation of solution strategies. More information about our project is available at www.sygus.org. This research is supported by the NSF Expeditions in Computing project ExCAPE (award CCF 1138996).