clock time;
urgent chan ML;
urgent chan LM;
urgent chan LR;
urgent chan RL;
Receiver
clock rc;
wait
send_ack
done_pkg
recv_pkg
Link
clock lc;
received_pkg
received_ack
resend_ack
resend_pkg
idle
Sender
clock sc;
clock attesa;
received_ack
wait_ack
send_pkg
wait
sender = Sender();
receiver = Receiver();
link = Link();
system sender, receiver, link;
A<> receiver.recv_pkg
sender.wait_ack --> (sender.received_ack)
A<> sender.received_ack
A[] (not deadlock)