skip to main content

CAAT: consistency as a theory

Published:31 October 2022Publication History
Skip Abstract Section

Abstract

We propose a family of logical theories for capturing an abstract notion of consistency and show how to build a generic and efficient theory solver that works for all members in the family. The theories can be used to model the influence of memory consistency models on the semantics of concurrent programs. They are general enough to precisely capture important examples like TSO, POWER, ARMv8, RISC-V, RC11, IMM, and the Linux kernel memory model. To evaluate the expressiveness of our theories and the performance of our solver, we integrate them into a lazy SMT scheme that we use as a backend for a bounded model checking tool. An evaluation against related verification tools shows, besides flexibility, promising performance on challenging programs under complex memory models.

References

  1. Parosh A. Abdulla, Stavros Aronis, Mohamed Faouzi Atig, Bengt Jonsson, Carl Leonardsson, and Konstantinos F. Sagonas. 2015. Stateless Model Checking for TSO and PSO. In TACAS (LNCS, Vol. 9035). Springer, 353–367. https://doi.org/10.1007/978-3-662-46681-0_28 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Parosh Aziz Abdulla, Stavros Aronis, Bengt Jonsson, and Konstantinos Sagonas. 2014. Optimal dynamic partial order reduction. In POPL. ACM, 373–384. https://doi.org/10.1145/2535838.2535845 Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Parosh A. Abdulla, Mohamed Faouzi Atig, Bengt Jonsson, and Carl Leonardsson. 2016. Stateless Model Checking for POWER. In CAV (LNCS, Vol. 9780). Springer, 134–156. https://doi.org/10.1007/978-3-319-41540-6_8 Google ScholarGoogle ScholarCross RefCross Ref
  4. Parosh Aziz Abdulla, Mohamed Faouzi Atig, Bengt Jonsson, and Tuan Phong Ngo. 2018. Optimal stateless model checking under the release-acquire semantics. Proc. ACM Program. Lang., 2, OOPSLA (2018), 135:1–135:29. https://doi.org/10.1145/3276505 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Serge Abiteboul, Richard Hull, and Victor Vianu. 1995. Foundations of Databases: The Logical Level. Addison-Wesley Longman Publishing Co., Inc.. https://doi.org/10.5555/551350 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. A. Adir, H. Attiya, and G. Shurek. 2003. Information-flow models for shared memory with an application to the PowerPC architecture. IEEE Transactions on Parallel and Distributed Systems, 14, 5 (2003), 502–515. https://doi.org/10.1109/TPDS.2003.1199067 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S.V. Adve and K. Gharachorloo. 1996. Shared memory consistency models: a tutorial. Computer, 29, 12 (1996), 66–76. https://doi.org/10.1109/2.546611 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Jade Alglave. 2010. A Shared Memory Poetics. L’université Paris Denis Diderot. Google ScholarGoogle Scholar
  9. Jade Alglave, Mark Batty, Alastair F. Donaldson, Ganesh Gopalakrishnan, Jeroen Ketema, Daniel Poetzl, Tyler Sorensen, and John Wickerson. 2015. GPU Concurrency: Weak Behaviours and Programming Assumptions. In ASPLOS. ACM, 577–591. https://doi.org/10.1145/2786763.2694391 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jade Alglave and Patrick Cousot. 2016. Syntax and analytic semantics of LISA. CoRR, abs/1608.06583 (2016), arxiv:1608.06583 Google ScholarGoogle Scholar
  11. Jade Alglave, Patrick Cousot, and Luc Maranget. 2016. Syntax and semantics of the weak consistency model specification language CAT. CoRR, abs/1608.07531 (2016), arxiv:1608.07531 Google ScholarGoogle Scholar
  12. Jade Alglave, Daniel Kroening, and Michael Tautschnig. 2013. Partial Orders for Efficient Bounded Model Checking of Concurrent Software. In CAV (LNCS, Vol. 8044). Springer, 141–157. https://doi.org/10.1007/978-3-642-39799-8_9 Google ScholarGoogle ScholarCross RefCross Ref
  13. Jade Alglave, Luc Maranget, Paul E. McKenney, Andrea Parri, and Alan S. Stern. 2018. Frightening Small Children and Disconcerting Grown-ups: Concurrency in the Linux Kernel. In ASPLOS. ACM, 405–418. https://doi.org/10.1145/3173162.3177156 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Jade Alglave, Luc Maranget, Susmit Sarkar, and Peter Sewell. 2012. Fences in weak memory models (extended version). Formal Methods in System Design, 40, 2 (2012), 170–205. https://doi.org/10.1007/s10703-011-0135-z Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Jade Alglave, Luc Maranget, and Michael Tautschnig. 2014. Herding Cats: Modelling, Simulation, Testing, and Data Mining for Weak Memory. ACM Trans. Program. Lang. Syst., 36, 2 (2014), 7:1–7:74. https://doi.org/10.1145/2627752 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Alasdair Armstrong, Brian Campbell, Ben Simner, Christopher Pulte, and Peter Sewell. 2021. Isla: Integrating Full-Scale ISA Semantics and Axiomatic Concurrency Models. In CAV (1) (Lecture Notes in Computer Science, Vol. 12759). Springer, 303–316. https://doi.org/10.1007/978-3-030-81685-8_14 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Mohamed Faouzi Atig, Ahmed Bouajjani, Sebastian Burckhardt, and Madanlal Musuvathi. 2010. On the verification problem for weak memory models. In POPL. ACM, 7–18. https://doi.org/10.1145/1706299.1706303 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. G. Audemard, A. Cimatti, A. Kornilowicz, and R. Sebastiani. 2002. Bounded Model Checking for Timed Systems. In FORTE. Springer Berlin Heidelberg. https://doi.org/10.1007/3-540-36135-9_16 Google ScholarGoogle ScholarCross RefCross Ref
  19. Daniel Baier, Dirk Beyer, and Karlheinz Friedberger. 2021. JavaSMT 3: Interacting with SMT Solvers in Java. In CAV (2) (LNCS, Vol. 12760). Springer, 195–208. https://doi.org/10.1007/978-3-030-81688-9_9 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. François Bancilhon. 1985. Naive Evaluation of Recursively Defined Relations. In On Knowledge Base Management Systems: Integrating Artificial Intelligence and Database Technologies (Topics in Information Systems). Springer, 165–178. https://doi.org/10.1007/978-1-4612-4980-1_17 Google ScholarGoogle ScholarCross RefCross Ref
  21. Clark W. Barrett, Roberto Sebastiani, Sanjit A. Seshia, and Cesare Tinelli. 2009. Satisfiability Modulo Theories. In Handbook of Satisfiability (Frontiers in Artificial Intelligence and Applications, Vol. 185). IOS Press, 825–885. https://doi.org/10.3233/FAIA201017 Google ScholarGoogle ScholarCross RefCross Ref
  22. Mark Batty, Alastair F. Donaldson, and John Wickerson. 2016. Overhauling SC atomics in C11 and OpenCL. In POPL. ACM, 634–648. https://doi.org/10.1145/2837614.2837637 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Mark Batty, Kayvan Memarian, Kyndylan Nienhuis, Jean Pichon-Pharabod, and Peter Sewell. 2015. The Problem of Programming Language Concurrency Semantics. In ESOP (LNCS, Vol. 9032). Springer, 283–307. https://doi.org/10.1007/978-3-662-46669-8_12 Google ScholarGoogle ScholarCross RefCross Ref
  24. Mark Batty, Kayvan Memarian, Scott Owens, Susmit Sarkar, and Peter Sewell. 2012. Clarifying and compiling C/C++ concurrency: from C++11 to POWER. In POPL. ACM, 509–520. https://doi.org/10.1145/2103621.2103717 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Mark Batty, Scott Owens, Susmit Sarkar, Peter Sewell, and Tjark Weber. 2011. Mathematizing C++ concurrency. In POPL. ACM, 55–66. https://doi.org/10.1145/1925844.1926394 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Dirk Beyer. 2022. Progress on Software Verification: SV-COMP 2022. In TACAS (2). Springer. https://doi.org/10.1007/978-3-030-99527-0_20 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Hans-Juergen Boehm and Sarita V. Adve. 2008. Foundations of the C++ concurrency memory model. In PLDI. ACM, 68–78. https://doi.org/10.1145/1379022.1375591 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. James Bornholt and Emina Torlak. 2017. Synthesizing memory models from framework sketches and Litmus tests. In PLDI. ACM, 467–481. https://doi.org/10.1145/3140587.3062353 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Ahmed Bouajjani, Egor Derevenetc, and Roland Meyer. 2013. Checking and Enforcing Robustness against TSO. In ESOP (LNCS, Vol. 7792). Springer, 533–553. https://doi.org/10.1007/978-3-642-37036-6_29 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Sebastian Burckhardt and Madanlal Musuvathi. 2008. Effective Program Verification for Relaxed Memory Models. In CAV (LNCS, Vol. 5123). Springer, 107–120. https://doi.org/10.1007/978-3-540-70545-1_12 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Edmund M. Clarke, Armin Biere, Richard Raimi, and Yunshan Zhu. 2001. Bounded Model Checking Using Satisfiability Solving. Formal Methods in System Design, 19, 1 (2001), 7–34. https://doi.org/10.1023/A:1011276507260 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. William W. Collier. 1992. Reasoning about parallel architectures. Prentice Hall. isbn:978-0-13-766098-8 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Simon Cooksey, Sarah Harris, Mark Batty, Radu Grigore, and Mikolás Janota. 2019. PrideMM: Second Order Model Checking for Memory Consistency Models. In FM Workshops (2) (LNCS, Vol. 12233). Springer, 507–525. https://doi.org/10.1007/978-3-030-54997-8_31 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Andrei M. Dan, Yuri Meshman, Martin T. Vechev, and Eran Yahav. 2013. Predicate Abstraction for Relaxed Memory Models. In SAS (LNCS, Vol. 7935). Springer, 84–104. https://doi.org/10.1007/978-3-642-38856-9_7 Google ScholarGoogle ScholarCross RefCross Ref
  35. Andrei M. Dan, Yuri Meshman, Martin T. Vechev, and Eran Yahav. 2015. Effective Abstractions for Verification under Relaxed Memory Models. In VMCAI (LNCS, Vol. 8931). Springer, 449–466. https://doi.org/10.1007/978-3-662-46081-8_25 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Hoang-Hai Dang, Jacques-Henri Jourdan, Jan-Oliver Kaiser, and Derek Dreyer. 2020. RustBelt meets relaxed memory. Proc. ACM Program. Lang., 4, POPL (2020), 34:1–34:29. https://doi.org/10.1145/3371102 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Martin Davis, George Logemann, and Donald W. Loveland. 1962. A machine program for theorem-proving. Commun. ACM, 5, 7 (1962), 394–397. https://doi.org/10.1145/368273.368557 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Martin Davis and Hilary Putnam. 1960. A Computing Procedure for Quantification Theory. J. ACM, 7, 3 (1960), 201–215. https://doi.org/10.1145/321033.321034 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Leonardo De Moura and Nikolaj Bjørner. 2008. Z3: An Efficient SMT Solver. In TACAS (LNCS, Vol. 4963). Springer, 337–340. https://doi.org/10.1007/978-3-540-78800-3_24 Google ScholarGoogle ScholarCross RefCross Ref
  40. Brian Demsky and Patrick Lam. 2015. SATCheck: SAT-directed stateless model checking for SC and TSO. In OOPSLA. ACM, 20–36. https://doi.org/10.1145/2814270.2814297 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Dave Dice and Alex Kogan. 2019. Compact NUMA-Aware Locks. In EuroSys. ACM, 15 pages. https://doi.org/10.1145/3302424.3303984 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Bruno Dutertre. 2014. Yices 2.2. In CAV (Lecture Notes in Computer Science, Vol. 8559). Springer, 737–744. https://doi.org/10.1007/978-3-319-08867-9_49 Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Roman Elizarov, Mikhail A. Belyaev, Marat Akhin, and Ilmir Usmanov. 2021. Kotlin coroutines: design and implementation. In Onward!. ACM, 68–84. https://doi.org/10.1145/3486607.3486751 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Herbert B. Enderton. 1972. A mathematical introduction to logic. Academic Press. https://doi.org/10.1016/C2009-0-22107-6 Google ScholarGoogle ScholarCross RefCross Ref
  45. Hongyu Fan, Weiting Liu, and Fei He. 2022. Interference relation-guided SMT solving for multi-threaded program verification. In PPoPP. ACM, 163–176. https://doi.org/10.1145/3503221.3508424 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Natalia Gavrilenko, Hernán Ponce de León, Florian Furbach, Keijo Heljanko, and Roland Meyer. 2019. BMC for Weak Memory Models: Relation Analysis for Compact SMT Encodings. In CAV (LNCS, Vol. 11561). Springer, 355–365. https://doi.org/10.1007/978-3-030-25540-4_19 Google ScholarGoogle ScholarCross RefCross Ref
  47. Thomas Haas, Roland Meyer, and Hernán Ponce-de León. 2022. CAAT: Consistency as a Theory (Artifact). https://doi.org/10.5281/zenodo.7079674 Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Fei He, Zhihang Sun, and Hongyu Fan. 2021. Satisfiability modulo ordering consistency theory for multi-threaded program verification. In PLDI. ACM, 1264–1279. https://doi.org/10.1145/3453483.3454108 Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Yannis E. Ioannidis and Raghu Ramakrishnan. 1988. Efficient Transitive Closure Algorithms. In VLDB. Morgan Kaufmann, 382–394. https://doi.org/10.5555/645915.671829 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Daniel Jackson. 2000. Automating First-Order Relational Logic. SIGSOFT Softw. Eng. Notes, 25, 6 (2000), 130–139. https://doi.org/10.1145/357474.355063 Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Daniel Jackson. 2003. Alloy: A Logical Modelling Language. In ZB (Lecture Notes in Computer Science, Vol. 2651). Springer, 1. https://doi.org/10.1007/3-540-44880-2_1 Google ScholarGoogle ScholarCross RefCross Ref
  52. Daniel Jackson. 2019. Alloy: a language and tool for exploring software designs. Commun. ACM, 62, 9 (2019), 66–76. https://doi.org/10.1145/3338843 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Alan Jeffrey and James Riely. 2016. On Thin Air Reads Towards an Event Structures Model of Relaxed Memory. In LICS. ACM, 759–767. https://doi.org/10.1145/2933575.2934536 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Egor George Karpenkov, Karlheinz Friedberger, and Dirk Beyer. 2016. JavaSMT: A Unified Interface for SMT Solvers in Java. In VSTTE (LNCS, Vol. 9971). Springer, 139–148. https://doi.org/10.1007/978-3-319-48869-1_11 Google ScholarGoogle ScholarCross RefCross Ref
  55. Michalis Kokologiannakis, Azalea Raad, and Viktor Vafeiadis. 2019. Model checking for weakly consistent libraries. In PLDI. ACM, 96–110. https://doi.org/10.1145/3314221.3314609 Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Michalis Kokologiannakis, Xiaowei Ren, and Viktor Vafeiadis. 2019. Dynamic Partial Order Reductions for Spinloops. In FMCAD. TU Wien Academic Press, 163–172. https://doi.org/10.34727/2021/isbn.978-3-85448-046-4_25 Google ScholarGoogle ScholarCross RefCross Ref
  57. Michalis Kokologiannakis and Viktor Vafeiadis. 2021. GenMC: A Model Checker for Weak Memory Models. In CAV (LNCS, Vol. 12759). Springer, 427–440. https://doi.org/10.1007/978-3-030-81685-8_20 Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Nikita Koval, Dmitry Khalanskiy, and Dan Alistarh. 2021. A Formally-Verified Framework for Fair Synchronization in Kotlin Coroutines. CoRR, abs/2111.12682 (2021), arxiv:2111.12682 Google ScholarGoogle Scholar
  59. Ori Lahav, Nick Giannarakis, and Viktor Vafeiadis. 2016. Taming release-acquire consistency. In POPL. ACM, 649–662. https://doi.org/10.1145/2837614.2837643 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Ori Lahav, Viktor Vafeiadis, Jeehoon Kang, Chung-Kil Hur, and Derek Dreyer. 2017. Repairing sequential consistency in C/C++11. In PLDI. ACM, 618–632. https://doi.org/10.1145/3062341.3062352 Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Leslie Lamport. 1979. How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs. IEEE Trans. Computers, 28, 9 (1979), 690–691. https://doi.org/10.1109/TC.1979.1675439 Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Stella Lau, Victor B. F. Gomes, Kayvan Memarian, Jean Pichon-Pharabod, and Peter Sewell. 2019. Cerberus-BMC: A Principled Reference Semantics and Exploration Tool for Concurrent and Sequential C. In CAV (LNCS, Vol. 11561). Springer, 387–397. https://doi.org/10.1007/978-3-030-25540-4_22 Google ScholarGoogle ScholarCross RefCross Ref
  63. K. Rustan M. Leino. 2008. This is Boogie 2. https://www.microsoft.com/en-us/research/publication/this-is-boogie-2-2/ Google ScholarGoogle Scholar
  64. Sela Mador-Haim, Luc Maranget, Susmit Sarkar, Kayvan Memarian, Jade Alglave, Scott Owens, Rajeev Alur, Milo M. K. Martin, Peter Sewell, and Derek Williams. 2012. An Axiomatic Memory Model for POWER Multiprocessors. In CAV (Lecture Notes in Computer Science, Vol. 7358). Springer, 495–512. https://doi.org/10.1007/978-3-642-31424-7_36 Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Yatin A. Manerkar, Caroline Trippel, Daniel Lustig, Michael Pellauer, and Margaret Martonosi. 2016. Counterexamples and Proof Loophole for the C/C++ to POWER and ARMv7 Trailing-Sync Compiler Mappings. CoRR, abs/1611.01507 (2016), arxiv:1611.01507 Google ScholarGoogle Scholar
  66. Jeremy Manson, William Pugh, and Sarita V. Adve. 2006. The Java memory model. In POPL. ACM, 378–391. https://doi.org/10.1145/1040305.1040336 Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Roland Meyer and Sebastian Wolff. 2019. Decoupling lock-free data structures from memory reclamation for static analysis. PACMPL, 3, POPL (2019), 58:1–58:31. https://doi.org/10.1145/3290371 Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Roland Meyer and Sebastian Wolff. 2020. Pointer life cycle types for lock-free data structures with memory reclamation. PACMPL, 4, POPL (2020), 68:1–68:36. https://doi.org/10.1145/3371136 Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. 1999. Principles of program analysis. Springer. https://doi.org/10.1007/978-3-662-03811-6 Google ScholarGoogle ScholarCross RefCross Ref
  70. Jonas Oberhauser, Rafael Lourenco de Lima Chehab, Diogo Behrens, Ming Fu, Antonio Paolillo, Lilith Oberhauser, Koustubha Bhat, Yuzhong Wen, Haibo Chen, Jaeho Kim, and Viktor Vafeiadis. 2021. VSync: push-button verification and optimization for synchronization primitives on weak memory models. In ASPLOS. ACM, 530–545. https://doi.org/10.1145/3445814.3446748 Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Derek C Oppen. 1980. Complexity, convexity and combinations of theories. Theoretical computer science, 12, 3 (1980), 291–302. https://doi.org/10.1016/0304-3975(80)90059-6 Google ScholarGoogle ScholarCross RefCross Ref
  72. Antonio Paolillo, Hernán Ponce de León, Diogo Behrens Thomas Haas, Rafael Lourenco de Lima Chehab, Ming Fu, and Roland Meyer. 2022. Verifying and Optimizing Compact NUMA-Aware Locks on Weak Memory Models. CoRR, abs/2111.15240 (2022), arxiv:2111.15240 Google ScholarGoogle Scholar
  73. Anton Podkopaev, Ori Lahav, and Viktor Vafeiadis. 2019. Bridging the gap between programming languages and hardware weak memory models. PACMPL, 3, POPL (2019), 69:1–69:31. https://doi.org/10.1145/3290382 Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Hernán Ponce de León, Florian Furbach, Keijo Heljanko, and Roland Meyer. 2017. Portability Analysis for Weak Memory Models. PORTHOS: One Tool for all Models. In SAS (LNCS, Vol. 10422). Springer, 299–320. https://doi.org/10.1007/978-3-319-66706-5_15 Google ScholarGoogle ScholarCross RefCross Ref
  75. Hernán Ponce de León, Florian Furbach, Keijo Heljanko, and Roland Meyer. 2018. BMC with Memory Models as Modules. In FMCAD. IEEE, 1–9. https://doi.org/10.23919/FMCAD.2018.8603021 Google ScholarGoogle ScholarCross RefCross Ref
  76. Hernán Ponce de León, Florian Furbach, Keijo Heljanko, and Roland Meyer. 2020. Dartagnan: Bounded Model Checking for Weak Memory Models (Competition Contribution). In TACAS (2) (LNCS, Vol. 12079). Springer, 378–382. https://doi.org/10.1007/978-3-030-45237-7_24 Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Pablo Ponzio, Ariel Godio, Nicolás Rosner, Marcelo Arroyo, Nazareno Aguirre, and Marcelo F. Frias. 2021. Efficient Bounded Model Checking of Heap-Manipulating Programs using Tight Field Bounds. In FASE. Springer International Publishing, 218–239. https://doi.org/10.1007/978-3-030-71500-7_11 Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Christopher Pulte, Shaked Flur, Will Deacon, Jon French, Susmit Sarkar, and Peter Sewell. 2018. Simplifying ARM concurrency: multicopy-atomic axiomatic and operational models for ARMv8. PACMPL, 2, POPL (2018), 19:1–19:29. https://doi.org/10.1145/3158107 Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Liam Roditty. 2008. A Faster and Simpler Fully Dynamic Transitive Closure. 4, 1 (2008), https://doi.org/10.1145/1328911.1328917 Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Susmit Sarkar, Peter Sewell, Jade Alglave, Luc Maranget, and Derek Williams. 2011. Understanding POWER multiprocessors. In PLDI. ACM, 175–186. https://doi.org/10.1145/1993316.1993520 Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Roberto Sebastiani. 2007. Lazy Satisability Modulo Theories. J. Satisf. Boolean Model. Comput., 3, 3-4 (2007), 141–224. https://doi.org/10.3233/SAT190034 Google ScholarGoogle ScholarCross RefCross Ref
  82. Dennis Shasha and Marc Snir. 1988. Efficient and Correct Execution of Parallel Programs That Share Memory. ACM Trans. Program. Lang. Syst., 10, 2 (1988), apr, 282–312. issn:0164-0925 https://doi.org/10.1145/42190.42277 Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Ben Simner, Alasdair Armstrong, Jean Pichon-Pharabod, Christopher Pulte, Richard Grisenthwaite, and Peter Sewell. 2022. Relaxed virtual memory in Armv8-A. In ESOP (Lecture Notes in Computer Science, Vol. 13240). Springer, 143–173. https://doi.org/10.1007/978-3-030-99336-8_6 Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Ben Simner, Shaked Flur, Christopher Pulte, Alasdair Armstrong, Jean Pichon-Pharabod, Luc Maranget, and Peter Sewell. 2020. ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures. In ESOP (Lecture Notes in Computer Science, Vol. 12075). Springer, 626–655. https://doi.org/10.1007/978-3-030-44914-8_23 Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Pradeep S. Sindhu, Jean-Marc Frailong, and Michel Cekleov. 1992. Formal Specification of Memory Models. Springer US, Boston, MA. 25–41. isbn:978-1-4615-3604-8 https://doi.org/10.1007/978-1-4615-3604-8_2 Google ScholarGoogle ScholarCross RefCross Ref
  86. Robert Tarjan. 1971. Depth-first search and linear graph algorithms. In 12th Annual Symposium on Switching and Automata Theory (swat 1971). 114–121. https://doi.org/10.1109/SWAT.1971.10 Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Emina Torlak and Daniel Jackson. 2007. Kodkod: A Relational Model Finder. In TACAS (Lecture Notes in Computer Science, Vol. 4424). Springer, 632–647. https://doi.org/10.1007/978-3-540-71209-1_49 Google ScholarGoogle ScholarCross RefCross Ref
  88. Emina Torlak, Mandana Vaziri, and Julian Dolby. 2010. MemSAT: Checking axiomatic specifications of memory models. In PLDI. ACM, 341–350. https://doi.org/10.1145/1809028.1806635 Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Aaron Turon, Viktor Vafeiadis, and Derek Dreyer. 2014. GPS: Navigating weak memory with ghosts, protocols, and separation. In OOPSLA. ACM, 691–707. https://doi.org/10.1145/2660193.2660243 Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Viktor Vafeiadis, Thibaut Balabonski, Soham Chakraborty, Robin Morisset, and Francesco Zappa Nardelli. 2015. Common Compiler Optimisations are Invalid in the C11 Memory Model and what we can do about it. In POPL. ACM, 209–220. https://doi.org/10.1145/2676726.2676995 Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Viktor Vafeiadis and Chinmay Narayan. 2013. Relaxed separation logic: A program logic for C11 concurrency. In OOPSLA. ACM, 867–884. https://doi.org/10.1145/2544173.2509532 Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Douglas B. West. 2000. Introduction to Graph Theory. Prentice Hall. Google ScholarGoogle Scholar
  93. John Wickerson, Mark Batty, Tyler Sorensen, and George A. Constantinides. 2017. Automatically Comparing Memory Consistency Models. In POPL. ACM, 190–204. https://doi.org/10.1145/3093333.3009838 Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. David Zhao, Pavle Subotic, and Bernhard Scholz. 2019. Provenance for Large-scale Datalog. CoRR, abs/1907.05045 (2019), arxiv:1907.05045 Google ScholarGoogle Scholar

Index Terms

  1. CAAT: consistency as a theory

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Article Metrics

          • Downloads (Last 12 months)381
          • Downloads (Last 6 weeks)30

          Other Metrics

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!