skip to main content
research-article

Program extrapolation with jennisys

Published:19 October 2012Publication History
Skip Abstract Section

Abstract

The desired behavior of a program can be described using an abstract model. Compiling such a model into executable code requires advanced compilation techniques known as synthesis. This paper presents an object-based language, called Jennisys, where programming is done by introducing an abstract model, defining a concrete data representation for the model, and then being aided by automatic synthesis to produce executable code. The paper also presents a synthesis technique for the language. The technique is built on an automatic program verifier that, via an underlying SMT solver, is capable of providing concrete models to failed verifications. The technique proceeds by obtaining sample input/output values from concrete models and then extrapolating programs from the sample points. The synthesis aims to produce code with assignments, branching structure, and possibly recursive calls. It is the first to synthesize code that creates and uses objects in dynamic data structures or aggregate objects. A prototype of the language and synthesis technique has been implemented.

References

  1. J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R.-J. Back and J. von Wright. Refinement Calculus: A Sys-tematic Introduction. Graduate Texts in Computer Science. Springer, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R. Balzer, T. E. Cheatham, Jr., and C. Green. Software technology in the 1990's: Using a new paradigm. IEEE Computer, 16(11):39--45, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. Boogie: A modular reusable verifier for object-oriented programs. In FMCO 2005, volume 4111 of LNCS, pages 364--387. Springer, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. L. Burdy, Y. Cheon, D. R. Cok, M. D. Ernst, J. R. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. J. STTT, 7(3):212--232, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Cadar, V. Ganesh, P. M. Pawlowski, D. L. Dill, and D. R. Engler. EXE: automatically generating inputs of death. In ACM Conference on Computer and Communications Security, pages 322--335, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. L. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS 2008, volume 4963 of LNCS, pages 337--340. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. R. Goldfinger. The ibm type 705 autocoder. In Papers pre-sented at the February 7-9, 1956, joint ACM-AIEE-IRE western computer conference, AIEE-IRE '56 (Western), pages 49--51, New York, NY, USA, 1956. ACM. doi: 10.1145/1455410.1455427. URL http://doi.acm.org/10.1145/1455410.1455427. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. Green. Application of theorem proving to problem solving. In IJCAI 1969, pages 219--240. William Kaufmann, 1969. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. C. Green. The design of the PSI program synthesis system. In ICSE, pages 4--18. IEEE Computer Society, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of loop-free programs. In PLDI, PLDI '11, pages 62--73, New York, NY, USA, 2011. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. W. R. Harris and S. Gulwani. Spreadsheet table transforma-tions from examples. In PLDI 2011, pages 317--328. ACM, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. In ICSE, ICSE '10, pages 215--224, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. C. B. Jones. Systematic Software Development using VDM. Series in Computer Science. Prentice-Hall International, second edition, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI 2010, pages 316--329. ACM, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. K. R. M. Leino. Dafny: An automatic program verifier for functional correctness. In LPAR-16, volume 6355 of LNCS, pages 348--370. Springer, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Z. Manna and R. J. Waldinger. Towards automatic program synthesis. Commun. ACM, 14(3):151--165, 1971. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. B. Meyer. Object-oriented Software Construction. Series in Computer Science. Prentice-Hall International, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. A. Milicevic, D. Rayside, K. Yessenov, and D. Jackson. Uni-fying execution of imperative and declarative code. In ICSE, pages 511--520, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. R. Monahan. Data Refinement in Object-Oriented Verification. PhD thesis, Dublin City University, 2010.Google ScholarGoogle Scholar
  21. J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS 2002, pages 55--74. IEEE Computer Society, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. C. Rich and R. C. Waters. The Programmer's Apprentice: A research overview. IEEE Computer, 21(11):10--25, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. H. Samimi, E. D. Aung, and T. D. Millstein. Falling back on executable specifications. In ECOOP, pages 552--576, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. T. Schwartz, R. B. K. Dewar, E. Dubinsky, and E. Schonberg. Programming with Sets: An Introduction to SETL. Texts and Monographs in Computer Science. Springer, 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In ESEC/SIGSOFT FSE, pages 263--272, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. Singh and A. Solar-Lezama. Synthesizing data structure manipulations from storyboards. In ESEC/FSE 2011, pages 289--299, New York, NY, USA, 2011. ACM. ISBN 978-1-4503-0443-6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. D. R. Smith. KIDS: A semi-automatic program development system. IEEE Transactions on Software Engineering, 16(9): 1024--1043, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. Solar-Lezama, L. Tancau, R. Bodík, S. Seshia, and V. Saraswat. Combinatorial sketching for finite programs. In ASPLOS 2006, pages 404--415. ACM, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. S. Srivastava, S. Gulwani, S. Chaudhuri, and J. S. Foster. Path-based inductive synthesis for program inversion. In PLDI 2011, pages 492--503. ACM, 2011. ISBN978-1-4503-0663-8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. P. D. Summers. A methodology for LISP program construction from examples. J. ACM, 24(1):161--175, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. N. Williams, B. Marre, P. Mouy, and M. Roger. Path Crawler: Automatic generation of path tests by combining static and dynamic analysis. In EDCC, pages 281--292, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. M. Zloof. Query by example. In AFIPS National Computer Conference 1975, pages 431--438. AFIPS Press, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library

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!