Abstract
Programming-by-example technologies empower end-users to create simple programs merely by providing input/output examples. Existing systems are designed around solvers specialized for a specific set of data types or domain-specific language (DSL). We present a program synthesizer which can be parameterized by an arbitrary DSL that may contain conditionals and loops and therefore is able to synthesize programs in any domain. In order to use our synthesizer, the user provides a sequence of increasingly sophisticated input/output examples along with an expert-written DSL definition. These two inputs correspond to the two key ideas that allow our synthesizer to work in arbitrary domains. First, we developed a novel iterative synthesis technique inspired by test-driven development---which also gives our technique the name of test-driven synthesis---where the input/output examples are consumed one at a time as the program is refined. Second, the DSL allows our system to take an efficient component-based approach to enumerating possible programs. We present applications of our synthesis methodology to end-user programming for transformations over strings, XML, and table layouts. We compare our synthesizer on these applications to state-of-the-art DSL-specific synthesizers as well to the general purpose synthesizer Sketch.
- http://research.microsoft.com/en-us/um/people/sumitg/flashfill.html.Google Scholar
- R. Alur, R. Bodik, G. Juniwal, M. M. Martin, M. Raghothaman, S. A. Seshia, R. Singh, A. Solar-Lezama, E. Torlak, and A. Udupa. Syntax-guided synthesis. In FMCAD, 2013.Google Scholar
Cross Ref
- S. Chandra, E. Torlak, S. Barman, and R. Bodik. Angelic debugging. ICSE, 2011. Google Scholar
Digital Library
- A. Cypher, D. Halbert, D. Kurlander, H. Lieberman, D. Maulsby, B. Myers, and A. Turransky. Watch What I Do: Programming by Demonstration. MIT press, 1993. Google Scholar
Digital Library
- T. Granlund and R. Kenner. Eliminating branches using a superoptimizer and the GNU C compiler. PLDI, 1992. Google Scholar
Digital Library
- S. Gulwani. Automating string processing in spreadsheets using input-output examples. POPL, 2011. Google Scholar
Digital Library
- S. Gulwani. Synthesis from examples: Interaction models and algorithms. SYNASC, 2012. Google Scholar
Digital Library
- S. Gulwani, W. R. Harris, and R. Singh. Spreadsheet data manipulation using examples. Commun. ACM, 55(8), Aug. 2012. Google Scholar
Digital Library
- S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. PLDI, 2011. Google Scholar
Digital Library
- S. Gulwani, V. Korthikanti, and A. Tiwari. Synthesizing geometry constructions. PLDI, 2011. Google Scholar
Digital Library
- W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. PLDI, 2011. Google Scholar
Digital Library
- D. Janzen and H. Saiedian. Test-driven development concepts, taxonomy, and future direction. Computer, 38(9), sept. 2005. Google Scholar
Digital Library
- S. Jha, S. Gulwani, S. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. ICSE, 2010. Google Scholar
Digital Library
- S. Katayama. Systematic search for lambda expressions. TFP, 2005.Google Scholar
- S. Katayama. Efficient exhaustive generation of functional programs using monte-carlo search with iterative deepening. In PRICAI. 2008. Google Scholar
Digital Library
- E. Kitzelmann. Inductive programming: A survey of program synthesis techniques. In U. Schmid, E. Kitzelmann, and R. Plasmeijer, editors, Approaches and Applications of Inductive Programming, volume 5812 of Lecture Notes in Computer Science. 2010.Google Scholar
- T. Lau et al. Why PBD systems fail: Lessons learned for usable AI. In CHI 2008 Workshop on Usable AI, 2008.Google Scholar
- T. Lau, S. Wolfman, P. Domingos, and D. Weld. Programming by demonstration using version space algebra. Machine Learning, 53(1), 2003. Google Scholar
Digital Library
- C. Le Goues, T. Nguyen, S. Forrest, and W. Weimer. Genprog: A generic method for automatic software repair. IEEE Trans. Softw. Eng., 38(1), Jan. 2012. Google Scholar
Digital Library
- H. Lieberman. Your wish is my command: Programming by example. Morgan Kaufmann, 2001.Google Scholar
Digital Library
- D. Mandelin, L. Xu, R. Bodík, and D. Kimelman. Jungloid mining: helping to navigate the API jungle. PLDI, 2005. Google Scholar
Digital Library
- R. Martin. The transformation priority premise. http://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html, 2010.Google Scholar
- R. I. Mckay, N. X. Hoai, P. A. Whigham, Y. Shan, and M. ONeill. Grammar-based genetic programming: a survey. Genetic Programming and Evolvable Machines, 11(3--4):365--396, 2010. Google Scholar
Digital Library
- A. Menon, O. Tamuz, S. Gulwani, B. Lampson, and A. Kalai. A machine learning framework for programming by example. ICML, 2013.Google Scholar
- R. Olsson. Inductive functional programming using incremental program transformation. Artif. Intell., 74(1), Mar. 1995. Google Scholar
Digital Library
- R. Panigrahy and L. Zhang. The mind grows circuits. CoRR, abs/1203.0088, 2012.Google Scholar
- D. Perelman, S. Gulwani, T. Ball, and D. Grossman. Type-directed completion of partial expressions. PLDI. ACM, 2012. Google Scholar
Digital Library
- R. Singh and S. Gulwani. Learning semantic string transformations from examples. PVLDB, 5(8), 2012. Google Scholar
Digital Library
- R. Singh and S. Gulwani. Synthesizing number transformations from input-output examples. In CAV, 2012. Google Scholar
Digital Library
- A. Solar Lezama. Program Synthesis By Sketching. PhD thesis, EECS Department, University of California, Berkeley, Dec 2008.Google Scholar
- N. Tillmann and J. De Halleux. Pex: white box test generation for .NET. TAP, 2008. Google Scholar
Digital Library
- N. Tillmann, J. de Halleux, T. Xie, and J. Bishop. Pex4Fun: Teaching and learning computer science via social gaming. CSEE&T, 2012. Google Scholar
Digital Library
- E. Torlak and R. Bodik. Growing solver-aided languages with Rosette. In Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software, pages 135--152. ACM, 2013. Google Scholar
Digital Library
- W. Weimer, S. Forrest, C. Le Goues, and T. Nguyen. Automatic program repair with evolutionary computation. Commun. ACM, 53(5), May 2010. Google Scholar
Digital Library
- W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. ICSE, 2009. Google Scholar
Digital Library
Recommendations
Test-driven synthesis
PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and ImplementationProgramming-by-example technologies empower end-users to create simple programs merely by providing input/output examples. Existing systems are designed around solvers specialized for a specific set of data types or domain-specific language (DSL). We ...
Can reactive synthesis and syntax-guided synthesis be friends?
PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and ImplementationWhile reactive synthesis and syntax-guided synthesis (SyGuS) have seen enormous progress in recent years, combining the two approaches has remained a challenge. In this work, we present the synthesis of reactive programs from Temporal Stream Logic ...
Optimizing synthesis with metasketches
POPL '16Many advanced programming tools---for both end-users and expert developers---rely on program synthesis to automatically generate implementations from high-level specifications. These tools often need to employ tricky, custom-built synthesis algorithms ...







Comments