Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Free access

Software synthesis procedures

Published: 01 February 2012 Publication History

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

Cited By

View all
  • (2024)Semantic Code Refactoring for Abstract Data TypesProceedings of the ACM on Programming Languages10.1145/36328708:POPL(816-847)Online publication date: 5-Jan-2024
  • (2024)Probabilistic Loop Synthesis from Sequences of MomentsQuantitative Evaluation of Systems and Formal Modeling and Analysis of Timed Systems10.1007/978-3-031-68416-6_14(233-248)Online publication date: 10-Sep-2024
  • (2024)Algebraic Reasoning Meets Automata in Solving Linear Integer ArithmeticComputer Aided Verification10.1007/978-3-031-65627-9_3(42-67)Online publication date: 24-Jul-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

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
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: 01 February 2012
Published in CACM Volume 55, Issue 2

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Popular
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)198
  • Downloads (Last 6 weeks)33
Reflects downloads up to 02 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Semantic Code Refactoring for Abstract Data TypesProceedings of the ACM on Programming Languages10.1145/36328708:POPL(816-847)Online publication date: 5-Jan-2024
  • (2024)Probabilistic Loop Synthesis from Sequences of MomentsQuantitative Evaluation of Systems and Formal Modeling and Analysis of Timed Systems10.1007/978-3-031-68416-6_14(233-248)Online publication date: 10-Sep-2024
  • (2024)Algebraic Reasoning Meets Automata in Solving Linear Integer ArithmeticComputer Aided Verification10.1007/978-3-031-65627-9_3(42-67)Online publication date: 24-Jul-2024
  • (2022)Principles of Abstract InterpretationFormal Aspects of Computing10.1145/354695334:2(1-3)Online publication date: 19-Sep-2022
  • (2022)Probabilistic BigraphsFormal Aspects of Computing10.1145/354518034:2(1-27)Online publication date: 19-Sep-2022
  • (2022)A Debugging Game for Probabilistic ModelsFormal Aspects of Computing10.1145/353642934:2(1-25)Online publication date: 20-Sep-2022
  • (2022)Algebra-Based Reasoning for Loop SynthesisFormal Aspects of Computing10.1145/352745834:1(1-31)Online publication date: 21-Jul-2022
  • (2022)The Development and Deployment of Formal Methods in the UKFormal Aspects of Computing10.1145/352257734:1(1-21)Online publication date: 5-Jul-2022
  • (2021)Algebra-Based Synthesis of Loops and Their Invariants (Invited Paper)Verification, Model Checking, and Abstract Interpretation10.1007/978-3-030-67067-2_2(17-28)Online publication date: 17-Jan-2021
  • (2019)Alternating Automata Modulo First Order TheoriesComputer Aided Verification10.1007/978-3-030-25543-5_3(43-63)Online publication date: 12-Jul-2019
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Digital Edition

View this article in digital edition.

Digital Edition

Magazine Site

View this article on the magazine site (external)

Magazine Site

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media