| author | wenzelm | 
| Thu, 10 Apr 2008 16:15:53 +0200 | |
| changeset 26617 | e99719e70925 | 
| parent 19739 | c58ef2aa5430 | 
| child 27361 | 24ec32bee347 | 
| permissions | -rw-r--r-- | 
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 1 | (* Title: HOL/IOA/NTP/Sender.thy | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 2 | ID: $Id$ | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 3 | Author: Tobias Nipkow & Konrad Slind | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 4 | *) | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 5 | |
| 17244 | 6 | header {* The implementation: sender *}
 | 
| 7 | ||
| 8 | theory Sender | |
| 9 | imports IOA Action | |
| 10 | begin | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 11 | |
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 12 | types | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 13 | 'm sender_state = "'m list * bool multiset * bool multiset * bool * bool" | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 14 | (* messages #sent #received header mode *) | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 15 | |
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 16 | consts | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 17 | |
| 6468 | 18 | sender_asig :: "'m action signature" | 
| 17244 | 19 | sender_trans  :: "('m action, 'm sender_state)transition set"
 | 
| 20 | sender_ioa    :: "('m action, 'm sender_state)ioa"
 | |
| 21 | sq :: "'m sender_state => 'm list" | |
| 22 | ssent :: "'m sender_state => bool multiset" | |
| 23 | srcvd :: "'m sender_state => bool multiset" | |
| 24 | sbit :: "'m sender_state => bool" | |
| 25 | ssending :: "'m sender_state => bool" | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 26 | |
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 27 | defs | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 28 | |
| 17244 | 29 | sq_def: "sq == fst" | 
| 30 | ssent_def: "ssent == fst o snd" | |
| 31 | srcvd_def: "srcvd == fst o snd o snd" | |
| 32 | sbit_def: "sbit == fst o snd o snd o snd" | |
| 33 | ssending_def: "ssending == snd o snd o snd o snd" | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 34 | |
| 17244 | 35 | sender_asig_def: | 
| 36 |   "sender_asig == ((UN m. {S_msg(m)}) Un (UN b. {R_ack(b)}),
 | |
| 37 |                   UN pkt. {S_pkt(pkt)},
 | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 38 |                   {C_m_s,C_r_s})"
 | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 39 | |
| 17244 | 40 | sender_trans_def: "sender_trans == | 
| 41 |  {tr. let s = fst(tr);
 | |
| 42 | t = snd(snd(tr)) | |
| 43 | in case fst(snd(tr)) | |
| 44 | of | |
| 45 | S_msg(m) => sq(t)=sq(s)@[m] & | |
| 46 | ssent(t)=ssent(s) & | |
| 47 | srcvd(t)=srcvd(s) & | |
| 48 | sbit(t)=sbit(s) & | |
| 49 | ssending(t)=ssending(s) | | |
| 50 | R_msg(m) => False | | |
| 51 | S_pkt(pkt) => hdr(pkt) = sbit(s) & | |
| 52 | (? Q. sq(s) = (msg(pkt)#Q)) & | |
| 53 | sq(t) = sq(s) & | |
| 54 | ssent(t) = addm (ssent s) (sbit s) & | |
| 55 | srcvd(t) = srcvd(s) & | |
| 56 | sbit(t) = sbit(s) & | |
| 57 | ssending(s) & | |
| 58 | ssending(t) | | |
| 59 | R_pkt(pkt) => False | | |
| 60 | S_ack(b) => False | | |
| 61 | R_ack(b) => sq(t)=sq(s) & | |
| 62 | ssent(t)=ssent(s) & | |
| 63 | srcvd(t) = addm (srcvd s) b & | |
| 64 | sbit(t)=sbit(s) & | |
| 65 | ssending(t)=ssending(s) | | |
| 66 | C_m_s => count (ssent s) (~sbit s) < count (srcvd s) (~sbit s) & | |
| 67 | sq(t)=sq(s) & | |
| 68 | ssent(t)=ssent(s) & | |
| 69 | srcvd(t)=srcvd(s) & | |
| 70 | sbit(t)=sbit(s) & | |
| 71 | ssending(s) & | |
| 72 | ~ssending(t) | | |
| 73 | C_m_r => False | | |
| 74 | C_r_s => count (ssent s) (sbit s) <= count (srcvd s) (~sbit s) & | |
| 75 | sq(t)=tl(sq(s)) & | |
| 76 | ssent(t)=ssent(s) & | |
| 77 | srcvd(t)=srcvd(s) & | |
| 78 | sbit(t) = (~sbit(s)) & | |
| 79 | ~ssending(s) & | |
| 80 | ssending(t) | | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 81 | C_r_r(m) => False}" | 
| 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 82 | |
| 17244 | 83 | sender_ioa_def: "sender_ioa == | 
| 3523 | 84 |  (sender_asig, {([],{|},{|},False,True)}, sender_trans,{},{})"
 | 
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 85 | |
| 19739 | 86 | lemma in_sender_asig: | 
| 87 | "S_msg(m) : actions(sender_asig)" | |
| 88 | "R_msg(m) ~: actions(sender_asig)" | |
| 89 | "S_pkt(pkt) : actions(sender_asig)" | |
| 90 | "R_pkt(pkt) ~: actions(sender_asig)" | |
| 91 | "S_ack(b) ~: actions(sender_asig)" | |
| 92 | "R_ack(b) : actions(sender_asig)" | |
| 93 | "C_m_s : actions(sender_asig)" | |
| 94 | "C_m_r ~: actions(sender_asig)" | |
| 95 | "C_r_s : actions(sender_asig)" | |
| 96 | "C_r_r(m) ~: actions(sender_asig)" | |
| 97 | by (simp_all add: sender_asig_def actions_def asig_projections) | |
| 98 | ||
| 99 | lemmas sender_projections = sq_def ssent_def srcvd_def sbit_def ssending_def | |
| 17244 | 100 | |
| 3073 
88366253a09a
Old NTP files now running under the IOA meta theory based on HOLCF;
 mueller parents: diff
changeset | 101 | end |