IOA/example/Receiver.thy
changeset 168 44ff2275d44f
parent 156 fd1be45b64bf
child 249 492493334e0f
equal deleted inserted replaced
167:37a6e2f55230 168:44ff2275d44f
     1 Receiver = List + IOA + Action + Multiset + "Lemmas" +
     1 (*  Title:      HOL/IOA/example/Receiver.thy
       
     2     ID:         $Id$
       
     3     Author:     Tobias Nipkow & Konrad Slind
       
     4     Copyright   1994  TU Muenchen
       
     5 
       
     6 The implementation: receiver
       
     7 *)
       
     8 
       
     9 Receiver = List + IOA + Action + Multiset +
     2 
    10 
     3 types 
    11 types 
     4 
    12 
     5 'm receiver_state
    13 'm receiver_state
     6 = "'m list * bool multiset * 'm packet multiset * bool * bool"
    14 = "'m list * bool multiset * 'm packet multiset * bool * bool"
    15   rsent         :: "'m receiver_state => bool multiset"
    23   rsent         :: "'m receiver_state => bool multiset"
    16   rrcvd         :: "'m receiver_state => 'm packet multiset"
    24   rrcvd         :: "'m receiver_state => 'm packet multiset"
    17   rbit          :: "'m receiver_state => bool"
    25   rbit          :: "'m receiver_state => bool"
    18   rsending      :: "'m receiver_state => bool"
    26   rsending      :: "'m receiver_state => bool"
    19 
    27 
    20 rules
    28 defs
    21 
    29 
    22 rq_def       "rq == fst"
    30 rq_def       "rq == fst"
    23 rsent_def    "rsent == fst o snd"
    31 rsent_def    "rsent == fst o snd"
    24 rrcvd_def    "rrcvd == fst o snd o snd"
    32 rrcvd_def    "rrcvd == fst o snd o snd"
    25 rbit_def     "rbit == fst o snd o snd o snd"
    33 rbit_def     "rbit == fst o snd o snd o snd"
    26 rsending_def "rsending == snd o snd o snd o snd"
    34 rsending_def "rsending == snd o snd o snd o snd"
    27 
    35 
    28 receiver_asig_def "receiver_asig ==                                      \
    36 receiver_asig_def "receiver_asig ==            \
    29 \ <UN pkt. {R_pkt(pkt)},                                              \
    37 \ <UN pkt. {R_pkt(pkt)},                       \
    30 \  (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}),                          \
    38 \  (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}),   \
    31 \  insert(C_m_r, UN m. {C_r_r(m)})>"
    39 \  insert(C_m_r, UN m. {C_r_r(m)})>"
    32 
    40 
    33 receiver_trans_def "receiver_trans ==                                    \
    41 receiver_trans_def "receiver_trans ==                                    \
    34 \ {tr. let s = fst(tr);                                                  \
    42 \ {tr. let s = fst(tr);                                                  \
    35 \          t = snd(snd(tr))                                              \
    43 \          t = snd(snd(tr))                                              \
    53 \                     rsent(t) = addm(rsent(s),rbit(s))  &               \
    61 \                     rsent(t) = addm(rsent(s),rbit(s))  &               \
    54 \                     rrcvd(t) = rrcvd(s)                &               \
    62 \                     rrcvd(t) = rrcvd(s)                &               \
    55 \                     rbit(t)=rbit(s)                    &               \
    63 \                     rbit(t)=rbit(s)                    &               \
    56 \                     rsending(s)                        &               \
    64 \                     rsending(s)                        &               \
    57 \                     rsending(t) |                                      \
    65 \                     rsending(t) |                                      \
    58 \R_ack(b) => False |                                                  \
    66 \      R_ack(b) => False |                                                  \
    59 \      C_m_s => False |                                                  \
    67 \      C_m_s => False |                                                  \
    60 \ C_m_r => count(rsent(s),~rbit(s)) < countm(rrcvd(s),%y.hdr(y)=rbit(s)) & \
    68 \ C_m_r => count(rsent(s),~rbit(s)) < countm(rrcvd(s),%y.hdr(y)=rbit(s)) & \
    61 \             rq(t) = rq(s)                        &                     \
    69 \             rq(t) = rq(s)                        &                     \
    62 \             rsent(t)=rsent(s)                    &                     \
    70 \             rsent(t)=rsent(s)                    &                     \
    63 \             rrcvd(t)=rrcvd(s)                    &                     \
    71 \             rrcvd(t)=rrcvd(s)                    &                     \