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
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...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...
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...
Modern computers are marvels of engineering. Customisable reasoning engines which can be programmed ...
Weak memory presents a new challenge for program verification and has resulted in the development of...
International audienceThis article presents the formal verification, using the Coq proof assistant, ...
Abstract. When verifying a concurrent program, it is usual to assume that memory is sequentially con...
The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in th...
Concurrency libraries can facilitate the development of multithreaded programs by providing concurre...
With the introduction of multi-core CPUs, multi-threaded programming is becoming significantly more ...
Concurrent libraries are the building blocks for concurrency. They encompass a range of abstractions...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
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...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...
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...
Modern computers are marvels of engineering. Customisable reasoning engines which can be programmed ...
Weak memory presents a new challenge for program verification and has resulted in the development of...
International audienceThis article presents the formal verification, using the Coq proof assistant, ...
Abstract. When verifying a concurrent program, it is usual to assume that memory is sequentially con...
The upcoming C and C++ revised standards add concurrency to the languages, for the first time, in th...
Concurrency libraries can facilitate the development of multithreaded programs by providing concurre...
With the introduction of multi-core CPUs, multi-threaded programming is becoming significantly more ...
Concurrent libraries are the building blocks for concurrency. They encompass a range of abstractions...
Many hardware and compiler optimisations introduced to speed up single-threaded programs also introd...
Systems code is almost universally written in the C programming language or a variant. C has a very ...
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...
There is a broad design space for concurrent computer processors: they can be optimized for low powe...