Dealing with I/O devices in the context of pervasive system verification

Device drivers can be tested and debugged much better with techniques from the field of formal verification than with classical methods. The total verification of drivers together with the underlying hardware, however has remained an unsolved problem. Here we outline a paper-and-pencil solution for this problem and report on the status of the formal verification. This work is part of the Verisoft project. In its subproject 2, the seamless verification of the academic system, comprising hardware, system software and applications, is attempted. We survey the techniques and tools used for program verification in Verisoft.

[1]  G. Winskel The formal semantics of programming languages , 1993 .

[2]  Michael Norrish C formalised in HOL , 1998 .

[3]  Daniel Kroening,et al.  Instantiating Uninterpreted Functional Units and Memory System: Functional Verification of the VAMP , 2003, CHARME.

[4]  Flemming Nielson,et al.  Semantics with applications - a formal introduction , 1992, Wiley professional computing.

[5]  Mark A. Hillebrand,et al.  On the Correctness of Operating System Kernels , 2005, TPHOLs.

[6]  Norbert Schirmer,et al.  A Verification Environment for Sequential Imperative Programs in Isabelle/HOL , 2005, LPAR.

[7]  Junfeng Yang,et al.  Using model checking to find serious file system errors , 2004, TOCS.

[8]  Mark A. Hillebrand,et al.  On the Verification of Memory Management Mechanisms , 2005, CHARME.

[9]  C. A. R. Hoare,et al.  An Axiomatic Definition of the Programming Language PASCAL , 1973, Acta Informatica.

[10]  Sriram K. Rajamani,et al.  Automatically validating temporal safety properties of interfaces , 2001, SPIN '01.

[11]  Nikolaos Papaspyrou,et al.  A Formal Semantics for the C Programming Language , 2000 .

[12]  Wolfgang J. Paul,et al.  Towards the Formal Verification of a C0 Compiler: Code Generation and Implementation Correctnes , 2005, SEFM.

[13]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[14]  Wolfgang J. Paul,et al.  Computer architecture - complexity and correctness , 2000 .

[15]  Jun Sawada,et al.  Processor Verification with Precise Exeptions and Speculative Execution , 1998, CAV.

[16]  David A. Patterson,et al.  Computer architecture (2nd ed.): a quantitative approach , 1996 .

[17]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[18]  Mark A. Hillebrand,et al.  Address spaces and virtual memory: specification, implementation, and correctness , 2005 .