Formal Verification of a Programming Logic for a Distributed Programming Language

Abstract This paper presents a method for mechanically proving the soundness of a programming logic for a distributed programming language, in support of the development of verified program verification tools. We focus on: 1. (1) how to formalize the operational semantics of a distributed programming language; 2. (2) how to formalize the concept of program correctness for distributed programs; 3. (3) how to mechanically prove the soundness of a programming logic with respect to the formal semantics of the language; 4. (4) how to use the mechanized and sound logic to develop verification tools with soundness guaranteed; and 5. (5) how to accomplish all above in the same formalism. Our programming logic permits the verification of single processes executing in isolation and, also, the verification of the composition of concurrently executing processes. Our method demonstrates that structuring the specification of operational semantics can ease the creation of a sound and mechanized programming logic for distributed programming languages. We believe that our method can be scaled up to larger distributed programming languages and their programming logics. The Cambridge HOL theorem proving system is used in our research.

[1]  Gregory R. Andrews,et al.  The SR programming language: concurrency in practice , 1993 .

[2]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[3]  Laura K. Dillon,et al.  Using symbolic execution for verification of Ada tasking programs , 1990, TOPL.

[4]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[5]  Larry Calvin Ragland,et al.  A verified program-verifier. , 1973 .

[6]  Nissim Francez,et al.  Program verification , 1992, International computer science series.

[7]  Graham Birtwistle,et al.  Current Trends in Hardware Verification and Automated Theorem Proving , 1989, Springer New York.

[8]  Ernst-Rüdiger Olderog,et al.  Verification of Sequential and Concurrent Programs , 1997, Graduate Texts in Computer Science.

[9]  Neelam Soundararajan,et al.  Axiomatic semantics of communicating sequential processes , 1984, ACM Trans. Program. Lang. Syst..

[10]  A. Udaya Shankar,et al.  An introduction to assertional reasoning for concurrent systems , 1993, CSUR.

[11]  Lawrence C. Paulson,et al.  Logic and computation - interactive proof with Cambridge LCF , 1987, Cambridge tracts in theoretical computer science.

[12]  Michael J. C. Gordon,et al.  Mechanizing programming logics in higher order logic , 1989 .

[13]  Cui Zhang,et al.  Mechanizing a Programming Logic for the Concurrent Programming Language microSR in HOL , 1993, HUG.

[14]  Martín Abadi,et al.  The existence of refinement mappings , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[15]  Wolfgang Polak,et al.  Formal Verification of Ada Programs , 1990, IEEE Trans. Software Eng..

[16]  Cui Zhang,et al.  Verification of a distributed computing system by layered proofs , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.