Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

TRANSIT: specifying protocols with concolic snippets

Published: 16 June 2013 Publication History

Abstract

With the maturing of technology for model checking and constraint solving, there is an emerging opportunity to develop programming tools that can transform the way systems are specified. In this paper, we propose a new way to program distributed protocols using concolic snippets. Concolic snippets are sample execution fragments that contain both concrete and symbolic values. The proposed approach allows the programmer to describe the desired system partially using the traditional model of communicating extended finite-state-machines (EFSM), along with high-level invariants and concrete execution fragments. Our synthesis engine completes an EFSM skeleton by inferring guards and updates from the given fragments which is then automatically analyzed using a model checker with respect to the desired invariants. The counterexamples produced by the model checker can then be used by the programmer to add new concrete execution fragments that describe the correct behavior in the specific scenario corresponding to the counterexample.
We describe TRANSIT, a language and prototype implementation of the proposed specification methodology for distributed protocols. Experimental evaluations of TRANSIT to specify cache coherence protocols show that (1) the algorithm for expression inference from concolic snippets can synthesize expressions of size 15 involving typical operators over commonly occurring types, (2) for a classical directory-based protocol, TRANSIT automatically generates, in a few seconds, a complete implementation from a specification consisting of the EFSM structure and a few concrete examples for every transition, and (3) a published partial description of the SGI Origin cache coherence protocol maps directly to symbolic examples and leads to a complete implementation in a few iterations, with the programmer correcting counterexamples resulting from underspecified transitions by adding concrete examples in each iteration.

References

[1]
Intel Core2 Extreme Processor X6800 and Intel Core2 Duo Desktop Processor E6000 and E4000 Sequence -- Specification Update, 2003. URL http://www.intel.com/design/processor/ specupdt/313279.htm.
[2]
D. Abts, D. J. Lilja, and S. Scott. So Many States, So Little Time: Verifying Memory Coherence in the Cray X1. In Proceedings of the International Parallel and Distributed Processing Symposium, IPDPS '03, pages 1--11, 2003.
[3]
E. Clarke, O. Grumberg, H. Hiraishi, S. Jha, D. .Long, K. McMillan, and L. Ness. Verification of the Futurebus+ Cache Coherence Protocol. Formal Methods in System Design, 6:217--232, 1995.
[4]
N. Dave, M. C. Ng, and Arvind. Automatic Synthesis of Cache- Coherence Protocol Processors Using Bluespec. In Formal Methods and Models for Codesign, MEMOCODE '05, pages 25--34, 2005.
[5]
D. Dill, A. Drexler, A. Hu, and C. Yang. Protocol Verification as a Hardware Design Aid. In Proceedings of the International Conference on Computer Design, ICCD '92, pages 522--525, 1992.
[6]
B. Finkbeiner and S. Jacobs. Lazy Synthesis. In 13th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI '12, LNCS 7148, pages 219--234, 2012.
[7]
S. Gulwani. Automating String Processing in Spreadsheets using Input-output Examples. In Proceedings of The 38th ACM SIGPLAN/ SIGACT Symposium on Principles of Programming Languages, POPL '11, pages 317--330, 2011.
[8]
S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan. Synthesis of Loopfree Programs. In Proceedings of the 32nd ACM SIGPLAN conference on Programming Language Design and Implementation, PLDI '11, pages 62--73, 2011.
[9]
D. Harel. Can Programming Be Liberated, Period? IEEE Computer, 41(1):28--37, Jan. 2008.
[10]
D. Harel and R. Marelly. Come, Let's Play: Scenario-Based Programming Using LSCs and the Play-Engine. Springer-Verlag New York, 2003.
[11]
D. Harel, A. Marron, and G. Weiss. Behavioral Programming. Communications of the ACM, 55(7):90--100, Jul. 2012.
[12]
G. J. Holzmann. The Spin Model Checker: Primer and Reference Manual. Addison-Wesley, 2003.
[13]
S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari. Oracle-guided Component-based Program Synthesis. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ICSE '10, pages 215--224, 2010.
[14]
G. Katz and D. Peled. MCGP: A Software Synthesis Tool Based on Model Checking and Genetic Programming. In 8th Internation Symposium on Automated Technology for Verification and Analysis, ATVA '10, LNCS 6252, pages 359--364, 2010.
[15]
V. Kuncak, M. Mayer, R. Piskac, and P. Suter. Software Synthesis Procedures. Communications of the ACM, 55(2):103--111, Feb. 2012.
[16]
J. Laudon and D. Lenoski. The SGI Origin: A ccNUMA Highly Scalable Server. In Proceedings of the 24th Annual International Symposium on Computer Architecture, ISCA '97, pages 241--251, 1997.
[17]
N. A. Lynch. Distributed algorithms. Morgan Kaufmann Publishers Inc., 1996.
[18]
M. M. K. Martin, D. J. Sorin, B. M. Beckmann, M. R. Marty, M. Xu, A. R. Alameldeen, K. E. Moore, M. D. Hill, and D. A. Wood. Multifacet's General Execution-driven Multiprocessor Simulator (GEMS) Toolset. SIGARCH Computer Architecture News, 33(4):92--99, Nov. 2005.
[19]
L. D. Moura and N. Bjørner. Z3: An Efficient SMT Solver. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS '08, pages 337--340, 2008.
[20]
K. Sen, D. Marinov, and G. Agha. CUTE: A Concolic Unit Testing Engine for C. In Proceedings of the 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE '05, pages 263--272, 2005.
[21]
S. A. Seshia. Sciduction: Combining Induction, Deduction, and Structure for Verification and Synthesis. In Proceedings of the 49th Annual Design Automation Conference, DAC '12, pages 356--365, 2012.
[22]
R. Singh and A. Solar-Lezama. Synthesizing Data Structure Manipulations from Storyboards. In Proceedings of the 19th ACM Symposiumon Foundations of Software Engineering, FSE '11, pages 289--299,2011.
[23]
A. Solar-Lezama, R. Rabbah, R. Bodik, and K. Ebcioglu. Programming by Sketching for Bitstreaming Programs. In Proceedings of the SIGPLAN 2005 Conference on Programming Language Design and Implementation, PLDI '05, pages 281--294, 2005.
[24]
A. Solar-Lezama, C. G. Jones, and R. Bodik. Sketching Concurrent Data Structures. In Proceedings of the SIGPLAN 2008 Conference on Programming Language Design and Implementation, PLDI '08, pages 136--148, 2008.
[25]
D. J. Sorin, M. D. Hill, and D. A. Wood. A Primer on Memory Consistency and Cache Coherence. Morgan Claypool, 2011.
[26]
S. Srivastava, S. Gulwani, and J. S. Foster. From Program Verification to Program Synthesis. In Proceedings of the 37th annual ACM Symposium on Principles of Programming Languages, POPL '10, pages 313--326, 2010.
[27]
M. Talupur and M. R. Tuttle. Going with the Flow: Parameterized Verification using Flows: An Industrial Experience. In Proceedings of the 2008 Internation Conference on Formal Methods in Computer- Aided Design, FMCAD '08, pages 1--8, 2008.
[28]
W. Thomas. Facets of Synthesis: Revisiting Church's Problem. In Foundations of Software Science and Computational Structures, 12th International Conference, FOSSACS '09, LNCS 5504, pages 1--14, 2009.

Cited By

View all
  • (2024)Efficient Bottom-Up Synthesis for Programs with Local VariablesProceedings of the ACM on Programming Languages10.1145/36328948:POPL(1540-1568)Online publication date: 5-Jan-2024
  • (2023)EQUI-VOCAL: Synthesizing Queries for Compositional Video Events from Limited User InteractionsProceedings of the VLDB Endowment10.14778/3611479.361148216:11(2714-2727)Online publication date: 1-Jul-2023
  • (2023)NeuRI: Diversifying DNN Generation via Inductive Rule InferenceProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616337(657-669)Online publication date: 30-Nov-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 48, Issue 6
PLDI '13
June 2013
515 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2499370
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation
    June 2013
    546 pages
    ISBN:9781450320146
    DOI:10.1145/2491956
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: 16 June 2013
Published in SIGPLAN Volume 48, Issue 6

Check for updates

Author Tags

  1. cache coherence
  2. program synthesis
  3. programming by example

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)41
  • Downloads (Last 6 weeks)5
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Efficient Bottom-Up Synthesis for Programs with Local VariablesProceedings of the ACM on Programming Languages10.1145/36328948:POPL(1540-1568)Online publication date: 5-Jan-2024
  • (2023)EQUI-VOCAL: Synthesizing Queries for Compositional Video Events from Limited User InteractionsProceedings of the VLDB Endowment10.14778/3611479.361148216:11(2714-2727)Online publication date: 1-Jul-2023
  • (2023)NeuRI: Diversifying DNN Generation via Inductive Rule InferenceProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616337(657-669)Online publication date: 30-Nov-2023
  • (2023)Search-Based Regular Expression Inference on a GPUProceedings of the ACM on Programming Languages10.1145/35912747:PLDI(1317-1339)Online publication date: 6-Jun-2023
  • (2023)Synthesis of Distributed Agreement-Based Systems with Efficiently-Decidable VerificationTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-30820-8_19(289-308)Online publication date: 22-Apr-2023
  • (2022)INTENT: Interactive Tensor Transformation SynthesisProceedings of the 35th Annual ACM Symposium on User Interface Software and Technology10.1145/3526113.3545653(1-16)Online publication date: 29-Oct-2022
  • (2022)Synthesizing analytical SQL queries from computation demonstrationProceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3519939.3523712(168-182)Online publication date: 9-Jun-2022
  • (2022)Satisfiability and Synthesis Modulo OraclesVerification, Model Checking, and Abstract Interpretation10.1007/978-3-030-94583-1_13(263-284)Online publication date: 14-Jan-2022
  • (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)Grafs: declarative graph analyticsProceedings of the ACM on Programming Languages10.1145/34735885:ICFP(1-32)Online publication date: 19-Aug-2021
  • Show More Cited By

View Options

Get Access

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