SPIN model checker

SPIN is a general tool for verifying the correctness of concurrent software models in a rigorous and mostly automated fashion.

It was written by Gerard J. Holzmann and others in the original Unix group of the Computing Sciences Research Center at Bell Labs, beginning in 1980.

Systems to be verified are described in Promela (Process Meta Language), which supports modeling of asynchronous distributed algorithms as non-deterministic automata (SPIN stands for "Simple Promela Interpreter").

Properties to be verified are expressed as Linear Temporal Logic (LTL) formulas, which are negated and then converted into Büchi automata as part of the model-checking algorithm.

This technique saves memory and improves performance, while also allowing the direct insertion of chunks of C code into the model.