Tutorial: Designing Distributed Software in mCRL2
Jan Friso Groote, Jeroen J.A. Keiren

TL;DR
This tutorial demonstrates how to model, specify, and verify distributed software protocols using the mCRL2 toolset, highlighting model checking as an effective method for ensuring correctness and uncovering rare errors.
Contribution
It introduces a practical approach for creating behavioral models and verifying distributed software protocols with mCRL2, bridging the gap between testing and formal proof.
Findings
Model checking reveals rare errors in distributed protocols.
Verification guides the design of mutual exclusion protocols.
Using mCRL2 enhances understanding of protocol correctness.
Abstract
Distributed software is very tricky to implement correctly as some errors only occur in peculiar situations. For such errors testing is not effective. Mathematically proving correctness is hard and time consuming, and therefore, it is rarely done. Fortunately, there is a technique in between, namely model checking, that, if applied with skill, is both efficient and able to find rare errors. In this tutorial we show how to create behavioural models of parallel software, how to specify requirements using modal formulas, and how to verify these. For that we use the mCRL2 language and toolset (https://www.mcrl2.org/). We discuss the design of an evolution of well-known mutual exclusion protocols, and how model checking not only provides insight in their behaviour and correctness, but also guides their design.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
