SpinS

For the LTSmin toolset, we extended SpinJa to generate C code adhering to the PINS interface. The otiginal SpinJa code generated Java from Promela models. Since the resulting tool is incompatible with other parts of SpinJa, we renamed the tool to SpinS.

Additionally, SpinS was extended with a great many new features available in the Promela language. To give a quick overview:

The result is that we are now able to handle many large case studies with LTSmin. But more significantly, the semantics models is so close that the state counts, error counts and transition counts are equal to those of SPIN for many of these large case studies. An overview is given by the scripts in the test directory.

Moreover, due to the functionality of the PINS interface, we are able to add a rich set of analysis algorithms to the PROMELA world. These are available as the generic, but efficient tools of LTSmin, and include:

All of these techniques should work nicely together with Promela semantics on assertion violations, deadlocks, never claims and valid end states. Note that some combinations, like POR and never claims, require some alternative approaches for now. The LTL formula can for example be loaded directly in LTSmin.

Most of these features are described in SpinS: Extending LTSmin with Promela through SpinJa. The original SpinJa documentation can be found at: http://code.google.com/p/spinja/.

Files

The spins folder contains the following files:

Compilation

Should be handled by LTSmin compilation scripts.

Known issues

Promela

SpinS does not yet support the full Promela language.
Currently, the following aspects of Promela are not yet implemented:

The following things we would like to (and are able to) add in the future:

License

SpinS is released under the Apache 2.0 license.

People

SpinS was developed by: SpinJa was developed by:

Further Reading

For general documentation on Promela and the model checker SPIN, please consult the SPIN website, which hosts a wealth of information on the subjects. More specific information on the design and implementation of SpinS can be found in the following two MSc theses.

Version history

1.0 2013.02.05 Release in LTSmin 2.0 (renamed to SpinS)
0.9.9 2012.02.22 Some improvements to SpinS
0.9 2011.06.23 First public release of SpinS within LTSmin 1.7 (called SpinJa).