src/HOL/IOA/ABP/Receiver.thy
author lcp
Tue, 25 Apr 1995 11:14:03 +0200
changeset 1072 0140ff702b23
parent 1050 0c36c6a52a1d
child 1139 993e475e70e2
permissions -rw-r--r--
updated version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1050
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/IOA/ABP/Receiver.thy
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     2
    ID:         $Id$
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow & Olaf Mueller
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     4
    Copyright   1995  TU Muenchen
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     5
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     6
The implementation: receiver
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     7
*)
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     8
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     9
Receiver = List + IOA + Action + Lemmas +
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    10
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    11
types 
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    12
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    13
'm receiver_state
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    14
= "'m list * bool"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    15
(* messages  mode *)
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    16
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    17
consts
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    18
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    19
  receiver_asig :: "'m action signature"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    20
  receiver_trans:: "('m action, 'm receiver_state)transition set"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    21
  receiver_ioa  :: "('m action, 'm receiver_state)ioa"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    22
  rq            :: "'m receiver_state => 'm list"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    23
  rbit          :: "'m receiver_state => bool"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    24
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    25
defs
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    26
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    27
rq_def       "rq == fst"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    28
rbit_def     "rbit == snd"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    29
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    30
receiver_asig_def "receiver_asig ==            \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    31
\ (UN pkt. {R_pkt(pkt)},                       \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    32
\  (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}),   \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    33
\  {})"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    34
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    35
receiver_trans_def "receiver_trans ==                                    \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    36
\ {tr. let s = fst(tr);                                                  \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    37
\          t = snd(snd(tr))                                              \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    38
\      in                                                                \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    39
\      case fst(snd(tr))                                                 \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    40
\      of   \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    41
\      Next    =>  False |     \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    42
\      S_msg(m) => False |                                               \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    43
\      R_msg(m) => (rq(s) ~= [])  &                                     \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    44
\		   m = hd(rq(s))  &                             \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    45
\		   rq(t) = tl(rq(s))   &                              \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    46
\                  rbit(t)=rbit(s)  |                                 \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    47
\      S_pkt(pkt) => False |                                          \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    48
\      R_pkt(pkt) => if (hdr(pkt) ~= rbit(s))&rq(s)=[] then            \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    49
\		         rq(t) = (rq(s)@[msg(pkt)]) &rbit(t) = (~rbit(s)) else  \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    50
\		         rq(t) =rq(s) & rbit(t)=rbit(s)  |   \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    51
\      S_ack(b) => b = rbit(s)                        &               \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    52
\                      rq(t) = rq(s)                    &             \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    53
\                      rbit(t)=rbit(s) |                              \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    54
\      R_ack(b) => False}"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    55
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    56
receiver_ioa_def "receiver_ioa == \
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    57
\ (receiver_asig, {([],False)}, receiver_trans)"
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    58
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    59
end