Abstract
This paper presents a new approach for synthesizing transformations on tree-structured data, such as Unix directories and XML documents. We consider a general abstraction for such data, called hierarchical data trees (HDTs) and present a novel example-driven synthesis algorithm for HDT transformations. Our central insight is to reduce the problem of synthesizing tree transformers to the synthesis of list transformations that are applied to the paths of the tree. The synthesis problem over lists is solved using a new algorithm that combines SMT solving and decision tree learning. We have implemented our technique in a system called HADES and show that HADES can automatically synthesize a variety of interesting transformations collected from online forums.
- Automator. http://automator.us.Google Scholar
- A. Albarghouthi, S. Gulwani, and Z. Kincaid. Recursive program synthesis. In CAV, pages 934–950, 2013.Google Scholar
- D. W. Barowy, S. Gulwani, T. Hart, and B. G. Zorn. Flashrelate: extracting relational data from semi-structured spreadsheets using examples. In PLDI, pages 218–228, 2015. Google Scholar
Digital Library
- T. A. Beyene, S. Chaudhuri, C. Popeea, and A. Rybalchenko. A constraint-based approach to solving games on infinite graphs. In POPL, pages 221–234, 2014. Google Scholar
Digital Library
- Y. Brun and M. D. Ernst. Finding latent code errors via machine learning over program executions. In ICSE, pages 480–490, 2004. Google Scholar
Digital Library
- J. Carme, R. Gilleron, A. Lemay, and J. Niehren. Interactive learning of node selecting tree transducer. Machine Learning, 66(1):33–67, 2007. Google Scholar
Digital Library
- L. De Moura and N. Bjørner. Z3: An efficient smt solver. In Tools and Algorithms for the Construction and Analysis of Systems, pages 337–340. Springer, 2008. Google Scholar
Digital Library
- F. Drewes and J. Högberg. Learning a regular tree language from a teacher. In Developments in Language Theory, pages 279–291. Springer, 2003. Google Scholar
Digital Library
- J. Eisner. Learning non-isomorphic tree mappings for machine translation. In Proceedings of Meeting on Association for Computational Linguistics, pages 205–208, 2003. Google Scholar
Digital Library
- J. K. Feser, S. Chaudhuri, and I. Dillig. Synthesizing data structure transformations from input-output examples. In PLDI, pages 229–239, 2015. Google Scholar
Digital Library
- D. Gopinath, S. Khurshid, D. Saha, and S. Chandra. Dataguided repair of selection statements. In ICSE, pages 243– 253. ACM, 2014. Google Scholar
Digital Library
- S. Gulwani. Automating string processing in spreadsheets using input-output examples. In POPL, pages 317–330. ACM, 2011. Google Scholar
Digital Library
- S. Gulwani, M. Mayer, F. Niksic, and R. Piskac. Strisynth: synthesis for live programming. In Proceedings of the 37th International Conference on Software Engineering-Volume 2, pages 701–704. IEEE Press, 2015. Google Scholar
Digital Library
- W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. In PLDI, pages 317–328. ACM, 2011. Google Scholar
Digital Library
- E. Kitzelmann. Analytical inductive functional programming. In Logic-Based Program Synthesis and Transformation, pages 87–102. Springer, 2009. Google Scholar
Digital Library
- V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI, pages 316–329, 2010. Google Scholar
Digital Library
- V. Le and S. Gulwani. Flashextract: A framework for data extraction by examples. In PLDI, page 55, 2014. Google Scholar
Digital Library
- P. Osera and S. Zdancewic. Type-and-example-directed program synthesis. In PLDI, pages 619–630, 2015. Google Scholar
Digital Library
- D. Perelman, S. Gulwani, D. Grossman, and P. Provost. Testdriven synthesis. In PLDI, page 43, 2014. Google Scholar
Digital Library
- J. R. Quinlan. Induction of decision trees. Machine learning, 1(1):81–106, 1986. Google Scholar
Digital Library
- W. C. Rounds. Mappings and grammars on trees. Theory of Computing Systems, 4(3):257–287, 1970.Google Scholar
- S. Sankaranarayanan, S. Chaudhuri, F. Ivanˇci´c, and A. Gupta. Dynamic inference of likely data preconditions over predicates by tree learning. In Proceedings of the 2008 international symposium on Software testing and analysis, pages 295–306. ACM, 2008. Google Scholar
Digital Library
- R. Singh and S. Gulwani. Synthesizing number transformations from input-output examples. In Computer Aided Verification, pages 634–651. Springer, 2012. Google Scholar
Digital Library
- A. Solar-Lezama, L. Tancau, R. Bod´ık, S. A. Seshia, and V. A. Saraswat. Combinatorial sketching for finite programs. In ASPLOS, pages 404–415, 2006. Google Scholar
Digital Library
- S. Srivastava, S. Gulwani, and J. S. Foster. Template-based program verification and program synthesis. STTT, 15(5-6): 497–518, 2013.Google Scholar
Digital Library
- S. Zhang and Y. Sun. Automatically synthesizing sql queries from input-output examples. In Automated Software Engineering (ASE), 2013 IEEE/ACM 28th International Conference on, pages 224–234. IEEE, 2013.Google Scholar
Index Terms
Synthesizing transformations on hierarchically structured data
Recommendations
Synthesizing data structure transformations from input-output examples
PLDI '15We present a method for example-guided synthesis of functional programs over recursive data structures. Given a set of input-output examples, our method synthesizes a program in a functional language with higher-order combinators like map and fold. The ...
Synthesizing transformations on hierarchically structured data
PLDI '16: Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and ImplementationThis paper presents a new approach for synthesizing transformations on tree-structured data, such as Unix directories and XML documents. We consider a general abstraction for such data, called hierarchical data trees (HDTs) and present a novel example-...
Synthesizing data structure transformations from input-output examples
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationWe present a method for example-guided synthesis of functional programs over recursive data structures. Given a set of input-output examples, our method synthesizes a program in a functional language with higher-order combinators like map and fold. The ...







Comments