Timer, Failure, and Shared Memory
Common: Timer, Failure Injector, and Shared Memory
The tutorials use several reusable P models for common system components. These are located in Tutorial/Common.
Timer
The Timer model captures a system's interaction with an OS timer. It is used in the Two Phase Commit, Espresso Machine, and Failure Detector examples.
Failure Injector
The Failure Injector model allows injecting node failures into the system during model checking. It is used in the Two Phase Commit and Failure Detector examples.
Shared Memory
P is a purely message-passing based programming language and does not support primitives for modeling shared memory concurrency. However, shared memory concurrency can always be modeled using message passing.
The Shared Memory example demonstrates this approach, which has been used when checking the correctness of single-node file systems.