The SPIN Model Checker - primer and reference manual

Master SPIN, the breakthrough tool for improving software reliabilitySPIN is the world's most popular, and arguably one of the world's most powerful, tools for detecting software defects in concurrent system designs. Literally thousands of people have used SPIN since it was first introduced almost fifteen years ago. The tool has been applied to everything from the verification of complex call processing software that is used in telephone exchanges, to the validation of intricate control software for interplanetary spacecraft.This is the most comprehensive reference guide to SPIN, written by the principal designer of the tool. It covers the tool's specification language and theoretical foundation, and gives detailed advice on methods for tackling the most complex software verification problems. Sum Design and verify both abstract and detailed verification models of complex systems software Sum Develop a solid understanding of the theory behind logic model checking Sum Become an expert user of the SPIN command line interface, the Xspin graphical user interface, and the TimeLine editing tool Sum Learn the basic theory of omega automata, linear temporal logic, depth-first and breadth-first search, search optimization, and model extraction from source codeThe SPIN software was awarded the prestigious Software System Award by the Association for Computing Machinery (ACM), which previously recognized systems such as UNIX, SmallTalk, TCP/IP, Tcl/Tk, and the World Wide Web.

[1]  Gerard J. Holzmann,et al.  Design and validation of computer protocols , 1991 .

[2]  Doron A. Peled,et al.  Stutter-Invariant Temporal Properties are Expressible Without the Next-Time Operator , 1997, Inf. Process. Lett..

[3]  M. D. McIlroy,et al.  Development of a Spelling List , 1982, IEEE Trans. Commun..

[4]  Orna Kupferman,et al.  Vacuity Detection in Temporal Model Checking , 1999, CHARME.

[5]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[6]  Moshe Y. Vardi Branching vs. Linear Time: Final Showdown , 2001, TACAS.

[7]  Mihalis Yannakakis,et al.  On nested depth first search , 1996, The Spin Verification System.

[8]  N. Meyers,et al.  H = W. , 1964, Proceedings of the National Academy of Sciences of the United States of America.

[9]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[10]  Zohar Manna,et al.  Temporal verification of reactive systems - safety , 1995 .

[11]  Gerard J. Holzmann,et al.  Logic Verification of ANSI-C Code with SPIN , 2000, SPIN.

[12]  D. Bosnacki Enhancing state space reduction techniques for model checking , 2001 .

[13]  R. H.,et al.  The Principles of Mathematics , 1903, Nature.

[14]  MASAHIRO FUJITA,et al.  Formal Verification Techniques for Digital Systems , 1998 .

[15]  Kousha Etessami,et al.  Fair Simulation Relations, Parity Games, and State Space Reduction for Büchi Automata , 2001, ICALP.

[16]  Gerard J. Holzmann,et al.  Process Sleep and Wakeup on a Shared-memory Multiprocessor , 1991 .

[17]  David L. Dill,et al.  Experience with Predicate Abstraction , 1999, CAV.

[18]  Michel Raynal,et al.  Algorithms for mutual exclusion , 1986 .

[19]  E. Allen Emerson,et al.  Temporal and Modal Logic , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[20]  Keith A. Bartlett,et al.  A note on reliable full-duplex transmission over half-duplex links , 1969, Commun. ACM.

[21]  Burton H. Goldstein,et al.  Use with Caution , 1972 .

[22]  Christopher Strachey An impossible program , 1965, Comput. J..

[23]  Orna Grumberg,et al.  Abstract interpretation of reactive systems , 1997, TOPL.

[24]  George S. Avrunin,et al.  Patterns in property specifications for finite-state verification , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[25]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[26]  Doron A. Peled,et al.  Formal Verification of a Partial-Order Reduction Technique for Model Checking , 2004, Journal of Automated Reasoning.

[27]  Gerard J. Holzmann,et al.  State-space caching revisited , 1995, Formal Methods Syst. Des..

[28]  Pierre Wolper,et al.  An Algorithmic Approach for Checking Closure Properties of omega-Regular Languages , 1996, CONCUR.

[29]  Leslie Lamport,et al.  What Good is Temporal Logic? , 1983, IFIP Congress.

[30]  Edmund M. Clarke,et al.  Model checking and abstraction , 1994, TOPL.

[31]  Doron A. Peled Combining Partial Order Reductions with On-the-fly Model-Checking , 1994, CAV.

[32]  Wolfgang Thomas,et al.  Automata on Infinite Objects , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[33]  Gerard J. Holzmann,et al.  On the Verification of Temporal Properties , 1993, PSTV.

[34]  Pierre Wolper,et al.  Simple on-the-fly automatic verification of linear temporal logic , 1995, PSTV.

[35]  Herman H. Goldstine,et al.  Planning and coding of problems for an Electronic Computing Instrument , 1947 .

[36]  Dennis Dams,et al.  Abstract interpretation and partition refinement for model checking , 1996 .

[37]  Lawrence M. Ruane Process Synchronization in the UTS Kernel , 1990, Comput. Syst..

[38]  Gerard J. Holzmann,et al.  Automated Protocol Validation in Argos: Assertion Proving and Scatter Searching , 1987, IEEE Transactions on Software Engineering.

[39]  Gerard J. Holzmann,et al.  SOFTWARE TESTING, VERIFICATION AND RELIABILITY , 2022 .

[40]  Amir Pnueli,et al.  Modularization and Abstraction: The Keys to Practical Formal Verification , 1998, MFCS.

[41]  Matthew B. Dwyer,et al.  Bandera: extracting finite-state models from Java source code , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[42]  Robert H. Morris,et al.  Scatter storage techniques , 1983, CACM.

[43]  Nicholas Rescher,et al.  Temporal Logic = Library of Exact Philosophy, Vol. 3 , 1973 .

[44]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[45]  Theodorus Cornelis Ruys,et al.  Towards effective model checking , 2001 .

[46]  W. Visser,et al.  Second Generation of a Java Model Checker , 2000 .

[47]  Gerard J. Holzmann,et al.  Automating software feature verification , 2000, Bell Labs Technical Journal.

[48]  Pierre Wolper,et al.  An Automata-Theoretic Approach to Automatic Program Verification (Preliminary Report) , 1986, LICS.

[49]  Burton H. Bloom,et al.  Space/time trade-offs in hash coding with allowable errors , 1970, CACM.

[50]  Gerard J. Holzmann,et al.  Coverage Preserving Reduction Strategies for Reachability Analysis , 1992, PSTV.

[51]  Gerard J. Holzmann,et al.  An improvement in formal verification , 1994, FORTE.

[52]  Edsger W. Dijkstra,et al.  Solution of a problem in concurrent programming control , 1965, CACM.

[53]  Gerard J. Holzmann,et al.  Designing executable abstractions , 1998, FMSP '98.

[54]  Gerard J. Holzmann Pan - A Protocol Specification Analyzer , 2002 .

[55]  Kousha Etessami,et al.  Optimizing Büchi Automata , 2000, CONCUR.

[56]  Gerard J. Holzmann,et al.  An Analysis of Bitstate Hashing , 1995, Formal Methods Syst. Des..

[57]  Gerard J. Holzmann,et al.  A minimized automaton representation of reachable states , 1999, International Journal on Software Tools for Technology Transfer.

[58]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[59]  Fred Kröger,et al.  Temporal Logic of Programs , 1987, EATCS Monographs on Theoretical Computer Science.

[60]  Gary L. Peterson,et al.  Myths About the Mutual Exclusion Problem , 1981, Inf. Process. Lett..

[61]  Martín Abadi,et al.  The Existence of Refinement Mappings , 1988, LICS.

[62]  David L. Dill,et al.  Verifying Systems with Replicated Components in Murphi , 1996, CAV.

[63]  Pierre Wolper,et al.  Reliable Hashing without Collosion Detection , 1993, CAV.

[64]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[65]  L. K. Thomas,et al.  Variants of the Software Solution to Mutual Exclusion , 1980, Inf. Process. Lett..

[66]  Paul Gastin,et al.  Fast LTL to Büchi Automata Translation , 2001, CAV.

[67]  Yaacov Choueka,et al.  Theories of Automata on omega-Tapes: A Simplified Approach , 1974, J. Comput. Syst. Sci..

[68]  Hasan Ural,et al.  An improvement in partial-order model-checking with ample sets , 1996 .

[69]  Pierre Wolper,et al.  Memory-efficient algorithms for the verification of temporal properties , 1990, Formal Methods Syst. Des..

[70]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[71]  D. Holdstock Past, present--and future? , 2005, Medicine, conflict, and survival.

[72]  Philippe Schnoebelen,et al.  Systems and Software Verification, Model-Checking Techniques and Tools , 2001 .

[73]  W. Damm,et al.  Specification and verification of system-level hardware designs using time diagrams , 1993, 1993 European Conference on Design Automation with the European Event in ASIC Design.

[74]  Gerard J. Holzmann,et al.  Abstracting C with abC , 2002, CAV.

[75]  Amir Pnueli,et al.  Verification by Augmented Abstraction: The Automata-Theoretic View , 2001, J. Comput. Syst. Sci..

[76]  A. Turing On Computable Numbers, with an Application to the Entscheidungsproblem. , 1937 .

[77]  J. Heijenoort From Frege to Gödel: A Source Book in Mathematical Logic, 1879-1931 , 1967 .

[78]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[79]  Larry Carter,et al.  Exact and approximate membership testers , 1978, STOC.

[80]  K. Gödel Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I , 1931 .

[81]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[82]  Gerard J. Holzmann,et al.  The Engineering of a Model Checker: The Gnu i-Protocol Case Study Revisited , 1999, SPIN.

[83]  Louise E. Moser,et al.  A graphical interval logic for specifying concurrent systems , 1994, TSEM.

[84]  Natarajan Shankar,et al.  Verification by Abstraction , 2002, 10th Anniversary Colloquium of UNU/IIST.

[85]  Jaakko Hintikka,et al.  Time And Modality , 1958 .

[86]  R. P. Kurshan,et al.  Automata-theoretic verification of coordinating processes , 1994 .

[87]  Marsha Chechik,et al.  Lightweight reasoning about program correctness , 2001, CASCON.

[88]  Marta Z. Kwiatkowska,et al.  Event fairness and non-interleaving concurrency , 1989, Formal Aspects of Computing.

[89]  Patrick Cousot,et al.  Static determination of dynamic properties of programs , 1976 .

[90]  J. R. Büchi On a Decision Method in Restricted Second Order Arithmetic , 1990 .

[91]  Pierre Wolper,et al.  Reasoning about infinite computation paths , 1983, 24th Annual Symposium on Foundations of Computer Science (sfcs 1983).

[92]  Gerard J. Holzmann,et al.  An Automated Verification Method for Distributed Systems Software Based on Model Extraction , 2002, IEEE Trans. Software Eng..

[93]  Bowen Alpern,et al.  Recognizing safety and liveness , 2005, Distributed Computing.

[94]  David L. Dill,et al.  Improved probabilistic verification by hash compaction , 1995, CHARME.

[95]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[96]  Chuck Yoo,et al.  Comments on 'The Model Checker SPIN' , 2001, IEEE Trans. Software Eng..