skip to main content
article

Symbolic abstract data type inference

Published:11 January 2016Publication History
Skip Abstract Section

Abstract

Formal specification is a vital ingredient to scalable verification of software systems. In the case of efficient implementations of concurrent objects like atomic registers, queues, and locks, symbolic formal representations of their abstract data types (ADTs) enable efficient modular reasoning, decoupling clients from implementations. Writing adequate formal specifications, however, is a complex task requiring rare expertise. In practice, programmers write reference implementations as informal specifications. In this work we demonstrate that effective symbolic ADT representations can be automatically generated from the executions of reference implementations. Our approach exploits two key features of naturally-occurring ADTs: violations can be decomposed into a small set of representative patterns, and these patterns manifest in executions with few operations. By identifying certain algebraic properties of naturally-occurring ADTs, and exhaustively sampling executions up to a small number of operations, we generate concise symbolic ADT representations which are complete in practice, enabling the application of efficient symbolic verification algorithms without the burden of manual specification. Furthermore, the concise ADT violation patterns we generate are human-readable, and can serve as useful, formal documentation.

References

  1. P. A. Abdulla, K. Cerans, B. Jonsson, and Y. Tsay. General decidability theorems for infinite-state systems. In Proceedings, 11th Annual IEEE Symposium on Logic in Computer Science, New Brunswick, New Jersey, USA, July 27-30, 1996, pages 313–321. IEEE Computer Society, 1996. http://dx.doi.org/10.1109/LICS.1996.561359. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Burckhardt, C. Dern, M. Musuvathi, and R. Tan. Line-up: a complete and automatic linearizability checker. In Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2010, Toronto, Ontario, Canada, June 5-10, 2010, pages 330–340. ACM, 2010. http://doi.acm.org/10.1145/ 1806596.1806634. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Burnim, G. C. Necula, and K. Sen. Specifying and checking semantic atomicity for multithreaded programs. In Proceedings of the 16th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2011, Newport Beach, CA, USA, March 5-11, 2011, pages 79–90. ACM, 2011. http://doi.acm. org/10.1145/1950365.1950377. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. M. Dodds, A. Haas, and C. M. Kirsch. A scalable, correct time-stamped stack. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2015, Mumbai, India, January 15-17, 2015, pages 233–246. ACM, 2015. http://doi.acm.org/10.1145/2676726.2676963. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Dragoi, A. Gupta, and T. A. Henzinger. Automatic linearizability proofs of concurrent objects with cooperating updates. In Computer Aided Verification - 25th International Conference, CAV 2013, Saint Petersburg, Russia, July 13-19, 2013. Proceedings, volume 8044 of Lecture Notes in Computer Science, pages 174–190. Springer, 2013. http://dx.doi.org/10.1007/978-3-642-39799-8_11. M. Emmi, C. Enea, and J. Hamza. Monitoring refinement via symbolic reasoning. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, Portland, OR, USA, June 15-17, 2015, pages 260–269. ACM, 2015. http://doi.acm.org/ 10.1145/2737924.2737983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. A. Finkel and P. Schnoebelen. Well-structured transition systems everywhere! Theor. Comput. Sci., 256(1-2):63–92, 2001. http://dx.doi. org/10.1016/S0304-3975(00)00102-X. P. C. Fishburn. Interval Orders and Interval Graphs: A Study of Partially Ordered Sets. Wiley-Interscience Series in Discrete Mathematics. John Wiley & Sons Inc, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. D. Giannakopoulou, C. S. Pasareanu, and H. Barringer. Component verification with automatically generated assumptions. Autom. Softw. Eng., 12(3):297–320, 2005. http://dx.doi.org/10.1007/ s10515-005-2641-y. N. Hemed and N. Rinetzky. Brief announcement: concurrency-aware linearizability. In ACM Symposium on Principles of Distributed Computing, PODC ’14, Paris, France, July 15-18, 2014, pages 209–211. ACM, 2014. http://doi.acm.org/10.1145/2611462.2611513. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, Seattle, WA, USA, June 16-19, 2013, pages 459–470. ACM, 2013. http://doi.acm.org/10. 1145/2462156.2462189. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Y. Liu, W. Chen, Y. A. Liu, and J. Sun. Model checking linearizability via refinement. In FM 2009: Formal Methods, Second World Congress, Eindhoven, The Netherlands, November 2-6, 2009. Proceedings, volume 5850 of Lecture Notes in Computer Science, pages 321–337. Springer, 2009. http://dx.doi.org/10.1007/978-3-642-05089-3_21. P. W. O’Hearn, N. Rinetzky, M. T. Vechev, E. Yahav, and G. Yorsh. Verifying linearizability with hindsight. In Proceedings of the 29th Annual ACM Symposium on Principles of Distributed Computing, PODC 2010, Zurich, Switzerland, July 25-28, 2010, pages 85–94. ACM, 2010. http://doi.acm.org/10.1145/1835698.1835722. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. O. Shacham, N. G. Bronson, A. Aiken, M. Sagiv, M. T. Vechev, and E. Yahav. Testing atomicity of composed concurrent operations. In Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011, part of SPLASH 2011, Portland, OR, USA, October 22 - 27, 2011, pages 51–64. ACM, 2011. http://doi.acm.org/10.1145/2048066. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 2048073.Google ScholarGoogle Scholar
  12. V. Vafeiadis. Automatically proving linearizability. In Computer Aided Verification, 22nd International Conference, CAV 2010, Edinburgh, UK, July 15-19, 2010. Proceedings, volume 6174 of Lecture Notes in Computer Science, pages 450–464. Springer, 2010. http://dx.doi.org/ 10.1007/978-3-642-14295-6_40. J. M. Wing and C. Gong. Testing and verifying concurrent objects. J. Parallel Distrib. Comput., 17(1-2):164–182, 1993. http://dx.doi. org/10.1006/jpdc.1993.1015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. L. Zhang, A. Chattopadhyay, and C. Wang. Round-up: Runtime checking quasi linearizability of concurrent data structures. In 2013 28th IEEE/ACM International Conference on Automated Software Engineering, ASE 2013, Silicon Valley, CA, USA, November 11-15, 2013, pages 4–14. IEEE, 2013. http://dx.doi.org/10.1109/ASE.2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 6693061.Google ScholarGoogle Scholar
  15. S. J. Zhang. Scalable automatic linearizability checking. In Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, Waikiki, Honolulu, HI, USA, May 21-28, 2011, pages 1185–1187. ACM, 2011. http://doi.acm.org/10.1145/1985793.1986037. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Symbolic abstract data type inference

      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

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 51, Issue 1
        POPL '16
        January 2016
        815 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2914770
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
          January 2016
          815 pages
          ISBN:9781450335492
          DOI:10.1145/2837614

        Copyright © 2016 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 11 January 2016

        Check for updates

        Qualifiers

        • article

      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!