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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Jade Alglave. 2010. A Shared Memory Poetics. L’université Paris Denis Diderot.
Google Scholar
- 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 Scholar
Digital Library
- Jade Alglave and Patrick Cousot. 2016. Syntax and analytic semantics of LISA. CoRR, abs/1608.06583 (2016), arxiv:1608.06583
Google Scholar
- 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 Scholar
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- William W. Collier. 1992. Reasoning about parallel architectures. Prentice Hall. isbn:978-0-13-766098-8
Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- Dave Dice and Alex Kogan. 2019. Compact NUMA-Aware Locks. In EuroSys. ACM, 15 pages. https://doi.org/10.1145/3302424.3303984
Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Herbert B. Enderton. 1972. A mathematical introduction to logic. Academic Press. https://doi.org/10.1016/C2009-0-22107-6
Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- K. Rustan M. Leino. 2008. This is Boogie 2. https://www.microsoft.com/en-us/research/publication/this-is-boogie-2-2/
Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Liam Roditty. 2008. A Faster and Simpler Fully Dynamic Transitive Closure. 4, 1 (2008), https://doi.org/10.1145/1328911.1328917
Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Douglas B. West. 2000. Introduction to Graph Theory. Prentice Hall.
Google Scholar
- 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 Scholar
Digital Library
- David Zhao, Pavle Subotic, and Bernhard Scholz. 2019. Provenance for Large-scale Datalog. CoRR, abs/1907.05045 (2019), arxiv:1907.05045
Google Scholar
Index Terms
CAAT: consistency as a theory
Recommendations
Satisfiability Modulo Ordering Consistency Theory for SC, TSO, and PSO Memory Models
Automatically verifying multi-threaded programs is difficult because of the vast number of thread interleavings, a problem aggravated by weak memory consistency. Partial orders can help with verification because they can represent many thread ...
Kater: Automating Weak Memory Model Metatheory and Consistency Checking
The metatheory of axiomatic weak memory models covers questions like the correctness of compilation mappings from one model to another and the correctness of local program transformations according to a given model---topics usually requiring lengthy ...
Partial-coherence abstractions for relaxed memory models
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationWe present an approach for automatic verification and fence inference in concurrent programs running under relaxed memory models. Verification under relaxed memory models is a hard problem. Given a finite state program and a safety specification, ...






Comments