skip to main content
research-article
Free Access

Software synthesis procedures

Authors Info & Claims
Published:01 February 2012Publication History
Skip Abstract Section

Abstract

Automated synthesis of program fragments from specifications can make programs easier to write and easier to reason about. To integrate synthesis into programming languages, software synthesis algorithms should behave in a predictable way: they should succeed for a well-defined class of specifications. We propose to systematically generalize decision procedures into synthesis procedures, and use them to compile implicitly specified computations embedded inside functional and imperative programs. Synthesis procedures are predictable, because they are guaranteed to find code that satisfies the specification whenever such code exists. To illustrate our method, we derive synthesis procedures by extending quantifier elimination algorithms for integer arithmetic and set data structures. We then show that an implementation of such synthesis procedures can extend a compiler to support implicit value definitions and advanced pattern matching.

References

  1. Bradley, A.R., Manna, Z. The Calculus of Computation, Springer, Berlin, Germany, 2007.Google ScholarGoogle ScholarCross RefCross Ref
  2. Cohen, H. A Course in Computational Algebraic Number Theory. Springer, Berlin, Germany, 1993. Google ScholarGoogle ScholarCross RefCross Ref
  3. de Moura, L., Bjørner, N. Z3: An efficient SMT solver. In TACAS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Dijkstra, E.W. A Discipline of Programming. Prentice-Hall, Inc., Upper Saddle River, NJ, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Ferrante, J., Rackoff, C.W. The Computational Complexity of Logical Theories, volume 718 of Lecture Notes in Mathematics. Springer-Verlag, Berlin, Germany, 1979.Google ScholarGoogle ScholarCross RefCross Ref
  6. Flanagan, C., Leino, K.R.M., Lilibridge, M., Nelson, G., Saxe, J.B., Stata, R. Extended static checking for Java. In PLDI, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Ganzinger, H., Hagen, G., Nieuwenhuis, R., Oliveras, A., Tinelli, C. DPLL(T): Fast decision procedures. In CAV (2004), 175--188.Google ScholarGoogle Scholar
  8. Green, C.C. Application of theorem proving to problem solving. In IJCAI (1969), 219--240. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Hamza, J., Jobstmann, B., Kuncak, V. Synthesis for regular specifications over unbounded domains. In FMCAD, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jaffar, J., Maher, M.J. Constraint logic programming: A survey. J. Log. Program, 19/20 (1994), 503--581.Google ScholarGoogle Scholar
  11. Joshi, R., Nelson, G., Zhou, Y. Denali: A practical algorithm for generating optimal code. ACM Trans. Program. Lang. Syst. 28 (2006), 967--989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Kuncak, V., Mayer, M., Piskac, R., Suter, P. Complete functional synthesis. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Kuncak, V., Nguyen, H.H., Rinard, M. Deciding Boolean algebra with Presburger arithmetic. J. Autom. Reason. 36, 3 (2006), 213--239. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kuncak, V., Piskac, R., Suter, P. Ordered sets in the calculus of data structures. In CSL (2010), 34--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Manna, Z., Waldinger, R.J. Toward automatic program synthesis. Commun. ACM 14, 3 (1971), 151--165. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Odersky, M., Spoon, L., Venners, B. Programming in Scala: A Comprehensive Step-By-Step Guide. Artima Press, Mountain View, CA, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Oppen, D.C. Reasoning about recursively defined data structures. In POPL (1978), 151--157. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Piskac, R., Kuncak, V. Linear arithmetic with stars. In CAV, volume 5123 of LNCS, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Pnueli, A., Rosner, R. On the synthesis of a reactive module. In POPL, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Pugh, W. A practical algorithm for exact array dependence analysis. Commun. ACM 35, 8 (1992), 102--114. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S.A., Saraswat, V.A. Combinatorial sketching for finite programs. In ASPLOS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Srivastava, S., Gulwani, S., Foster, J.S. From program verification to program synthesis. In POPL, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Suter, P., Dotta, M., Kuncak, V. Decision procedures for algebraic data types with abstractions. In POPL, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Zee, K., Kuncak, V., Rinard, M. Full functional verification of linked data structures. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Software synthesis procedures

              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

              • Published in

                cover image Communications of the ACM
                Communications of the ACM  Volume 55, Issue 2
                February 2012
                111 pages
                ISSN:0001-0782
                EISSN:1557-7317
                DOI:10.1145/2076450
                Issue’s Table of Contents

                Copyright © 2012 ACM

                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 ACM 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]

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 1 February 2012

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • research-article
                • Popular
                • Refereed

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader

              HTML Format

              View this article in HTML Format .

              View HTML Format