Abstract
Locating linearization points (LPs) is an intuitive approach for proving linearizability, but it is difficult to apply the idea in Hoare-style logic for formal program verification, especially for verifying algorithms whose LPs cannot be statically located in the code. In this paper, we propose a program logic with a lightweight instrumentation mechanism which can verify algorithms with non-fixed LPs, including the most challenging ones that use the helping mechanism to achieve lock-freedom (as in HSY elimination-based stack), or have LPs depending on unpredictable future executions (as in the lazy set algorithm), or involve both features. We also develop a thread-local simulation as the meta-theory of our logic, and show it implies contextual refinement, which is equivalent to linearizability. Using our logic we have successfully verified various classic algorithms, some of which are used in the java.util.concurrent package.
- M. Abadi and L. Lamport. The existence of refinement mappings. Theor. Comput. Sci., 82 (2): 253--284, 1991. Google Scholar
Digital Library
- D. Amit, N. Rinetzky, T. Reps, M. Sagiv, and E. Yahav. Comparison under abstraction for verifying linearizability. In CAV'07. Google Scholar
Digital Library
- R. Colvin, L. Groves, V. Luchangco, and M. Moir. Formal verification of a lazy concurrent list-based set algorithm. In CAV'06. Google Scholar
Digital Library
- J. Derrick, G. Schellhorn, and H. Wehrheim. Verifying linearisability with potential linearisation points. In FM'11. Google Scholar
Digital Library
- J. Derrick, G. Schellhorn, and H. Wehrheim. Mechanically verified proof obligations for linearizability. ACM TOPLAS, 33 (1): 4, 2011. Google Scholar
Digital Library
- S. Doherty, L. Groves, V. Luchangco, and M. Moir. Formal verification of a practical lock-free queue algorithm. In FORTE'04.Google Scholar
- T. Elmas, S. Qadeer, A. Sezgin, O. Subasi, and S. Tasiran. Simplifying linearizability proofs with reduction and abstraction. In TACAS'10. Google Scholar
Digital Library
- X. Feng. Local rely-guarantee reasoning. In POPL'09. Google Scholar
Digital Library
- I. Filipović, P. O'Hearn, N. Rinetzky, and H. Yang. Abstraction for concurrent objects. Theor. Comput. Sci., 2010. Google Scholar
Digital Library
- A. Gotsman and H. Yang. Linearizability with ownership transfer. In CONCUR'12. Google Scholar
Digital Library
- T. L. Harris. A pragmatic implementation of non-blocking linked-lists. In DISC'01. Google Scholar
Digital Library
- T. L. Harris, K. Fraser, and I. A. Pratt. A practical multi-word compare-and-swap operation. In DISC'02. Google Scholar
Digital Library
- S. Heller, M. Herlihy, V. Luchangco, M. Moir, W. N. S. III, and N. Shavit. A lazy concurrent list-based set algorithm. In OPODIS'05. Google Scholar
Digital Library
- D. Hendler, N. Shavit, and L. Yerushalmi. A scalable lock-free stack algorithm. In SPAA'04. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, Apr. 2008. Google Scholar
Digital Library
- M. Herlihy and J. Wing. Linearizability: a correctness condition for concurrent objects. ACM TOPLAS, 12 (3): 463--492, 1990. Google Scholar
Digital Library
- C. B. Jones. Tentative steps toward a development method for interfering programs. ACM TOPLAS, 5 (4): 596--619, 1983. Google Scholar
Digital Library
- H. Liang and X. Feng. Modular verification of linearizability with non-fixed linearization points. Technical report, USTC, March 2013. http://kyhcs.ustcsz.edu.cn/relconcur/lin.Google Scholar
- H. Liang, X. Feng, and M. Fu. A rely-guarantee-based simulation for verifying concurrent program transformations. In POPL'12. Google Scholar
Digital Library
- Y. Liu, W. Chen, Y. A. Liu, and J. Sun. Model checking linearizability via refinement. In FM'09. Google Scholar
Digital Library
- N. A. Lynch and F. W. Vaandrager. Forward and backward simulations: I. untimed systems. Inf. Comput., 121 (2): 214--233, 1995. Google Scholar
Digital Library
- M. M. Michael. High performance dynamic lock-free hash tables and list-based sets. In SPAA'02. Google Scholar
Digital Library
- M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In PODC'96. Google Scholar
Digital Library
- P. W. O'Hearn. Resources, concurrency, and local reasoning. Theor. Comput. Sci., 375 (1--3): 271--307, 2007. Google Scholar
Digital Library
- P. W. O'Hearn, N. Rinetzky, M. T. Vechev, E. Yahav, and G. Yorsh. Verifying linearizability with hindsight. In PODC'10. Google Scholar
Digital Library
- O'Hearn, Yang, and Reynolds}OHearn04poplP. W. O'Hearn, H. Yang, and J. C. Reynolds. Separation and information hiding. In POPL'04,natexlabb. Google Scholar
Digital Library
- S. Qadeer, A. Sezgin, and S. Tasiran. Back and forth: Prophecy variables for static verification of concurrent programs. Tech Report.Google Scholar
- G. Schellhorn, H. Wehrheim, and J. Derrick. How to prove algorithms linearisable. In CAV'12. Google Scholar
Digital Library
- R. K. Treiber. System programming: coping with parallelism. Technical Report RJ 5118, IBM Almaden Research Center, 1986.Google Scholar
- A. Turon and M. Wand. A separation logic for refining concurrent objects. In POPL'11. Google Scholar
Digital Library
- A. Turon, J. Thamsborg, A. Ahmed, L. Birkedal, and D. Dreyer. Logical relations for fine-grained concurrency. In POPL'13. Google Scholar
Digital Library
- V. Vafeiadis. Modular fine-grained concurrency verification. Thesis.Google Scholar
- V. Vafeiadis. Automatically proving linearizability. In CAV, 2010. Google Scholar
Digital Library
- M. T. Vechev, E. Yahav, and G. Yorsh. Experience with model checking linearizability. In SPIN'09. Google Scholar
Digital Library
Index Terms
Modular verification of linearizability with non-fixed linearization points
Recommendations
Modular verification of linearizability with non-fixed linearization points
PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and ImplementationLocating linearization points (LPs) is an intuitive approach for proving linearizability, but it is difficult to apply the idea in Hoare-style logic for formal program verification, especially for verifying algorithms whose LPs cannot be statically ...
Mechanically verified proof obligations for linearizability
Concurrent objects are inherently complex to verify. In the late 80s and early 90s, Herlihy and Wing proposed linearizability as a correctness condition for concurrent objects, which, once proven, allows us to reason about concurrent objects using pre- ...
A program logic for concurrent objects under fair scheduling
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesExisting work on verifying concurrent objects is mostly concerned with safety only, e.g., partial correctness or linearizability. Although there has been recent work verifying lock-freedom of non-blocking objects, much less efforts are focused on ...







Comments