SpinS: Extending LTSmin with Promela through SpinJa

We show how Promela can be supported by the high-performance generic model checker LTSmin. The success of the Spin model checker has made Promela an important modeling language. SpinJa was created as a Java implementation of Spin, in an effort to make the model checker easily extendible and reusable while maintaining some of its efficiency. While these goals were certainly met, the downside of SpinJa remained its dependability on Java, degrading performance by a factor 5 and obstructing support for embedded C code in Promela models. LTSmin aims at language-independence through the definition of the generic Partitioned Next-State Interface (pins). The toolset has shown that a generic model checker can indeed be competitive in terms of efficiency by supporting several languages from different paradigms and implementing many analysis algorithms that compete with other state-of-the-art model checkers. We extended SpinJa to emit C code that implements the pins interface. Our new version of SpinJa, called SpinS (Spin + pins), also improves Promela support, greatly extending the support of models beyond toy and academic examples. In this paper, we demonstrate the usage of [email protected]?s analysis algorithms: multi-core model checking of assertion violations, deadlocks and never claims (full LTL), inspection of error trails, partial order reduction (POR), state compression, symbolic reachability using (multi-core) decision diagrams and distributed reachability. Our experiments show that the performance of these methods beats other leading model checkers.

[1]  Jaco van de Pol,et al.  Bridging the Gap between Enumerative and Symbolic Model Checkers , 2009 .

[2]  Alfons Laarman,et al.  Improved Multi-Core Nested Depth-First Search , 2012, ATVA.

[3]  Alfons Laarman,et al.  Multi-Core LTSmin: Marrying Modularity and Scalability , 2011, NASA Formal Methods.

[4]  Marc de Jonge,et al.  The SpinJa Model Checker , 2010, SPIN.

[5]  Igor V. Konnov,et al.  Model Checking GARP Protocol using Spin and VRS , 2010 .

[6]  Gerard J. Holzmann,et al.  The SPIN Model Checker , 2003 .

[7]  Michael Weber,et al.  An embeddable virtual machine for state space generation , 2007, International Journal on Software Tools for Technology Transfer.

[8]  A Parallel Compact Hash Table , 2011, MEMICS.

[9]  Alfons Laarman,et al.  Multi-core Nested Depth-First Search , 2011, ATVA.

[10]  Elwin Pater,et al.  Partial Order Reduction for PINS , 2011 .

[11]  Alfons Laarman,et al.  Parallel Recursive State Compression for Free , 2011, SPIN.

[12]  Alfons Laarman,et al.  Boosting multi-core reachability performance with shared hash tables , 2010, Formal Methods in Computer Aided Design.

[13]  Jaco van de Pol,et al.  1 Motivation : A Modular , High-Performance Model Checker , 2010 .

[14]  Lubos Brim,et al.  DiVinE: Parallel Distributed Model Checker , 2010, 2010 Ninth International Workshop on Parallel and Distributed Methods in Verification, and Second International Workshop on High Performance Computational Systems Biology.

[15]  Alfons Laarman,et al.  Multi-Core BDD Operations for Symbolic Reachability , 2013, Electron. Notes Theor. Comput. Sci..

[16]  Alfons Laarman,et al.  Multi-core Reachability for Timed Automata , 2012, FORMATS.

[17]  Gerard J. Holzmann,et al.  The SPIN Model Checker - primer and reference manual , 2003 .

[18]  Radek Pelánek,et al.  BEEM: Benchmarks for Explicit Model Checkers , 2007, SPIN.

[19]  Gerard J. Holzmann,et al.  Parallelizing the Spin Model Checker , 2012, SPIN.

[20]  Alfons Laarman,et al.  Variations on Multi-Core Nested Depth-First Search , 2011, PDMC.