src/HOL/TLA/Buffer/DBuffer.thy
author wenzelm
Tue, 24 Aug 1999 11:50:58 +0200
changeset 7333 6cb15c6f1d9f
parent 6255 db63752140c7
child 17309 c43ed29bd197
permissions -rw-r--r--
isar: no_pos flag;
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:        DBuffer.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: DBuffer
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
   Two FIFO buffers in a row, with interleaving assumption.
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
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
DBuffer = Buffer +
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
  (* implementation variables *)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    16
  inp, mid, out  :: nat stfun
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    17
  q1, q2, qc     :: nat list stfun
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    18
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    19
  DBInit                         :: stpred
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    20
  DBEnq, DBDeq, DBPass, DBNext   :: action
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    21
  DBuffer                        :: temporal
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    22
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    23
rules
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    24
  DB_base        "basevars (inp,mid,out,q1,q2)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    25
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    26
  (* the concatenation of the two buffers *)
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    27
  qc_def         "PRED qc == PRED (q2 @ q1)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    28
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    29
  DBInit_def     "DBInit   == PRED (BInit inp q1 mid  &  BInit mid q2 out)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    30
  DBEnq_def      "DBEnq    == ACT  Enq inp q1 mid  &  unchanged (q2,out)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    31
  DBDeq_def      "DBDeq    == ACT  Deq mid q2 out  &  unchanged (inp,q1)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    32
  DBPass_def     "DBPass   == ACT  Deq inp q1 mid
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    33
                                 & (q2$ = $q2 @ [ mid$ ])
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    34
                                 & (out$ = $out)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    35
  DBNext_def     "DBNext   == ACT  (DBEnq | DBDeq | DBPass)"
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    36
  DBuffer_def    "DBuffer  == TEMP Init DBInit
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    37
                                 & [][DBNext]_(inp,mid,out,q1,q2)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    38
                                 & WF(DBDeq)_(inp,mid,out,q1,q2)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    39
                                 & WF(DBPass)_(inp,mid,out,q1,q2)"
3807
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
end