Previous work formalized the C++ memory model in Isabelle/HOL in an effort to clarify the proposed standard's semantics. Here we employ the model finder Nitpick to check litmus test programs that exercise the memory model, including a simple locking algorithm. Nitpick is built on Kodkod (Alloy's backend) but understands Isabelle's richer logic; hence it can be applied directly to the C++ memory model. We only need to give it a few hints, and thanks to the underlying SAT solver it scales much better than the CPPMEM explicit-state model checker. This case study inspired optimizations in Nitpick from which other formalizations can now benefit.</p
Compilers sometimes generate correct sequential code but break the concurrency memory model of the p...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
Previous work formalized the C++ memory model in Isabelle/HOL in an effort to clarify the proposed s...
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly...
We describe the design and C++ implementation of the newly created memory module (MM) in this work. ...
Modern computers are marvels of engineering. Customisable reasoning engines which can be programmed ...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Concurrency libraries can facilitate the development of multi-threaded programs by providing concurr...
When constructing complex concurrent systems, abstraction is vi-tal: programmers should be able to r...
Abstract. When verifying a concurrent program, it is usual to assume that memory is sequentially con...
We present a stateless model checking algorithm for verifying concurrent programs running under RC11...
A memory model for a concurrent imperative programming language specifies which writes to shared var...
A memory model for a concurrent imperative programming lan-guage specifies which writes to shared va...
International audienceCompilers sometimes generate correct sequential code but break the concurrency...
Compilers sometimes generate correct sequential code but break the concurrency memory model of the p...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
Previous work formalized the C++ memory model in Isabelle/HOL in an effort to clarify the proposed s...
Shared-memory concurrency in C and C++ is pervasive in systems programming, but has long been poorly...
We describe the design and C++ implementation of the newly created memory module (MM) in this work. ...
Modern computers are marvels of engineering. Customisable reasoning engines which can be programmed ...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Concurrency libraries can facilitate the development of multi-threaded programs by providing concurr...
When constructing complex concurrent systems, abstraction is vi-tal: programmers should be able to r...
Abstract. When verifying a concurrent program, it is usual to assume that memory is sequentially con...
We present a stateless model checking algorithm for verifying concurrent programs running under RC11...
A memory model for a concurrent imperative programming language specifies which writes to shared var...
A memory model for a concurrent imperative programming lan-guage specifies which writes to shared va...
International audienceCompilers sometimes generate correct sequential code but break the concurrency...
Compilers sometimes generate correct sequential code but break the concurrency memory model of the p...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...
Systems code is almost universally written in the C programming language or a variant. C has a very ...