Future-based Static Analysis of Message Passing Programs

Message passing is widely used in industry to develop programs consisting of several distributed communicating components. Developing functionally correct message passing software is very challenging due to the concurrent nature of message exchanges. Nonetheless, many safety-critical applications rely on the message passing paradigm, including air traffic control systems and emergency services, which makes proving their correctness crucial. We focus on the modular verification of MPI programs by statically verifying concrete Java code. We use separation logic to reason about local correctness and define abstractions of the communication protocol in the process algebra used by mCRL2. We call these abstractions futures as they predict how components will interact during program execution. We establish a provable link between futures and program code and analyse the abstract futures via model checking to prove global correctness. Finally, we verify a leader election protocol to demonstrate our approach.

[1]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[2]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[3]  Marieke Huisman,et al.  The VerCors Tool for Verification of Concurrent Programs , 2014, FM.

[4]  Krzysztof R. Apt,et al.  Limits for Automatic Verification of Finite-State Concurrent Systems , 1986, Inf. Process. Lett..

[5]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[6]  Samik Basu,et al.  Behavioral automata composition for automatic topology independent verification of parameterized systems , 2009, ESEC/FSE '09.

[7]  Peter W. O'Hearn,et al.  Separation Logic Semantics for Communicating Processes , 2008, FICS.

[8]  Marina Zaharieva-Stojanovski,et al.  Closer to Reliable Software: Verifying Functional Behaviour of Concurrent Programs , 2015 .

[9]  Peter W. O'Hearn,et al.  Resources, concurrency, and local reasoning , 2007 .

[10]  Rajeev Thakur,et al.  Formal verification of practical MPI programs , 2009, PPoPP '09.

[11]  Marina Zaharieva Stojanovski Closer to reliable software: verifying functional behaviour of concurrent programs , 2015 .

[12]  C. A. R. Hoare,et al.  Verified Software: Theories, Tools, Experiments Vision of a Grand Challenge Project , 2005, VSTTE.

[13]  Nobuko Yoshida,et al.  Verification of MPI Programs Using Session Types , 2012, EuroMPI.

[14]  Marieke Huisman,et al.  Verification of Concurrent Systems with VerCors , 2014, SFM.

[15]  Peter W. O'Hearn,et al.  Resources, Concurrency and Local Reasoning , 2004, CONCUR.

[16]  Jan Friso Groote,et al.  Modeling and Analysis of Communicating Systems , 2014 .