This book helps readers easily learn basic model checking by presenting examples, exercises and case studies. The toolset mCRL2 provides a language to specify the behaviour of distributed systems, in particular where there is concurrency with inter-process communication. This language allows us to analyse a distributed system with respect to its functional requirements. For example, biological cells, supply chain management systems, patient support...