Model checking RAISE applicative specifications

Ensuring the correctness of a given software component has become a crucial aspect in software engineering and model checking provides an almost fully automatic way of achieving this goal. Due to the scalability problems of the model checking technique, it has become popular to apply it at early stages in the development process, when the size of the model is much smaller than the final code. Properties proved in this way can be shown to hold at the implementation level provided that the final code refines the original specification. In this paper we focus on the main issues for adding model checking functionality to the RAISE specification language (RSL) and present the semantic foundations of our current approach for doing so. We also describe a way to use model checking to verify RAISE confidence conditions, ensuring the soundness and completeness of the results checked in this way. We then present the most interesting details of the implementation of a tool that follows the described approach. Finally, we illustrate the application of the technique with two case studies: a Digital Multiplexed Radio Telephone System and the Mondex electronic purse.

[1]  Chris George,et al.  Towards the verification of RAISE specifications through Model Checking , 2006 .

[2]  Susan Stepney,et al.  Using PVS to Prove a Z Refinement: A Case Study , 1997, FME.

[3]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[4]  Michael J. Butler,et al.  ProB: A Model Checker for B , 2003, FME.

[5]  Edmund M. Clarke,et al.  Formal Methods: State of the Art and Future Directions Working Group Members , 1996 .

[6]  Colin F. Snook,et al.  Tools for System Validation with B Abstract Machines , 2005, Abstract State Machines.

[7]  Richard J. Boulton,et al.  Experience with Embedding Hardware Description Languages in HOL , 1992, TPCD.

[8]  Hung Dang Van Specification case studies in RAISE , 2002 .

[9]  Silvia Lizeth Tapia Tarifa,et al.  A Translation from RSL to CSP , 2008, 2008 International Conference of the Chilean Computer Science Society.

[10]  Burkhart Wolff,et al.  A Structure Preserving Encoding of Z in Isabelle/HOL , 1996, TPHOLs.

[11]  Peter W. O'Hearn,et al.  Verified Software: A Grand Challenge , 2006, Computer.

[12]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[13]  Thierry Massart,et al.  How to Make FDR Spin LTL Model Checking of CSP by Refinement , 2001, FME.

[14]  Stephan Merz,et al.  Model Checking , 2000 .

[15]  Robin Milner,et al.  Grand Challenges for Computing Research , 2005, Comput. J..

[16]  Sérgio Vale Aguiar Campos,et al.  Symbolic Model Checking , 1993, CAV.

[17]  Jonathan P. Bowen,et al.  High-Integrity System Specification and Design , 1999, Formal Approaches to Computing and Information Technology (FACIT).

[18]  Bernhard K. Aichernig,et al.  Formal Methods at the Crossroads. From Panacea to Foundational Support , 2003, Lecture Notes in Computer Science.

[19]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[20]  Klaus Schneider,et al.  Model Checking PSL Using HOL and SMV , 2006, Haifa Verification Conference.

[21]  Jürgen Dingel,et al.  Model Checking for Infinite State Systems Using Data Abstraction, Assumption-Commitment Style reasoning and Theorem Proving , 1995, CAV.

[22]  Tri T. Ha,et al.  Digital satellite communications , 1986 .

[23]  Konrad Slind,et al.  Treating Partiality in a Logic of Total Functions , 1997, Comput. J..

[24]  Bernhard K. Aichernig,et al.  Automatic Test Case Generation for RAISE , 2004 .

[25]  Jonathan P. Bowen,et al.  Specifying System Implementations in Z , 1988 .

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

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

[28]  Fausto Giunchiglia,et al.  NUSMV: A New Symbolic Model Verifier , 1999, CAV.

[29]  Augusto Sampaio An Algebraic Approach to Compiler Design , 1993, AMAST Series in Computing.

[30]  Susanne Graf,et al.  Verification of a Distributed Cache Memory by Using Abstractions , 1994, CAV.

[31]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[32]  Graeme Smith,et al.  Model Checking Z Specifications Using SAL , 2005, ZB.

[33]  Leo Freitas,et al.  Model checking Circus , 2005 .

[34]  Anne Elisabeth Haxthausen,et al.  Specification, proof, and model checking of the Mondex electronic purse using RAISE , 2007, Formal Aspects of Computing.

[35]  C. A. R. Hoare The Verifying Compiler: A Grand Challenge for Computing Research , 2003, Euro-Par.

[36]  Jim Woodcock,et al.  A Concurrent Language for Refinement , 2001, IWFM.

[37]  Klaus Havelund,et al.  Java PathFinder, A Translator from Java to Promela , 1999, SPIN.

[38]  Chris George The Development of the RAISE Tools , 2002, 10th Anniversary Colloquium of UNU/IIST.

[39]  J. Perna,et al.  Model checking RAISE specifications , 2006 .

[40]  Chris George RAISE Tools User Guide , 2001 .

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

[42]  Wan Fokkink,et al.  Introduction to Process Algebra , 1999, Texts in Theoretical Computer Science. An EATCS Series.

[43]  Jim Woodcock,et al.  Using Z - specification, refinement, and proof , 1996, Prentice Hall international series in computer science.

[44]  Dave Neilson The B-Technologies : A system for computer aided programming , 1999 .

[45]  Edmund M. Clarke,et al.  Symbolic Model Checking: 10^20 States and Beyond , 1990, Inf. Comput..

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

[47]  Valentin Goranko,et al.  Logic in Computer Science: Modelling and Reasoning About Systems , 2007, J. Log. Lang. Inf..

[48]  Jim Woodcock,et al.  State-rich model checking , 2006, Innovations in Systems and Software Engineering.

[49]  Andrew William Roscoe,et al.  Model-checking CSP , 1994 .

[50]  Amir Pnueli,et al.  The temporal logic of programs , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[51]  Anne Elisabeth Haxthausen,et al.  The Raise Specification Language , 1992 .

[52]  Jeannette M. Wing What is a specification language ? , 2001 .

[53]  C. A. R. Hoare The ideal of verified software , 2006, ACL2 '06.

[54]  Silvia Lizeth Tapia Tarifa,et al.  Model Checking LTL Formulae in RAISE with FDR , 2009, IFM.