Refinement-Based Verification of Communicating Unstructured Code

Formal model refinement aims at preserving safety and liveness properties of models. However, there is usually a verification gap between model and executed code, especially if concurrent processes are involved. The reason for this is that a manual implementation and further code optimizations can introduce implementation errors. In this paper, we present a framework that allows for formally proving a failures refinement between a CSP specification and its low-level implementation. The implementation is given in a generic unstructured language with gotos and an abstract communication instruction. We provide a failures-based denotational semantics of it with an appropriate Hoare calculus. Since failures-based refinement is compositional w.r.t. parallel composition of concurrent components and preserves safety and liveness properties, this contributes to reducing the verification gap between high-level specifications and their low-level implementations.

[1]  Sabine Glesner,et al.  A Denotational Semantics for Communicating Unstructured Code , 2015, FESCA.

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

[3]  Mary E. S. Loomis,et al.  The Basics: , 1990, Is That True?.

[4]  Björn Bartels,et al.  Mechanized, Compositional Verification of Low-Level Code , 2014, NASA Formal Methods.

[5]  John D. Carter,et al.  Supporting Selective Formalism in CSP++ with Process-Specific Storage , 2015, 2015 IEEE 17th International Conference on High Performance Computing and Communications, 2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems.

[6]  Steve A. Schneider,et al.  Concurrent and Real-time Systems: The CSP Approach , 1999 .

[7]  Sabine Glesner,et al.  Verification of Distributed Embedded Real-Time Systems and their Low-Level Implementations Using Timed CSP , 2011, 2011 18th Asia-Pacific Software Engineering Conference.

[8]  Tarmo Uustalu,et al.  A compositional natural semantics and Hoare logic for low-level languages , 2007, Theor. Comput. Sci..

[9]  A. W. Roscoe,et al.  FDR3 - A Modern Refinement Checker for CSP , 2014, TACAS.

[10]  Peter Claussen Theories of programming languages , 2000, SOEN.

[11]  Tobias Nipkow,et al.  1. The Basics , 2002 .

[12]  Job Zwiers,et al.  Compositionality, Concurrency and Partial Correctness , 1989, Lecture Notes in Computer Science.

[13]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[14]  J Job Zwiers Compositionality, Concurrency, and Partial Correctness: Proof Theories for Networks of Processes and Their Relationship , 1989 .