SPIN model checker

Tool for verifying the correctness of software models

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "SPIN model checker" – news · newspapers · books · scholar · JSTOR (September 2020) (Learn how and when to remove this message)

|

This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. Please help improve it by replacing them with more appropriate citations to reliable, independent, third-party sources. (September 2020) (Learn how and when to remove this message)

|

(Learn how and when to remove this message)

SPINDeveloper(s)| Gerard J. Holzmann

|

Initial release| 1989 (1989)
Stable release|

6.5.2 / December 6, 2019; 4 years ago (2019-12-06)

Repository|

* github.com/nimble-code/Spin

Written in| C
Operating system| Linux
Microsoft Windows
Mac OS X
Available in| English
Type| Model checking
License|

* 3-clause BSD License (since version 6.4.5)
* SPIN Software Public License (previous versions)

Website| http://spinroot.com/

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. The software has been available freely since 1991, and continues to evolve to keep pace with new developments in the field.

## Tool

[edit]

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. In addition to model-checking, SPIN can also operate as a simulator, following one possible execution path through the system and presenting the resulting execution trace to the user.

Unlike many model-checkers, SPIN does not actually perform model-checking itself, but instead generates C sources for a problem-specific model checker. This technique saves memory and improves performance, while also allowing the direct insertion of chunks of C code into the model. SPIN also offers a large number of options to further speed up the model-checking process and save memory, such as:

* partial order reduction;
* state compression;
* bitstate hashing (instead of storing whole states, only their hash code is remembered in a bitfield; this saves a lot of memory but voids completeness);
* weak fairness enforcement.

Since 1995, (approximately) annual SPIN workshops have been held for SPIN users, researchers, and those generally interested in model checking.

In 2001, the Association for Computing Machinery awarded SPIN its System Software Award.[1]

## See also

[edit]

* NuSMV
* Uppaal Model Checker

## References

[edit]

1. ^ Software System Award: ACM CITES TOOL TO DETECT SOFTWARE "BUGS" FOR PRESTIGIOUS AWARD. Bell Labs Researcher Developed "SPIN" to Make Computers More Reliable // ACM Press-Release

## Further reading

[edit]

* Holzmann, G. J., The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, 2004. ISBN 0-321-22862-6.

## External links

[edit]

* SPIN website