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

Program extrapolation with jennisys

Published: 19 October 2012 Publication History

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.
[2]
R.-J. Back and J. von Wright. Refinement Calculus: A Sys-tematic Introduction. Graduate Texts in Computer Science. Springer, 1998.
[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.
[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.
[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.
[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.
[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.
[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. URL http://doi.acm.org/10.1145/1455410.1455427.
[9]
C. Green. Application of theorem proving to problem solving. In IJCAI 1969, pages 219--240. William Kaufmann, 1969.
[10]
C. Green. The design of the PSI program synthesis system. In ICSE, pages 4--18. IEEE Computer Society, 1976.
[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.
[12]
W. R. Harris and S. Gulwani. Spreadsheet table transforma-tions from examples. In PLDI 2011, pages 317--328. ACM, 2011.
[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.
[14]
C. B. Jones. Systematic Software Development using VDM. Series in Computer Science. Prentice-Hall International, second edition, 1990.
[15]
V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Complete functional synthesis. In PLDI 2010, pages 316--329. ACM, 2010.
[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.
[17]
Z. Manna and R. J. Waldinger. Towards automatic program synthesis. Commun. ACM, 14(3):151--165, 1971.
[18]
B. Meyer. Object-oriented Software Construction. Series in Computer Science. Prentice-Hall International, 1988.
[19]
A. Milicevic, D. Rayside, K. Yessenov, and D. Jackson. Uni-fying execution of imperative and declarative code. In ICSE, pages 511--520, 2011.
[20]
R. Monahan. Data Refinement in Object-Oriented Verification. PhD thesis, Dublin City University, 2010.
[21]
J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS 2002, pages 55--74. IEEE Computer Society, 2002.
[22]
C. Rich and R. C. Waters. The Programmer's Apprentice: A research overview. IEEE Computer, 21(11):10--25, 1988.
[23]
H. Samimi, E. D. Aung, and T. D. Millstein. Falling back on executable specifications. In ECOOP, pages 552--576, 2010.
[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.
[25]
K. Sen, D. Marinov, and G. Agha. CUTE: a concolic unit testing engine for C. In ESEC/SIGSOFT FSE, pages 263--272, 2005.
[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.
[27]
D. R. Smith. KIDS: A semi-automatic program development system. IEEE Transactions on Software Engineering, 16(9): 1024--1043, 1990.
[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.
[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.
[30]
P. D. Summers. A methodology for LISP program construction from examples. J. ACM, 24(1):161--175, 1977.
[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.
[32]
M. M. Zloof. Query by example. In AFIPS National Computer Conference 1975, pages 431--438. AFIPS Press, 1975.

Cited By

View all
  • (2021)Cyclic program synthesisProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454087(944-959)Online publication date: 19-Jun-2021
  • (2021)Deductive Synthesis of Programs with Pointers: Techniques, Challenges, OpportunitiesComputer Aided Verification10.1007/978-3-030-81685-8_5(110-134)Online publication date: 15-Jul-2021
  • (2021)Bridging Arrays and ADTs in Recursive ProofsTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-72013-1_2(24-42)Online publication date: 23-Mar-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 47, Issue 10
OOPSLA '12
October 2012
1011 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2398857
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
    October 2012
    1052 pages
    ISBN:9781450315616
    DOI:10.1145/2384616
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: 19 October 2012
Published in SIGPLAN Volume 47, Issue 10

Check for updates

Author Tags

  1. abstract specifications
  2. concrete representations
  3. coupling invariants
  4. dafny
  5. jennisys
  6. postconditions
  7. preconditions
  8. program synthesis

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)11
  • Downloads (Last 6 weeks)1
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2021)Cyclic program synthesisProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454087(944-959)Online publication date: 19-Jun-2021
  • (2021)Deductive Synthesis of Programs with Pointers: Techniques, Challenges, OpportunitiesComputer Aided Verification10.1007/978-3-030-81685-8_5(110-134)Online publication date: 15-Jul-2021
  • (2021)Bridging Arrays and ADTs in Recursive ProofsTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-72013-1_2(24-42)Online publication date: 23-Mar-2021
  • (2020)Concise Read-Only Specifications for Better Synthesis of Programs with PointersProgramming Languages and Systems10.1007/978-3-030-44914-8_6(141-168)Online publication date: 27-Apr-2020
  • (2019)Blocking and Other Enhancements for Bottom-Up Model Generation MethodsJournal of Automated Reasoning10.1007/s10817-019-09515-1Online publication date: 1-Mar-2019
  • (2024)Synthesis of Recursive Programs in SaturationAutomated Reasoning10.1007/978-3-031-63498-7_10(154-171)Online publication date: 3-Jul-2024
  • (2021)LooPy: interactive program synthesis with control structuresProceedings of the ACM on Programming Languages10.1145/34855305:OOPSLA(1-29)Online publication date: 15-Oct-2021
  • (2021)Trident: Controlling Side Effects in Automated Program RepairIEEE Transactions on Software Engineering10.1109/TSE.2021.3124323(1-1)Online publication date: 2021
  • (2019)Structuring the synthesis of heap-manipulating programsProceedings of the ACM on Programming Languages10.1145/32903853:POPL(1-30)Online publication date: 2-Jan-2019
  • (2019)Blocking and Other Enhancements for Bottom-Up Model Generation MethodsJournal of Automated Reasoning10.1007/s10817-019-09515-1Online publication date: 1-Mar-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media