src/HOL/IOA/ABP/Receiver.thy
author wenzelm
Mon, 09 Dec 1996 09:03:52 +0100
changeset 2334 00db792beb4e
parent 1476 608483c2122a
permissions -rw-r--r--
added -norc option; error output to stderr;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1139
993e475e70e2 *** empty log message ***
mueller
parents: 1050
diff changeset
     1
(*  Title:      HOL/IOA/example/Receiver.thy
1050
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
     2
    ID:         $Id$
1139
993e475e70e2 *** empty log message ***
mueller
parents: 1050
diff changeset
     3
    Author:     Tobias Nipkow & Konrad Slind
993e475e70e2 *** empty log message ***
mueller
parents: 1050
diff changeset
     4
    Copyright   1994  TU Muenchen
1050
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
1376
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1151
diff changeset
    19
  receiver_asig :: 'm action signature
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1151
diff changeset
    20
  receiver_trans:: ('m action, 'm receiver_state)transition set
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1151
diff changeset
    21
  receiver_ioa  :: ('m action, 'm receiver_state)ioa
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1151
diff changeset
    22
  rq            :: 'm receiver_state => 'm list
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1151
diff changeset
    23
  rbit          :: 'm receiver_state => bool
1050
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
1151
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    30
receiver_asig_def "receiver_asig ==            
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    31
 (UN pkt. {R_pkt(pkt)},                       
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    32
  (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}),   
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    33
  {})"
1050
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    34
1151
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    35
receiver_trans_def "receiver_trans ==                                    
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    36
 {tr. let s = fst(tr);                                                  
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    37
          t = snd(snd(tr))                                              
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    38
      in                                                                
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    39
      case fst(snd(tr))                                                 
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    40
      of   
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    41
      Next    =>  False |     
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    42
      S_msg(m) => False |                                               
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    43
      R_msg(m) => (rq(s) ~= [])  &                                     
1476
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
    44
                   m = hd(rq(s))  &                             
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
    45
                   rq(t) = tl(rq(s))   &                              
1151
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    46
                  rbit(t)=rbit(s)  |                                 
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    47
      S_pkt(pkt) => False |                                          
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    48
      R_pkt(pkt) => if (hdr(pkt) ~= rbit(s))&rq(s)=[] then            
1476
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
    49
                         rq(t) = (rq(s)@[msg(pkt)]) &rbit(t) = (~rbit(s)) else  
608483c2122a expanded tabs; incorporated Konrad's changes
clasohm
parents: 1376
diff changeset
    50
                         rq(t) =rq(s) & rbit(t)=rbit(s)  |   
1151
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    51
      S_ack(b) => b = rbit(s)                        &               
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    52
                      rq(t) = rq(s)                    &             
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    53
                      rbit(t)=rbit(s) |                              
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    54
      R_ack(b) => False}"
1050
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    55
1151
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    56
receiver_ioa_def "receiver_ioa == 
c820b3cc3df0 removed \...\ inside strings
clasohm
parents: 1139
diff changeset
    57
 (receiver_asig, {([],False)}, receiver_trans)"
1050
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    58
0c36c6a52a1d ABP: Alternating bit protocol example
nipkow
parents:
diff changeset
    59
end