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 automated way to achieve this goal. In this paper we focus on the main issues for adding model checking functionality to the RAISE specification language 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 (within certain finiteness constraints) of the results checked in this way. Finally, we present the most interesting details of the implementation of a tool that follows the described approach.

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

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

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

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

[5]  Philippe Schnoebelen,et al.  Systems and Software Verification , 2001, Springer Berlin Heidelberg.

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

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

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

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

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

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

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

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

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

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

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

[17]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[18]  Jonathan P. Bowen,et al.  High-Integrity System Specification and Design , 1999 .

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

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

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

[22]  Kenneth L. McMillan,et al.  Symbolic model checking , 1992 .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[39]  C. A. R. Hoare,et al.  The verifying compiler: A grand challenge for computing research , 2003, JACM.

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

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

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

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

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

[45]  Mark Ryan,et al.  Logic in Computer Science: Modelling and Reasoning about Systems , 2000 .