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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 2048073.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 6693061.Google Scholar
- 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 Scholar
Digital Library
Index Terms
Symbolic abstract data type inference
Recommendations
Symbolic abstract data type inference
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesFormal 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 ...
Specification, Refinement and Verification of Concurrent Systems—An Integration of Object-Z and CSP
This paper presents a method of formally specifying, refining and verifying concurrent systems which uses the object-oriented state-based specification language Object-Z together with the process algebra CSP. Object-Z provides a convenient way of ...






Comments