src/HOL/TLA/Buffer/Buffer.thy
author wenzelm
Mon, 29 Nov 1999 15:52:49 +0100
changeset 8039 a901bafe4578
parent 6255 db63752140c7
child 17309 c43ed29bd197
permissions -rw-r--r--
Goal: tuned pris;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     1
(*
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     2
    File:        Buffer.thy
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
    Author:      Stephan Merz
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
    Copyright:   1997 University of Munich
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     5
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     6
   Theory Name: Buffer
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     7
   Logic Image: TLA
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     8
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     9
   A simple FIFO buffer (synchronous communication, interleaving)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    11
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    12
Buffer = TLA +
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    13
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    14
consts
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    15
  (* actions *)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    16
  BInit     :: "'a stfun => 'a list stfun => 'a stfun => stpred"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
  Enq       :: "'a stfun => 'a list stfun => 'a stfun => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    18
  Deq       :: "'a stfun => 'a list stfun => 'a stfun => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    19
  Next      :: "'a stfun => 'a list stfun => 'a stfun => action"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    20
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    21
  (* temporal formulas *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    22
  IBuffer   :: "'a stfun => 'a list stfun => 'a stfun => temporal"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
  Buffer    :: "'a stfun => 'a stfun => temporal"
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    24
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
rules
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    26
  BInit_def   "BInit ic q oc    == PRED q = #[]"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    27
  Enq_def     "Enq ic q oc      == ACT (ic$ ~= $ic) 
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    28
                                     & (q$ = $q @ [ ic$ ]) 
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    29
                                     & (oc$ = $oc)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    30
  Deq_def     "Deq ic q oc      == ACT ($q ~= #[])
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    31
                                     & (oc$ = hd< $q >)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    32
                                     & (q$ = tl< $q >)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    33
                                     & (ic$ = $ic)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    34
  Next_def    "Next ic q oc     == ACT (Enq ic q oc | Deq ic q oc)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    35
  IBuffer_def "IBuffer ic q oc  == TEMP Init (BInit ic q oc)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    36
                                      & [][Next ic q oc]_(ic,q,oc)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    37
                                      & WF(Deq ic q oc)_(ic,q,oc)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    38
  Buffer_def  "Buffer ic oc     == TEMP (EEX q. IBuffer ic q oc)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    39
end
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    40
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    41
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    42