Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2594291.2594297acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Test-driven synthesis

Published: 09 June 2014 Publication History

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.

References

[1]
http://research.microsoft.com/en-us/um/people/sumitg/flashfill.html.
[2]
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.
[3]
S. Chandra, E. Torlak, S. Barman, and R. Bodik. Angelic debugging. ICSE, 2011.
[4]
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.
[5]
T. Granlund and R. Kenner. Eliminating branches using a superoptimizer and the GNU C compiler. PLDI, 1992.
[6]
S. Gulwani. Automating string processing in spreadsheets using input-output examples. POPL, 2011.
[7]
S. Gulwani. Synthesis from examples: Interaction models and algorithms. SYNASC, 2012.
[8]
S. Gulwani, W. R. Harris, and R. Singh. Spreadsheet data manipulation using examples. Commun. ACM, 55(8), Aug. 2012.
[9]
S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. PLDI, 2011.
[10]
S. Gulwani, V. Korthikanti, and A. Tiwari. Synthesizing geometry constructions. PLDI, 2011.
[11]
W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. PLDI, 2011.
[12]
D. Janzen and H. Saiedian. Test-driven development concepts, taxonomy, and future direction. Computer, 38(9), sept. 2005.
[13]
S. Jha, S. Gulwani, S. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. ICSE, 2010.
[14]
S. Katayama. Systematic search for lambda expressions. TFP, 2005.
[15]
S. Katayama. Efficient exhaustive generation of functional programs using monte-carlo search with iterative deepening. In PRICAI. 2008.
[16]
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.
[17]
T. Lau et al. Why PBD systems fail: Lessons learned for usable AI. In CHI 2008 Workshop on Usable AI, 2008.
[18]
T. Lau, S. Wolfman, P. Domingos, and D. Weld. Programming by demonstration using version space algebra. Machine Learning, 53(1), 2003.
[19]
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.
[20]
H. Lieberman. Your wish is my command: Programming by example. Morgan Kaufmann, 2001.
[21]
D. Mandelin, L. Xu, R. Bodík, and D. Kimelman. Jungloid mining: helping to navigate the API jungle. PLDI, 2005.
[22]
R. Martin. The transformation priority premise. http://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html, 2010.
[23]
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.
[24]
A. Menon, O. Tamuz, S. Gulwani, B. Lampson, and A. Kalai. A machine learning framework for programming by example. ICML, 2013.
[25]
R. Olsson. Inductive functional programming using incremental program transformation. Artif. Intell., 74(1), Mar. 1995.
[26]
R. Panigrahy and L. Zhang. The mind grows circuits. CoRR, abs/1203.0088, 2012.
[27]
D. Perelman, S. Gulwani, T. Ball, and D. Grossman. Type-directed completion of partial expressions. PLDI. ACM, 2012.
[28]
R. Singh and S. Gulwani. Learning semantic string transformations from examples. PVLDB, 5(8), 2012.
[29]
R. Singh and S. Gulwani. Synthesizing number transformations from input-output examples. In CAV, 2012.
[30]
A. Solar Lezama. Program Synthesis By Sketching. PhD thesis, EECS Department, University of California, Berkeley, Dec 2008.
[31]
N. Tillmann and J. De Halleux. Pex: white box test generation for .NET. TAP, 2008.
[32]
N. Tillmann, J. de Halleux, T. Xie, and J. Bishop. Pex4Fun: Teaching and learning computer science via social gaming. CSEE&T, 2012.
[33]
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.
[34]
W. Weimer, S. Forrest, C. Le Goues, and T. Nguyen. Automatic program repair with evolutionary computation. Commun. ACM, 53(5), May 2010.
[35]
W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. ICSE, 2009.

Cited By

View all
  • (2021)SynGuar: guaranteeing generalization in programming by exampleProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3468621(677-689)Online publication date: 20-Aug-2021
  • (2021)Active Learning for Inference and Regeneration of Applications that Access DatabasesACM Transactions on Programming Languages and Systems10.1145/343095242:4(1-119)Online publication date: 22-Jan-2021
  • (2020)Modeling black-box components with probabilistic synthesisProceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3425898.3426952(1-14)Online publication date: 16-Nov-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2014
619 pages
ISBN:9781450327848
DOI:10.1145/2594291
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 49, Issue 6
    PLDI '14
    June 2014
    598 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2666356
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 June 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. end-user programming
  2. program synthesis
  3. test driven development

Qualifiers

  • Research-article

Funding Sources

Conference

PLDI '14
Sponsor:

Acceptance Rates

PLDI '14 Paper Acceptance Rate 52 of 287 submissions, 18%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)27
  • Downloads (Last 6 weeks)1
Reflects downloads up to 04 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)SynGuar: guaranteeing generalization in programming by exampleProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3468621(677-689)Online publication date: 20-Aug-2021
  • (2021)Active Learning for Inference and Regeneration of Applications that Access DatabasesACM Transactions on Programming Languages and Systems10.1145/343095242:4(1-119)Online publication date: 22-Jan-2021
  • (2020)Modeling black-box components with probabilistic synthesisProceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3425898.3426952(1-14)Online publication date: 16-Nov-2020
  • (2020)Boosting component-based synthesis with API usage knowledgeProceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering10.1145/3417113.3423370(91-97)Online publication date: 21-Sep-2020
  • (2020)How Much Support Can API Recommendation Methods Provide for Component-Based Synthesis?2020 IEEE 44th Annual Computers, Software, and Applications Conference (COMPSAC)10.1109/COMPSAC48688.2020.0-155(872-881)Online publication date: Jul-2020
  • (2019)Using active learning to synthesize models of applications that access databasesProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314591(269-285)Online publication date: 8-Jun-2019
  • (2019)FrAngel: component-based synthesis with control structuresProceedings of the ACM on Programming Languages10.1145/32903863:POPL(1-29)Online publication date: 2-Jan-2019
  • (2019)Overfitting in Synthesis: Theory and PracticeComputer Aided Verification10.1007/978-3-030-25540-4_17(315-334)Online publication date: 12-Jul-2019
  • (2018)The three pillars of machine programmingProceedings of the 2nd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages10.1145/3211346.3211355(69-80)Online publication date: 18-Jun-2018
  • (2018)Towards practical program repair with on-demand candidate generationProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180245(12-23)Online publication date: 27-May-2018
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media