src/HOL/TLA/Buffer/DBuffer.thy
author wenzelm
Sun, 02 Nov 2014 18:21:45 +0100
changeset 58889 5b7a9633cfa8
parent 51717 9e7d1c139569
child 60587 0318b43ee95c
permissions -rw-r--r--
modernized header uniformly as section;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41589
bbd861837ebc tuned headers;
wenzelm
parents: 26342
diff changeset
     1
(*  Title:      HOL/TLA/Buffer/DBuffer.thy
bbd861837ebc tuned headers;
wenzelm
parents: 26342
diff changeset
     2
    Author:     Stephan Merz, University of Munich
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     3
*)
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
     4
58889
5b7a9633cfa8 modernized header uniformly as section;
wenzelm
parents: 51717
diff changeset
     5
section {* Two FIFO buffers in a row, with interleaving assumption *}
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
     6
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
     7
theory DBuffer
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
     8
imports Buffer
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
     9
begin
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    10
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    11
axiomatization
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    12
  (* implementation variables *)
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    13
  inp  :: "nat stfun" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    14
  mid  :: "nat stfun" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    15
  out  :: "nat stfun" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    16
  q1   :: "nat list stfun" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    17
  q2   :: "nat list stfun" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    18
  qc   :: "nat list stfun" and
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    19
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    20
  DBInit :: stpred and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    21
  DBEnq :: action and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    22
  DBDeq :: action and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    23
  DBPass :: action and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    24
  DBNext :: action and
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
    25
  DBuffer :: temporal
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    26
where
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    27
  DB_base:        "basevars (inp,mid,out,q1,q2)" and
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    28
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    29
  (* the concatenation of the two buffers *)
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    30
  qc_def:         "PRED qc == PRED (q2 @ q1)" and
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    31
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    32
  DBInit_def:     "DBInit   == PRED (BInit inp q1 mid  &  BInit mid q2 out)" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    33
  DBEnq_def:      "DBEnq    == ACT  Enq inp q1 mid  &  unchanged (q2,out)" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    34
  DBDeq_def:      "DBDeq    == ACT  Deq mid q2 out  &  unchanged (inp,q1)" and
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
    35
  DBPass_def:     "DBPass   == ACT  Deq inp q1 mid
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    36
                                 & (q2$ = $q2 @ [ mid$ ])
47968
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    37
                                 & (out$ = $out)" and
3119ad2b5ad3 eliminated old 'axioms';
wenzelm
parents: 41589
diff changeset
    38
  DBNext_def:     "DBNext   == ACT  (DBEnq | DBDeq | DBPass)" and
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
    39
  DBuffer_def:    "DBuffer  == TEMP Init DBInit
6255
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    40
                                 & [][DBNext]_(inp,mid,out,q1,q2)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    41
                                 & WF(DBDeq)_(inp,mid,out,q1,q2)
db63752140c7 updated (Stephan Merz);
wenzelm
parents: 3807
diff changeset
    42
                                 & WF(DBPass)_(inp,mid,out,q1,q2)"
3807
82a99b090d9d A formalization of TLA in HOL -- by Stephan Merz;
wenzelm
parents:
diff changeset
    43
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    44
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    45
declare qc_def [simp]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    46
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    47
lemmas db_defs =
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    48
  BInit_def Enq_def Deq_def Next_def IBuffer_def Buffer_def
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    49
  DBInit_def DBEnq_def DBDeq_def DBPass_def DBNext_def DBuffer_def
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    50
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    51
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    52
(*** Proper initialization ***)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    53
lemma DBInit: "|- Init DBInit --> Init (BInit inp qc out)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    54
  by (auto simp: Init_def DBInit_def BInit_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    55
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    56
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    57
(*** Step simulation ***)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    58
lemma DB_step_simulation: "|- [DBNext]_(inp,mid,out,q1,q2) --> [Next inp qc out]_(inp,qc,out)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    59
  apply (rule square_simulation)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    60
   apply clarsimp
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    61
  apply (tactic
51717
9e7d1c139569 simplifier uses proper Proof.context instead of historic type simpset;
wenzelm
parents: 47968
diff changeset
    62
    {* action_simp_tac (@{context} addsimps (@{thm hd_append} :: @{thms db_defs})) [] [] 1 *})
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    63
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    64
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    65
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    66
(*** Simulation of fairness ***)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    67
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    68
(* Compute enabledness predicates for DBDeq and DBPass actions *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    69
lemma DBDeq_visible: "|- <DBDeq>_(inp,mid,out,q1,q2) = DBDeq"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    70
  apply (unfold angle_def DBDeq_def Deq_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    71
  apply (safe, simp (asm_lr))+
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    72
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    73
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    74
lemma DBDeq_enabled: 
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    75
    "|- Enabled (<DBDeq>_(inp,mid,out,q1,q2)) = (q2 ~= #[])"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    76
  apply (unfold DBDeq_visible [action_rewrite])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    77
  apply (force intro!: DB_base [THEN base_enabled, temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    78
    elim!: enabledE simp: angle_def DBDeq_def Deq_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    79
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    80
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    81
lemma DBPass_visible: "|- <DBPass>_(inp,mid,out,q1,q2) = DBPass"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    82
  by (auto simp: angle_def DBPass_def Deq_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    83
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    84
lemma DBPass_enabled: 
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    85
    "|- Enabled (<DBPass>_(inp,mid,out,q1,q2)) = (q1 ~= #[])"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    86
  apply (unfold DBPass_visible [action_rewrite])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    87
  apply (force intro!: DB_base [THEN base_enabled, temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    88
    elim!: enabledE simp: angle_def DBPass_def Deq_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    89
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    90
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    91
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    92
(* The plan for proving weak fairness at the higher level is to prove
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    93
   (0)  DBuffer => (Enabled (Deq inp qc out) ~> (Deq inp qc out))
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    94
   which is in turn reduced to the two leadsto conditions
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    95
   (1)  DBuffer => (Enabled (Deq inp qc out) ~> q2 ~= [])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    96
   (2)  DBuffer => (q2 ~= [] ~> DBDeq)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    97
   and the fact that DBDeq implies <Deq inp qc out>_(inp,qc,out)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
    98
   (and therefore DBDeq ~> <Deq inp qc out>_(inp,qc,out) trivially holds).
17309
c43ed29bd197 converted to Isar theory format;
wenzelm
parents: 6255
diff changeset
    99
21624
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   100
   Condition (1) is reduced to
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   101
   (1a) DBuffer => (qc ~= [] /\ q2 = [] ~> q2 ~= [])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   102
   by standard leadsto rules (leadsto_classical) and rule Deq_enabledE.
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   103
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   104
   Both (1a) and (2) are proved from DBuffer's WF conditions by standard
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   105
   WF reasoning (Lamport's WF1 and WF_leadsto).
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   106
   The condition WF(Deq inp qc out) follows from (0) by rule leadsto_WF.
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   107
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   108
   One could use Lamport's WF2 instead.
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   109
*)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   110
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   111
(* Condition (1a) *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   112
lemma DBFair_1a: "|- [][DBNext]_(inp,mid,out,q1,q2) & WF(DBPass)_(inp,mid,out,q1,q2)  
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   113
         --> (qc ~= #[] & q2 = #[] ~> q2 ~= #[])"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   114
  apply (rule WF1)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   115
    apply (force simp: db_defs)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   116
   apply (force simp: angle_def DBPass_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   117
  apply (force simp: DBPass_enabled [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   118
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   119
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   120
(* Condition (1) *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   121
lemma DBFair_1: "|- [][DBNext]_(inp,mid,out,q1,q2) & WF(DBPass)_(inp,mid,out,q1,q2)  
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   122
         --> (Enabled (<Deq inp qc out>_(inp,qc,out)) ~> q2 ~= #[])"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   123
  apply clarsimp
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   124
  apply (rule leadsto_classical [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   125
  apply (rule DBFair_1a [temp_use, THEN LatticeTransitivity [temp_use]])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   126
  apply assumption+
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   127
  apply (rule ImplLeadsto_gen [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   128
  apply (force intro!: necT [temp_use] dest!: STL2_gen [temp_use] Deq_enabledE [temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   129
    simp add: Init_defs)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   130
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   131
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   132
(* Condition (2) *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   133
lemma DBFair_2: "|- [][DBNext]_(inp,mid,out,q1,q2) & WF(DBDeq)_(inp,mid,out,q1,q2)  
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   134
         --> (q2 ~= #[] ~> DBDeq)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   135
  apply (rule WF_leadsto)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   136
    apply (force simp: DBDeq_enabled [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   137
   apply (force simp: angle_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   138
  apply (force simp: db_defs elim!: Stable [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   139
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   140
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   141
(* High-level fairness *)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   142
lemma DBFair: "|- [][DBNext]_(inp,mid,out,q1,q2) & WF(DBPass)_(inp,mid,out,q1,q2)  
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   143
                                        & WF(DBDeq)_(inp,mid,out,q1,q2)   
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   144
         --> WF(Deq inp qc out)_(inp,qc,out)"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   145
  apply (auto simp del: qc_def intro!: leadsto_WF [temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   146
    DBFair_1 [temp_use, THEN [2] LatticeTransitivity [temp_use]]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   147
    DBFair_2 [temp_use, THEN [2] LatticeTransitivity [temp_use]])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   148
  apply (auto intro!: ImplLeadsto_simple [temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   149
    simp: angle_def DBDeq_def Deq_def hd_append [try_rewrite])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   150
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   151
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   152
(*** Main theorem ***)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   153
lemma DBuffer_impl_Buffer: "|- DBuffer --> Buffer inp out"
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   154
  apply (unfold DBuffer_def Buffer_def IBuffer_def)
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   155
  apply (force intro!: eexI [temp_use] DBInit [temp_use]
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   156
    DB_step_simulation [THEN STL4, temp_use] DBFair [temp_use])
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   157
  done
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   158
6f79647cf536 TLA: converted legacy ML scripts;
wenzelm
parents: 17309
diff changeset
   159
end