Synchronization of Communicating Processes
Formalization of a well-defined synchronization
mechanism can be used to prove that concurrently 
running processes of a system communicate correctly.
 This is demonstrated for a system consisting of 
many sending processes which deposit messages in a buffer
and many receiving processes which remove messages 
from that buffer.  The formal description of the synchronization
mechanism makes it very easy to prove 
that the buffer will neither overflow nor underflow,
that senders and receivers will never operate on 
the same message frame in the buffer nor will they run into a deadlock. 
CACM March, 1972
Habermann, A. N.
