src/HOLCF/IOA/ABP/Receiver.thy
author wenzelm
Sat, 27 May 2006 19:49:36 +0200
changeset 19738 1ac610922636
parent 17244 0b2ff9541727
child 25131 2c8caac48ade
permissions -rw-r--r--
removed legacy ML scripts;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
     1
(*  Title:      HOLCF/IOA/ABP/Receiver.thy
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
     2
    ID:         $Id$
12218
wenzelm
parents: 6468
diff changeset
     3
    Author:     Olaf Müller
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
     4
*)
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
     5
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
     6
header {* The implementation: receiver *}
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
     7
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
     8
theory Receiver
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
     9
imports IOA Action Lemmas
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    10
begin
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    11
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    12
types
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    13
  'm receiver_state = "'m list * bool"  -- {* messages, mode *}
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    14
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    15
constdefs
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    16
  rq            :: "'m receiver_state => 'm list"
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    17
  "rq == fst"
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    18
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    19
  rbit          :: "'m receiver_state => bool"
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    20
  "rbit == snd"
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    21
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    22
receiver_asig :: "'m action signature"
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    23
"receiver_asig ==
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    24
  (UN pkt. {R_pkt(pkt)},
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    25
  (UN m. {R_msg(m)}) Un (UN b. {S_ack(b)}),
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    26
  {})"
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    27
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    28
receiver_trans :: "('m action, 'm receiver_state)transition set"
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    29
"receiver_trans ==
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    30
 {tr. let s = fst(tr);
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    31
          t = snd(snd(tr))
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    32
      in
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    33
      case fst(snd(tr))
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    34
      of
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    35
      Next    =>  False |
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    36
      S_msg(m) => False |
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    37
      R_msg(m) => (rq(s) ~= [])  &
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    38
                   m = hd(rq(s))  &
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    39
                   rq(t) = tl(rq(s))   &
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    40
                  rbit(t)=rbit(s)  |
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    41
      S_pkt(pkt) => False |
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    42
      R_pkt(pkt) => if (hdr(pkt) ~= rbit(s))&rq(s)=[] then
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    43
                         rq(t) = (rq(s)@[msg(pkt)]) &rbit(t) = (~rbit(s)) else
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    44
                         rq(t) =rq(s) & rbit(t)=rbit(s)  |
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    45
      S_ack(b) => b = rbit(s)                        &
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    46
                      rq(t) = rq(s)                    &
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    47
                      rbit(t)=rbit(s) |
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    48
      R_ack(b) => False}"
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    49
17244
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    50
receiver_ioa :: "('m action, 'm receiver_state)ioa"
0b2ff9541727 converted to Isar theory format;
wenzelm
parents: 14981
diff changeset
    51
"receiver_ioa ==
3522
a34c20f4bf44 changes neede for introducing fairness
mueller
parents: 3072
diff changeset
    52
 (receiver_asig, {([],False)}, receiver_trans,{},{})"
3072
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    53
a31419014be5 Old ABP files now running under the IOA meta theory based on HOLCF;
mueller
parents:
diff changeset
    54
end