Correctness Proofs of Communicating Processes: Three Illustrative Examples From the Literature
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
Communicating sequential processes
Communications of the ACM
Proving safety and liveness of communicating processes with examples
PODC '82 Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Hi-index | 0.00 |
As the practice of networking has become more widespread, the study of communications protocols has grown accordingly. At the same time, techniques for verification of message-passing networks have been developed to the point where they can now be used to prove safety properties about such protocols. In this paper, we discuss the problem of two processes which must communicate through some semi-reliable medium. In order for communication to take place, there must be some set of rules for acknowledging correctly received messages, called frames, and for retransmitting lost or damaged frames. Such a set of rules is called a communication protocol. We present a generalized communication data link layer protocol and give a proof using a technique recently proposed by Misra and Chandy [Misra81]. We also show that this protocol and proof include two very important special cases: 1) the well-known Alternating Bit protocol, and 2) the portion of the HDLC protocol dedicated to ensuring that packets are received, and that they are received in the correct order. The problem of verifying communication protocols, has been addressed by Stenning [Stenning76], and more recently by Hailpern [Hailpern8l]. Each of these protocols can be considered to be a special case of the one presented here. Hailpern also proves liveness of his algorithm, but uses temporal logic and explicit induction (on the number of messages) for proving both safety and liveness. We do not cover the proof of liveness in this paper. However, the proof technique can be extended for liveness proofs. For a discussion of this, the reader is referred to [Misra82].