3071
|
1 |
(* Title: HOLCF/IOA/meta_theory/RefMappings.thy
|
|
2 |
ID: $$
|
|
3 |
Author: Olaf Mueller
|
|
4 |
Copyright 1996 TU Muenchen
|
|
5 |
|
|
6 |
Refinement Mappings in HOLCF/IOA
|
|
7 |
*)
|
|
8 |
|
|
9 |
RefMappings = Traces +
|
|
10 |
|
|
11 |
default term
|
|
12 |
|
|
13 |
consts
|
|
14 |
laststate ::"('a,'s)execution => 's"
|
|
15 |
move ::"[('a,'s)ioa,('a,'s)execution,'s,'a,'s] => bool"
|
|
16 |
is_ref_map ::"[('s1=>'s2),('a,'s1)ioa,('a,'s2)ioa] => bool"
|
|
17 |
is_weak_ref_map ::"[('s1=>'s2),('a,'s1)ioa,('a,'s2)ioa] => bool"
|
|
18 |
|
|
19 |
defs
|
|
20 |
|
|
21 |
laststate_def
|
|
22 |
"laststate ex == case Last`(snd ex) of
|
|
23 |
Undef => fst ex
|
|
24 |
| Def at => snd at"
|
|
25 |
|
|
26 |
(* FIX: see paper, move should be defined on pairs, not on execs, then fst ex=s can
|
|
27 |
be omitted *)
|
|
28 |
move_def
|
|
29 |
"move ioa ex s a t ==
|
|
30 |
(is_execution_fragment ioa ex & Finite (snd ex) &
|
|
31 |
fst ex=s & laststate ex=t &
|
|
32 |
mk_trace ioa`(snd ex) = (if a:ext(ioa) then a>>nil else nil))"
|
|
33 |
|
|
34 |
is_ref_map_def
|
|
35 |
"is_ref_map f C A ==
|
|
36 |
(!s:starts_of(C). f(s):starts_of(A)) &
|
|
37 |
(!s t a. reachable C s &
|
|
38 |
s -a--C-> t
|
|
39 |
--> (? ex. move A ex (f s) a (f t)))"
|
|
40 |
|
|
41 |
is_weak_ref_map_def
|
|
42 |
"is_weak_ref_map f C A ==
|
|
43 |
(!s:starts_of(C). f(s):starts_of(A)) &
|
|
44 |
(!s t a. reachable C s &
|
|
45 |
s -a--C-> t
|
|
46 |
--> (if a:ext(C)
|
|
47 |
then (f s) -a--A-> (f t)
|
|
48 |
else (f s)=(f t)))"
|
|
49 |
|
|
50 |
end
|