Synthesis from Examples

Examples are often a natural way to specify computational structures such as programs, queries, and sequences. Synthesizing such structures from example based specification has applications in automating end-user programming and in building intelligent tutoring systems. Synthesis from examples involves addressing two key technical challenges: (i) design of an efficient search algorithm — these algorithms have been based on various paradigms including version-space algebras, SAT/SMT solvers, numerical methods, and even exhaustive search, (ii) design of a user interaction model to deal with the inherent ambiguity in the example based specification. This paper illustrates various algorithmic techniques and user interaction models by describing inductive synthesizers for varied applications including synthesis of tricky bitvector algorithms, spreadsheet macros for automating repetitive data manipulation tasks, ruler/compass based geometry constructions, new algebra problems, sequences for mathematical intellisense, and grading of programming problems.

[1]  Sumit Gulwani,et al.  Synthesizing Number Transformations from Input-Output Examples , 2012, CAV.

[2]  Sumit Gulwani,et al.  Synthesizing Switching Logic Using Constraint Solving , 2009, VMCAI.

[3]  Keith H. Randall,et al.  Denali: a goal-directed superoptimizer , 2002, PLDI '02.

[4]  Sumit Gulwani,et al.  Spreadsheet table transformations from examples , 2011, PLDI '11.

[5]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[6]  Sumit Gulwani,et al.  Synthesizing geometry constructions , 2011, PLDI '11.

[7]  Sumit Gulwani,et al.  Automated Semantic Grading of Programs , 2012, ArXiv.

[8]  Sumit Gulwani,et al.  Type-directed completion of partial expressions , 2012, PLDI.

[9]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[10]  John Walkenbach Excel 2010 Formulas , 2010 .

[11]  Armando Solar-Lezama,et al.  Program synthesis by sketching , 2008 .

[12]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[13]  Daniel S. Weld,et al.  Programming by Demonstration , 2021, Computer Vision.

[14]  Sumit Gulwani,et al.  Oracle-guided component-based program synthesis , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[15]  Sumit Gulwani,et al.  Synthesizing switching logic for safety and dwell-time requirements , 2010, ICCPS '10.

[16]  Sumit Gulwani,et al.  Synthesis of loop-free programs , 2011, PLDI '11.

[17]  Sumit Gulwani,et al.  Spreadsheet data manipulation using examples , 2012, CACM.

[18]  Sumit Gulwani,et al.  Structure and Term Prediction for Mathematical Text , 2012 .

[19]  Sumit Gulwani,et al.  Path-based inductive synthesis for program inversion , 2011, PLDI '11.

[20]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[21]  Henry S. Warren,et al.  Hacker's Delight , 2002 .

[22]  Sumit Gulwani,et al.  Automatically Generating Algebra Problems , 2012, AAAI.

[23]  Sumit Gulwani,et al.  Learning Semantic String Transformations from Examples , 2012, Proc. VLDB Endow..

[24]  Pedro M. Domingos,et al.  Programming by Demonstration Using Version Space Algebra , 2003, Machine Learning.

[25]  Jacob T. Schwartz,et al.  Fast Probabilistic Algorithms for Verification of Polynomial Identities , 1980, J. ACM.

[26]  Neil Immerman,et al.  A simple inductive synthesis methodology and its applications , 2010, OOPSLA.

[27]  Brad A. Myers,et al.  Six Learning Barriers in End-User Programming Systems , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[28]  Sanjit A. Seshia,et al.  Combinatorial sketching for finite programs , 2006, ASPLOS XII.

[29]  Sumit Gulwani,et al.  Dimensions in program synthesis , 2010, Formal Methods in Computer Aided Design.

[30]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .