| 42151 |      1 | (*  Title:      HOL/HOLCF/IOA/Storage/Spec.thy
 | 
| 40945 |      2 |     Author:     Olaf Müller
 | 
| 6008 |      3 | *)
 | 
|  |      4 | 
 | 
| 17244 |      5 | header {* The specification of a memory *}
 | 
| 6008 |      6 | 
 | 
| 17244 |      7 | theory Spec
 | 
|  |      8 | imports IOA Action
 | 
|  |      9 | begin
 | 
| 6008 |     10 | 
 | 
| 27361 |     11 | definition
 | 
|  |     12 |   spec_sig :: "action signature" where
 | 
|  |     13 |   "spec_sig = (UN l.{Free l} Un {New},
 | 
|  |     14 |                UN l.{Loc l},
 | 
|  |     15 |                {})"
 | 
| 6008 |     16 | 
 | 
| 27361 |     17 | definition
 | 
|  |     18 |   spec_trans :: "(action, nat set * bool)transition set" where
 | 
|  |     19 |   "spec_trans =
 | 
|  |     20 |    {tr. let s = fst(tr); used = fst s; c = snd s;
 | 
|  |     21 |             t = snd(snd(tr)); used' = fst t; c' = snd t
 | 
|  |     22 |         in
 | 
|  |     23 |         case fst(snd(tr))
 | 
|  |     24 |         of
 | 
|  |     25 |         New       => used' = used & c'  |
 | 
|  |     26 |         Loc l     => c & l~:used  & used'= used Un {l} & ~c'   |
 | 
|  |     27 |         Free l    => used'=used - {l} & c'=c}"
 | 
| 6008 |     28 | 
 | 
| 27361 |     29 | definition
 | 
|  |     30 |   spec_ioa :: "(action, nat set * bool)ioa" where
 | 
|  |     31 |   "spec_ioa = (spec_sig, {({},False)}, spec_trans,{},{})"
 | 
| 17244 |     32 | 
 | 
| 6008 |     33 | end
 |