1 (* Title: HOLCF/IOA/ABP/Sender.thy
5 header {* The implementation: sender *}
8 imports IOA Action Lemmas
12 'm sender_state = "'m list * bool" -- {* messages, Alternating Bit *}
15 sq :: "'m sender_state => 'm list" where
19 sbit :: "'m sender_state => bool" where
23 sender_asig :: "'m action signature" where
24 "sender_asig = ((UN m. {S_msg(m)}) Un (UN b. {R_ack(b)}),
29 sender_trans :: "('m action, 'm sender_state)transition set" where
35 Next => if sq(s)=[] then t=s else False |
36 S_msg(m) => sq(t)=sq(s)@[m] &
39 S_pkt(pkt) => sq(s) ~= [] &
41 msg(pkt) = hd(sq(s)) &
46 R_ack(b) => if b = sbit(s) then
47 sq(t)=tl(sq(s)) & sbit(t)=(~sbit(s)) else
48 sq(t)=sq(s) & sbit(t)=sbit(s)}"
51 sender_ioa :: "('m action, 'm sender_state)ioa" where
53 (sender_asig, {([],True)}, sender_trans,{},{})"