skip to main content
research-article

On the simplicity of synthesizing linked data structure operations

Published:27 October 2013Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle Scholar
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. G. Dennis. A Relational Framework for Bounded Program Verification. PhD thesis, MIT, 2009.Google ScholarGoogle Scholar
  4. S. Gulwani. Dimensions in program synthesis. In PPDP. 2010. Invited talk paper. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. Jackson. Software Abstractions: Logic, Language, and Analysis. The MIT Press, revised edition, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. K. R. M. Leino and A. Milicevic. Program extrapolation with Jennisys. In OOPSLA, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. Rayside, S. Montaghami, S. Leung, S. Yuen, S. Xu, and D. Jackson. Synthesizing iterators from abstraction functions. In GPCE, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Solar-Lezama, L. Tancau, R. Bodik, V. Saraswat, and S. A. Seshia. Combinatorial sketching for finite programs. In ASPLOS. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. Solar-Lezama, C. G. Jones, and R. Bodik. Sketching concurrent data structures. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In POPL, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. K. Yessenov. A light-weight specification language for bounded program verification. Master's thesis, MIT, 2009.Google ScholarGoogle Scholar

Index Terms

  1. On the simplicity of synthesizing linked data structure operations

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!