Abstract
We argue that synthesizing operations on recursive linked data structures is not as hard as it appears and is, in fact, within reach of current SAT-based synthesis techniques - with the addition of a simple approach that we describe to decompose the problem into smaller parts. To generate smaller pieces of code, i.e., shorter routines, is obviously easier than large and complex routines, and, also, there is more potential for automating the code synthesis.
In this paper, we present a code generation algorithm for synthesizing operations of linked data structures and, as an example, describe how the proposed algorithm works to synthesize operations of an AVL tree.
- G. Adelson-Velskii and E. M. Landis. An algorithm for the organization of information. Proceedings of the USSR Academy of Sciences, 146:263--266, 1962. (Russian) English translation by Myron J. Ricci in Soviet Math. Doklady, 3(2):1259--1263, 1962.Google Scholar
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms. The MIT Press and McGraw-Hill, 2nd edition, 2001. Google Scholar
Digital Library
- G. Dennis. A Relational Framework for Bounded Program Verification. PhD thesis, MIT, 2009.Google Scholar
- S. Gulwani. Dimensions in program synthesis. In PPDP. 2010. Invited talk paper. Google Scholar
Digital Library
- S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. In PLDI, 2011. Google Scholar
Digital Library
- D. Jackson. Software Abstractions: Logic, Language, and Analysis. The MIT Press, revised edition, 2012. Google Scholar
Digital Library
- V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI, 2010. Google Scholar
Digital Library
- K. R. M. Leino and A. Milicevic. Program extrapolation with Jennisys. In OOPSLA, 2012. Google Scholar
Digital Library
- D. Rayside, S. Montaghami, S. Leung, S. Yuen, S. Xu, and D. Jackson. Synthesizing iterators from abstraction functions. In GPCE, 2012. Google Scholar
Digital Library
- A. Solar-Lezama, L. Tancau, R. Bodik, V. Saraswat, and S. A. Seshia. Combinatorial sketching for finite programs. In ASPLOS. 2006. Google Scholar
Digital Library
- A. Solar-Lezama, C. G. Jones, and R. Bodik. Sketching concurrent data structures. In PLDI, 2008. Google Scholar
Digital Library
- S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In POPL, 2010. Google Scholar
Digital Library
- K. Yessenov. A light-weight specification language for bounded program verification. Master's thesis, MIT, 2009.Google Scholar
Index Terms
On the simplicity of synthesizing linked data structure operations
Recommendations
Generalized data structure synthesis
ICSE '18: Proceedings of the 40th International Conference on Software EngineeringData structure synthesis is the task of generating data structure implementations from high-level specifications. Recent work in this area has shown potential to save programmer time and reduce the risk of defects. Existing techniques focus on data ...
On the simplicity of synthesizing linked data structure operations
GPCE '13: Proceedings of the 12th international conference on Generative programming: concepts & experiencesWe argue that synthesizing operations on recursive linked data structures is not as hard as it appears and is, in fact, within reach of current SAT-based synthesis techniques - with the addition of a simple approach that we describe to decompose the ...
Synthesizing transformations on hierarchically structured data
PLDI '16This 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-...







Comments