Formal Verification of a Lazy Concurrent List-Based Set Algorithm

  • Robert Colvin
  • Lindsay Groves
  • Victor Luchangco
  • Mark Moir
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4144)


We describe a formal verification of a recent concurrent list-based set algorithm due to Heller et al. The algorithm is optimistic: the add and remove operations traverse the list without locking, and lock only the nodes affected by the operation; the contains operation uses no locks and is wait-free. These properties make the algorithm challenging to prove correct, much more so than simple coarse-grained locking algorithms. We have proved that the algorithm is linearisable using simulation between input/output automata modelling the behaviour of an abstract set and the implementation. The automata and simulation proof obligations are specified and verified using PVS.


External Action Auxiliary Variable Proof Obligation Program Counter Forward Simulation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Heller, S., Herlihy, M., Luchangco, V., Moir, M., Scherer, W., Shavit, N.: A lazy concurrent list-based set algorithm. In: Anderson, J.H., Prencipe, G., Wattenhofer, R. (eds.) OPODIS 2005. LNCS, vol. 3974, pp. 3–16. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  2. 2.
    Herlihy, M.P., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. TOPLAS 12(3), 463–492 (1990)CrossRefGoogle Scholar
  3. 3.
    Crow, J., Owre, S., Rushby, J., Shankar, N., Srivas, M.: A tutorial introduction to PVS. In: Workshop on Industrial-Strength Formal Specification Techniques, Boca Raton, Florida (1995)Google Scholar
  4. 4.
    Doherty, S.: Modelling and verifying non-blocking algorithms that use dynamically allocated memory. Master’s thesis, School of Mathematical and Computing Sciences, Victoria University of Wellington (2003)Google Scholar
  5. 5.
    Doherty, S., Groves, L., Luchangco, V., Moir, M.: Formal verification of a practical lock-free queue algorithm. In: de Frutos-Escrig, D., Núñez, M. (eds.) FORTE 2004. LNCS, vol. 3235, pp. 97–114. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  6. 6.
    Colvin, R., Doherty, S., Groves, L.: Verifying concurrent data structures by simulation. In: Boiten, E., Derrick, J. (eds.) Proc. Refinement Workshop 2005 (REFINE 2005), Guildford, UK. Electronic Notes in Theoretical Computer Science, vol. 137(2). Elsevier, Amsterdam (2005)Google Scholar
  7. 7.
    Colvin, R., Groves, L.: Formal verification of an array-based nonblocking queue. In: ICECCS 2005: Proceedings of the 10th IEEE International Conference on Engineering of Complex Computer Systems, Shanghai, Chin, pp. 507–516 (2005)Google Scholar
  8. 8.
    Lynch, N., Tuttle, M.: An Introduction to Input/Output automata. CWI-Quarterly 2(3), 219–246 (1989)zbMATHMathSciNetGoogle Scholar
  9. 9.
    Lynch, N.A.: Distributed Algorithms. Morgan Kaufmann, San Francisco (1996)zbMATHGoogle Scholar
  10. 10.
    Lynch, N.A., Vaandrager, F.W.: Forward and backward simulations – part I: Untimed systems. Information and Computation 121(2), 214–233 (1995)zbMATHCrossRefMathSciNetGoogle Scholar
  11. 11.
    Holzmann, G.J.: The model checker SPIN. IEEE Trans. Softw. Eng. 23(5), 279–295 (1997)CrossRefMathSciNetGoogle Scholar
  12. 12.
    de Moura, L., Owre, S., Rueß, H., Rushby, J., Shankar, N., Sorea, M., Tiwari, A.: SAL 2. In: Alur, R., Peled, D. (eds.) CAV 2004. LNCS, vol. 3114, pp. 496–500. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  13. 13.
    Vafeiadis, V., Herlihy, M., Hoare, T., Shapiro, M.: Proving correctness of highly-concurrent linearisable objects. In: PPoPP 2006: Proc. 11th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 129–136. ACM Press, New York (2006)CrossRefGoogle Scholar
  14. 14.
    Jones, C.B.: Specification and design of (parallel) programs. In: 9th IFIP World Computer Congress (Information Processing 1983). FIP Congress Series, IFIP, vol. 9, pp. 321–332. North-Holland, Amsterdam (1983)Google Scholar
  15. 15.
    Xu, Q., de Roever, W.P., He, J.: The rely-guarantee method for verifying shared variable concurrent programs. Formal Aspects of Computing 9(2), 149–174 (1997)zbMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Robert Colvin
    • 1
  • Lindsay Groves
    • 2
  • Victor Luchangco
    • 3
  • Mark Moir
    • 3
  1. 1.ARC Centre for Complex Systems, School of Information Technology and, Electrical EngineeringUniversity of QueenslandAustralia
  2. 2.School of Mathematics, Statistics and Computer ScienceVictoria University of WellingtonNew Zealand
  3. 3.Sun Microsystems LaboratoriesBurlingtonUSA

Personalised recommendations