skip to main content
10.1145/2509136.2509555acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Synthesis modulo recursive functions

Authors Info & Claims
Published:29 October 2013Publication History

ABSTRACT

We describe techniques for synthesis and verification of recursive functional programs over unbounded domains. Our techniques build on top of an algorithm for satisfiability modulo recursive functions, a framework for deductive synthesis, and complete synthesis procedures for algebraic data types. We present new counterexample-guided algorithms for constructing verified programs. We have implemented these algorithms in an integrated environment for interactive verification and synthesis from relational specifications. Our system was able to synthesize a number of useful recursive functions that manipulate unbounded numbers and data structures.

References

  1. A. Albarghouthi, S. Gulwani, and Z. Kincaid. Recursive program synthesis. In CAV, pages 934--950, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. E. Asarin, O. Maler, and A. Pnueli. Symbolic controller synthesis for discrete and timed systems. In Hybrid Systems, pages 1--20, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R.-J. Back and J. von Wright. Refinement Calculus. Springer-Verlag, 1998.Google ScholarGoogle Scholar
  4. R. W. Blanc, E. Kneuss, V. Kuncak, and P. Suter. An overview of the Leon verification system: Verification by translation to recursive functions. In Scala Workshop, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Boyapati, S. Khurshid, and D. Marinov. Korat: automated testing based on java predicates. In ISSTA, pages 123--133, 2002. 10.1145/566172.566191. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Butler, J. Grundy, T. Langbacka, R. Ruksenas, and J. von Wright. The refinement calculator: Proof support for program refinement. In Formal Methods Pacific, 1997.Google ScholarGoogle Scholar
  7. L. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, pages 337--340, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. L. de Moura and N. Bjørner. Generalized, efficient array decision procedures. In FMCAD, 2009.Google ScholarGoogle ScholarCross RefCross Ref
  9. P. Flener and D. Partridge. Inductive programming. Autom. Softw. Eng., 8 (2): 131--137, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Gligoric, T. Gvero, V. Jagannath, S. Khurshid, V. Kuncak, and D. Marinov. Test generation through programming in UDITA. In ICSE, pages 225--234, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. In PLDI, pages 62--73, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. Gvero, V. Kuncak, I. Kuraj, and R. Piskac. Complete completion using types and weights. In PLDI, pages 27--38, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Hofmann. IgorII - an analytical inductive functional programming system (tool demo). In PEPM, pages 29--32, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. Jackson. Structuring Z specifications with views. ACM Trans. Softw. Eng. Methodol., 4 (4): 365--389, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. Jacobs, V. Kuncak, and P. Suter. Reductions for synthesis procedures. In VMCAI, pages 88--107, 2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Jaffar and J.-L. Lassez. Constraint logic programming. In POPL, pages 111--119, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. B. Jobstmann and R. Bloem. Optimizations for LTL synthesis. In FMCAD, pages 117--124, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. R. Josephson. Abductive Inference: Computation, Philosophy, Technology. Cambridge University Press, 1994.Google ScholarGoogle Scholar
  19. A. C. Kakas, R. A. Kowalski, and F. Toni. Abductive logic programming. J. Log. Comput., 2 (6): 719--770, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  20. E. Kitzelmann and U. Schmid. Inductive synthesis of functional programs: An explanation based generalization approach. JMLR, 7: 429--454, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. G. Klein, J. Andronick, K. Elphinstone, G. Heiser, D. Cock, P. Derrin, D. Elkaduwe, K. Engelhardt, R. Kolanski, M. Norrish, T. Sewell, H. Tuch, and S. Winwood. seL4: Formal verification of an OS kernel. In SOSP, pages 207--220, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. S. Köksal, V. Kuncak, and P. Suter. Constraints as control. In POPL, pages 151--164, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI, pages 316--329, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Software synthesis procedures. CACM, 55 (2): 103--111, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. V. Kuncak, E. Kneuss, and P. Suter. Executing specifications using synthesis and constraint solving (invited talk). In Runtime Verification (RV), 2013.Google ScholarGoogle ScholarCross RefCross Ref
  26. I. Kuraj. Interactive code generation. Master's thesis, EPFL, 02 2013.Google ScholarGoogle Scholar
  27. D. Leinenbach and T. Santen. Verifying the Microsoft Hyper-V hypervisor with VCC. In FM, pages 806--809, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Y. Lustig and M. Y. Vardi. Synthesis from component libraries. In FOSSACS, pages 395--409, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Z. Manna and R. J. Waldinger. Toward automatic program synthesis. Commun. ACM, 14 (3): 151--165, 1971. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Z. Manna and R. J. Waldinger. A deductive approach to program synthesis. ACM Trans. Program. Lang. Syst., 2 (1): 90--121, 1980. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. Martelli and U. Montanari. Additive AND/OR graphs. In IJCAI, pages 1--11, 1973. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. S. Muggleton and L. D. Raedt. Inductive logic programming: Theory and methods. J. Log. Program., 19/20: 629--679, 1994.Google ScholarGoogle ScholarCross RefCross Ref
  33. T. Nipkow, L. C. Paulson, and M. Wenzel. Isabelle/HOL: A Proof Assistant for Higher-Order Logic, volume 2283 of LNCS. Springer-Verlag, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. C. Okasaki. Purely functional data structures. Cambridge University Press, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Y. Pei, Y. Wei, C. A. Furia, M. Nordio, and B. Meyer. Code-based automated program fixing. ArXiv e-prints, 2011. arXiv:1102.1059. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. N. Piterman, A. Pnueli, and Y. Sa'ar. Synthesis of reactive(1) designs. In VMCAI, pages 364--380, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. A. Pnueli and R. Rosner. On the synthesis of a reactive module. In POPL, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. R. Singh and S. Gulwani. Synthesizing number transformations from input-output examples. In CAV, pages 634--651, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. D. R. Smith. Generating programs plus proofs by refinement. In VSTTE, pages 182--188, 2005.Google ScholarGoogle Scholar
  40. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  41. A. Solar-Lezama, G. Arnold, L. Tancau, R. Bodík, V. A. Saraswat, and S. A. Seshia. Sketching stencils. In PLDI, pages 167--178, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A. Solar-Lezama, C. G. Jones, and R. Bodík. Sketching concurrent data structures. In PLDI, pages 136--148, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. A. Spielmann, A. Nötzli, C. Koch, V. Kuncak, and Y. Klonatos. Automatic synthesis of out-of-core algorithms. In SIGMOD, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. In POPL, pages 313--326, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. P. D. Summers. A methodology for LISP program construction from examples. JACM, 24 (1): 161--175, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. P. Suter. Programming with Specifications. PhD thesis, EPFL, December 2012.Google ScholarGoogle Scholar
  47. P. Suter, M. Dotta, and V. Kuncak. Decision procedures for algebraic data types with abstractions. In POPL, pages 199--210, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. P. Suter, A. S. Köksal, and V. Kuncak. Satisfiability modulo recursive programs. In SAS, pages 298--315, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. A. Udupa, A. Raghavan, J. V. Deshmukh, S. Mador-Haim, M. M. K. Martin, and R. Alur. TRANSIT: specifying protocols with concolic snippets. In PLDI, pages 287--296, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. M. T. Vechev, E. Yahav, and G. Yorsh. Inferring synchronization under limited observability. In TACAS, pages 139--154, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. C. von Essen and B. Jobstmann. Program repair without regret. In CAV, pages 896--911, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Y. Wei, C. A. Furia, N. Kazmin, and B. Meyer. Inferring better contracts. In ICSE, pages 191--200, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. N. Wirth. Program development by stepwise refinement. Commun. ACM, 14 (4): 221--227, 1971. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Synthesis modulo recursive functions

              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
              • Published in

                cover image ACM Conferences
                OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
                October 2013
                904 pages
                ISBN:9781450323741
                DOI:10.1145/2509136

                Copyright © 2013 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: 29 October 2013

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • research-article

                Acceptance Rates

                OOPSLA '13 Paper Acceptance Rate50of189submissions,26%Overall Acceptance Rate268of1,244submissions,22%

                Upcoming Conference

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader