Specifying and Verifying Systems With TLA+
Leslie Lamport, John Matthews, Mark Tuttle, and Yuan Yu
TLA+ is a high-level specification language that has been used to
specify and check the correctness of several hardware protocols. We
expect that it can also be used to specify and check concurrent
algorithms and protocols for software systems.