This textbook guides students through algebraic specification and verification of distributed systems, and some of the most prominent formal verification techniques. The author employs CRL as the vehicle, a language developed to combine process algebra and abstract data types. The book evolved from introductory courses on protocol verification taught to undergraduate and graduate students of computer science, and the text is supported throughout...