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.
- J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, 2010. Google Scholar
Digital Library
- R.-J. Back and J. von Wright. Refinement Calculus: A Sys-tematic Introduction. Graduate Texts in Computer Science. Springer, 1998. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- C. Green. Application of theorem proving to problem solving. In IJCAI 1969, pages 219--240. William Kaufmann, 1969. Google Scholar
Digital Library
- C. Green. The design of the PSI program synthesis system. In ICSE, pages 4--18. IEEE Computer Society, 1976. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- W. R. Harris and S. Gulwani. Spreadsheet table transforma-tions from examples. In PLDI 2011, pages 317--328. ACM, 2011. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- C. B. Jones. Systematic Software Development using VDM. Series in Computer Science. Prentice-Hall International, second edition, 1990. Google Scholar
Digital Library
- V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI 2010, pages 316--329. ACM, 2010. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Z. Manna and R. J. Waldinger. Towards automatic program synthesis. Commun. ACM, 14(3):151--165, 1971. Google Scholar
Digital Library
- B. Meyer. Object-oriented Software Construction. Series in Computer Science. Prentice-Hall International, 1988. Google Scholar
Digital Library
- A. Milicevic, D. Rayside, K. Yessenov, and D. Jackson. Uni-fying execution of imperative and declarative code. In ICSE, pages 511--520, 2011. Google Scholar
Digital Library
- R. Monahan. Data Refinement in Object-Oriented Verification. PhD thesis, Dublin City University, 2010.Google Scholar
- J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS 2002, pages 55--74. IEEE Computer Society, 2002. Google Scholar
Digital Library
- C. Rich and R. C. Waters. The Programmer's Apprentice: A research overview. IEEE Computer, 21(11):10--25, 1988. Google Scholar
Digital Library
- H. Samimi, E. D. Aung, and T. D. Millstein. Falling back on executable specifications. In ECOOP, pages 552--576, 2010. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In ESEC/SIGSOFT FSE, pages 263--272, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- D. R. Smith. KIDS: A semi-automatic program development system. IEEE Transactions on Software Engineering, 16(9): 1024--1043, 1990. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- P. D. Summers. A methodology for LISP program construction from examples. J. ACM, 24(1):161--175, 1977. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- M. M. Zloof. Query by example. In AFIPS National Computer Conference 1975, pages 431--438. AFIPS Press, 1975. Google Scholar
Digital Library
Recommendations
Program extrapolation with jennisys
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsThe 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 ...
The PSI Program Model Builder - synthesis of very high-level programs
Proceedings of the 1977 symposium on Artificial intelligence and programming languagesA system called the Program Model Builder (PMB) is being designed and implemented to perform the basic operations required to synthesize and modify programs. PMB plays a central role as one of the expert modules of the PSI (ψ) program synthesis system. ...
Algorithmic program synthesis: introduction
Program synthesis is a process of producing an executable program from a specification. Algorithmic synthesis produces the program automatically, without an intervention from an expert. While classical compilation falls under the definition of ...







Comments