Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
97 tokens/sec
GPT-4o
53 tokens/sec
Gemini 2.5 Pro Pro
44 tokens/sec
o3 Pro
5 tokens/sec
GPT-4.1 Pro
47 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

Rely/Guarantee, Refinement and the ABA Problem: Part 1 (2311.15250v1)

Published 26 Nov 2023 in cs.LO

Abstract: Rely/guarantee reasoning provides a compositional way of reasoning about concurrency. The ABA problem occurs in many non-blocking concurrent data structures, where a change made by a concurrent process may be undetected by other processes. Guarantee conditions provide a useful mechanism for reasoning about such changes, as is demonstrated by two non-blocking examples, the Treiber stack and the Herlihy-Wing queue. The ABA problem can be identified by the program making a step where the before and after states do not correspond to a valid step at the sequential level. Therefore, such invalid behaviour relates to a failure of the guarantee condition. As such behaviour is non-linearisable, this suggests a strong relationship between refinement with rely/guarantee and linearisability.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (15)
  1. Formal verification of an array-based nonblocking queue. In 10th International Conference on Engineering of Complex Computer Systems (ICECCS 2005), 16-20 June 2005, Shanghai, China, pages 507–516. IEEE Computer Society, 2005.
  2. Simplifying proofs of linearisability using layers of abstraction. ECEASST, 66, 2013.
  3. Verifying linearisability: A comparative survey. ACM Comput. Surv., 48(2):19:1–19:43, 2015.
  4. Mechanizing a correctness proof for a lock-free concurrent stack. In Gilles Barthe and Frank S. de Boer, editors, Formal Methods for Open Object-Based Distributed Systems, 10th IFIP WG 6.1 Int. Conf., FMOODS 2008, Proc., volume 5051 of Lecture Notes in Computer Science, pages 78–95. Springer, 2008.
  5. Ian J. Hayes. Some challenges of specifying concurrent program components. In John Derrick, Brijesh Dongol, and Steve Reeves, editors, Proceedings 18th Refinement Workshop, Oxford, UK, 18th July 2018, volume 282 of Electronic Proceedings in Theoretical Computer Science, pages 10–22. Open Publishing Association, October 2018.
  6. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12(3):463 – 492, 1990.
  7. Possible values: Exploring a concept for concurrency. Journal of Logical and Algebraic Methods in Programming, 85(5, Part 2):972–984, August 2016.
  8. C. B. Jones. Specification and design of (parallel) programs. In Proceedings of IFIP’83, pages 321–332. North-Holland, 1983.
  9. C. B. Jones. Tentative steps toward a development method for interfering programs. ACM ToPLaS, 5(4):596–619, 1983.
  10. C. B. Jones. Systematic Software Development using VDM. Prentice Hall International, second edition, 1990.
  11. Reasoning about separation using abstraction and reification. In Radu Calinescu and Bernhard Rumpe, editors, Software Engineering and Formal Methods, volume 9276 of LNCS, pages 3–19. Springer, 2015.
  12. Investigating the limits of rely/guarantee relations based on a concurrent garbage collector example. Formal Aspects of Computing, To appear, 2019.
  13. G. Smith and K. Winter. Relating trace refinement and linearizability. Formal Aspects of Computing, 2017. Accepted 5 December 2016, Online 14 Feb 2017.
  14. R. K. Treiber. Systems programming: Coping with parallelism. Technical Report RJ 5118, IBM Almaden Research Center, April 1986.
  15. V. Vafeiadis. Modular fine-grained concurrency verification. PhD thesis, University of Cambridge, 2007.
User Edit Pencil Streamline Icon: https://streamlinehq.com
Authors (1)

Summary

We haven't generated a summary for this paper yet.