// Place global declarations here.
clock time;
bool ack = 0;
bool frame = 0;
bool expected=0;
urgent chan ML;
urgent chan LM;
urgent chan LR;
urgent chan RL;
int TOUT = 160; // timeout
Sender_2t
clock sc;
clock fc;
clock timer0;
clock timer1;
bool next = 0;
send_pkg1
send_pkg
wait_ack1
wait_ack
recover_loss
received_ack
received_ack1
wait
Receiver
clock rc;
bool r_frame = 0;
is_dup
send_ack
done_pkg
recv_pkg
wait
Link
clock lc;
loss
resend_pkg
received_pkg
resend_ack
received_ack
idle
Sender_1t
clock sc;
clock fc;
clock timer0;
clock timer1;
clock attesa;
bool next = 0;
send_pkg
wait_ack
recover_loss
received_ack
wait
sender = Sender_1t();
receiver = Receiver();
link = Link();
system sender, receiver, link;
A[] (not deadlock)
sender.wait_ack || sender.wait_ack1 --> (sender.received_ack || sender.received_ack1)
link.loss --> (sender.send_pkg || receiver.send_ack)
E<> (ack == expected)
link.loss --> (sender.send_pkg || sender.send_pkg1 || receiver.send_ack)