Reasoning About Weak Semantics via Strong Semantics

  • Roland Meyer
  • Sebastian Wolff


Verification has to reason about the actual semantics of a program. The actual semantics not only depends on the source code but also on the environment: the target machine, the runtime system, and in the case of libraries the number of clients. So verification has to consider weak memory models, manual memory management, and arbitrarily many clients. Interestingly, most programs are insensitive to the environment. Programs are often well-behaved in that they appear to be executed under sequentially-consistent memory, garbage collection, and with few clients—although they are not. There is a correspondence between the actual semantics and an idealized much simpler variant. This suggests to carry out the verification in two steps. Check that the program is well-behaved. If so, perform the verification on the idealized semantics. Otherwise, report that the code is sensitive to the environment.

Arnd is one of the few researchers who is able to switch with ease between the practice of writing code and the theory of defining programming interfaces. Discussions with him had substantial influence on the above verification approach, which we started to develop in Kaiserslautern, two offices next to his. In this paper, we give a unified presentation of our findings.

Happy Birthday, Arnd!


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Parosh Aziz Abdulla, Bengt Jonsson, and Cong Quy Trinh. “Automated Verification of Linearization Policies”. In: SAS Vol. 9837. LNCS. Springer, 2016, pp. 61–83.Google Scholar
  2. 2.
    Parosh Aziz Abdulla et al. “An Integrated Specification and Verification Technique for Highly Concurrent Data Structures”. In: TACAS Vol. 7795. LNCS. Springer, 2013, pp. 324–338.Google Scholar
  3. 3.
    Sarita V. Adve and Mark D. Hill. “A Unified Formalization of Four Shared-Memory Models”. In: IEEE Trans. Parallel Distrib Syst. 4.6 (1993), pp. 613–624.Google Scholar
  4. 4.
    Jade Alglave. “A shared memory poetics”. PhD thesis. Université Paris 7, 2010.Google Scholar
  5. 5.
    Ahmed Bouajjani, Egor Derevenetc, and Roland Meyer. “Checking and Enforcing Robustness against TSO”. In: ESOP Vol. 7792. LNCS. Springer, 2013, pp. 533–553.Google Scholar
  6. 6.
    Ahmed Bouajjani, Egor Derevenetc, and Roland Meyer. “Checking Robustness against TSO”. In: CoRR abs/1208.6152 (2012).Google Scholar
  7. 7.
    Ahmed Bouajjani, Roland Meyer, and Eike Möhlmann. “Deciding Robustness against Total Store Ordering”. In: ICALP (2). Vol. 6756. LNCS. Springer, 2011, pp. 428–440.Google Scholar
  8. 8.
    Ahmed Bouajjani et al. “Lazy TSO Reachability”. In: FASE Vol. 9033. LNCS. Springer, 2015, pp. 267–282.Google Scholar
  9. 9.
    Sebastian Burckhardt and Madanlal Musuvathi. “Effective Program Verification for Relaxed Memory Models”. In: CAV Vol. 5123. LNCS. Springer, 2008, pp. 107–120.Google Scholar
  10. 10.
    Edmund M. Clarke. “The Birth of Model Checking”. In: 25 Years of Model Checking. Vol. 5000. LNCS. Springer, 2008, pp. 1–26.Google Scholar
  11. 11.
    Patrick Cousot and Radhia Cousot. “Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints”. In: POPL ACM, 1977, pp. 238–252.Google Scholar
  12. 12.
    Patrick Cousot and Radhia Cousot. “Systematic Design of Program Analysis Frameworks”. In: POPL ACM Press, 1979, pp. 269–282.Google Scholar
  13. 13.
    Edsger W. Dijkstra. “Cooperating Sequential Processes”. In: The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls. Ed. by Per Brinch Hansen. Springer New York, 2002, pp. 65–138.Google Scholar
  14. 14.
    Simon Doherty et al. “Formal Verification of a Practical Lock-Free Queue Algorithm”. In: FORTE. Vol. 3235. LNCS. Springer, 2004, pp. 97–114.Google Scholar
  15. 15.
    Tayfun Elmas, Shaz Qadeer, and Serdar Tasiran. “A calculus of atomic actions”. In: POPL ACM, 2009, pp. 2–15.Google Scholar
  16. 16.
    Tayfun Elmas et al. “Simplifying Linearizability Proofs with Reduction and Abstraction”. In: TACAS Vol. 6015. LNCS. Springer, 2010, pp. 296–311.Google Scholar
  17. 17.
    Timothy L. Harris. “A Pragmatic Implementation of Non-blocking Linked-Lists”. In: DISC Vol. 2180. LNCS. Springer, 2001, pp. 300–314.Google Scholar
  18. 18.
    Frédéric Haziza et al. “Pointer Race Freedom”. In: CoRR abs/1511.00184 (2015).Google Scholar
  19. 19.
    Frédéric Haziza et al. “Pointer Race Freedom”. In: VMCAI Vol. 9583. LNCS. Springer, 2016, pp. 393–412.Google Scholar
  20. 20.
    Maurice Herlihy and Nir Shavit. The art of multiprocessor programming. Morgan Kaufmann, 2008.Google Scholar
  21. 21.
    Lukás Holıik et al. “Effect Summaries for Thread-Modular Analysis”. In: CoRR abs/1705.03701 (2017).Google Scholar
  22. 22.
    Lukás Holıik et al. “Effect Summaries for Thread-Modular Analysis Sound Analysis Despite an Unsound Heuristic”. In: SAS Vol. 10422. LNCS. Springer, 2017, pp. 169–191.Google Scholar
  23. 23.
    Thuan Quang Huynh and Abhik Roychoudhury. “A Memory Model Sensitive Checker for C#”. In: FM Vol. 4085. LNCS. Springer, 2006, pp. 476–491.Google Scholar
  24. 24.
    Bengt Jonsson. “Using refinement calculus techniques to prove linearizability”. In: Formal Asp. Comput. 24.4-6 (2012), pp. 537–554.Google Scholar
  25. 25.
    Leslie Lamport. “A Fast Mutual Exclusion Algorithm”. In: ACM Trans. Comput. Syst. 5.1 (1987), pp. 1–11.CrossRefGoogle Scholar
  26. 26.
    Leslie Lamport. “How to Make a Multiprocessor Computer That Correctly Executes Multi- process Programs”. In: IEEE Trans. Computers 28.9 (1979), pp. 690–691.Google Scholar
  27. 27.
    Maged M. Michael. “High performance dynamic lock-free hash tables and list-based sets”. In: SPAA 2002, pp. 73–82.Google Scholar
  28. 28.
    Maged M. Michael and Michael L. Scott. “Nonblocking Algorithms and Preemption-Safe Locking on Multiprogrammed Shared Memory Multiprocessors”. In: J. Parallel Distrib Comput. 51.1 (1998), pp. 1–26.Google Scholar
  29. 29.
    Maged M. Michael and Michael L. Scott. “Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms”. In: PODC ACM, 1996, pp. 267–275.Google Scholar
  30. 30.
    Seungjoon Park and David L. Dill. “An Executable Specification, Analyzer and Verifier for RMO (Relaxed Memory Order)”. In: SPAA. 1995, pp. 34–41.Google Scholar
  31. 31.
    Gary L. Peterson. “Myths About the Mutual Exclusion Problem”. In: Inf Process. Lett. 12.3 (1981), pp. 115–116.Google Scholar
  32. 32.
    Pedro da Rocha Pinto, Thomas Dinsdale-Young, and Philippa Gardner. “TaDA: A Logic for Time and Data Abstraction”. In: ECOOP Vol. 8586. LNCS. Springer, 2014, pp. 207–231.Google Scholar
  33. 33.
    Gerhard Schellhorn, John Derrick, and Heike Wehrheim. “A Sound and Complete Proof Technique for Linearizability of Concurrent Data Structures”. In: ACM Trans. Comput. Log. 15.4 (2014), 31:1–31:37.MathSciNetCrossRefGoogle Scholar
  34. 34.
    Peter Sewell et al. “x86-TSO: a rigorous and usable programmer’s model for x86 multipro- cessors”. In: Commun. ACM 53.7 (2010), pp. 89–97.Google Scholar
  35. 35.
    Dennis E. Shasha and Marc Snir. “Efficient and Correct Execution of Parallel Programs that Share Memory”. In: ACM Trans. Program. Lang Syst. 10.2 (1988), pp. 282–312.Google Scholar
  36. 36.
    Viktor Vafeiadis. “RGSep Action Inference”. In: VMCAI Vol. 5944. LNCS. Springer, 2010, pp. 345–361.Google Scholar
  37. 37.
    Viktor Vafeiadis and Matthew J. Parkinson. “A Marriage of Rely/Guarantee and Separation Logic”. In: CONCUR Vol. 4703. LNCS. Springer, 2007, pp. 256–271.Google Scholar
  38. 38.
    Martin T. Vechev and Eran Yahav. “Deriving linearizable fine-grained concurrent objects”. In: PLDI ACM, 2008, pp. 125–135.Google Scholar
  39. 39.
    Eran Yahav and Shmuel Sagiv. “Automatically Verifying Concurrent Queue Algorithms”. In: Electr Notes Theor Comput. Sci. 89.3 (2003), pp. 450–463.Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.TU BraunschweigBraunschweigGermany

Personalised recommendations