| author | paulson |
| Wed, 14 Dec 2005 16:13:09 +0100 | |
| changeset 18404 | aa27c10a040e |
| parent 17233 | 41eee2e7b465 |
| child 19741 | f65265d71426 |
| permissions | -rw-r--r-- |
| 4559 | 1 |
(* Title: HOLCF/IOA/meta_theory/Abstraction.thy |
2 |
ID: $Id$ |
|
| 12218 | 3 |
Author: Olaf Müller |
| 17233 | 4 |
*) |
| 4559 | 5 |
|
| 17233 | 6 |
header {* Abstraction Theory -- tailored for I/O automata *}
|
| 4559 | 7 |
|
| 17233 | 8 |
theory Abstraction |
9 |
imports LiveIOA |
|
10 |
begin |
|
| 4559 | 11 |
|
| 17233 | 12 |
defaultsort type |
| 4559 | 13 |
|
14 |
consts |
|
15 |
||
|
4577
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
mueller
parents:
4559
diff
changeset
|
16 |
cex_abs ::"('s1 => 's2) => ('a,'s1)execution => ('a,'s2)execution"
|
|
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
mueller
parents:
4559
diff
changeset
|
17 |
cex_absSeq ::"('s1 => 's2) => ('a option,'s1)transition Seq => ('a option,'s2)transition Seq"
|
| 4559 | 18 |
|
19 |
is_abstraction ::"[('s1=>'s2),('a,'s1)ioa,('a,'s2)ioa] => bool"
|
|
20 |
||
| 17233 | 21 |
weakeningIOA :: "('a,'s2)ioa => ('a,'s1)ioa => ('s1 => 's2) => bool"
|
22 |
temp_weakening :: "('a,'s2)ioa_temp => ('a,'s1)ioa_temp => ('s1 => 's2) => bool"
|
|
23 |
temp_strengthening :: "('a,'s2)ioa_temp => ('a,'s1)ioa_temp => ('s1 => 's2) => bool"
|
|
| 4559 | 24 |
|
25 |
state_weakening :: "('a,'s2)step_pred => ('a,'s1)step_pred => ('s1 => 's2) => bool"
|
|
26 |
state_strengthening :: "('a,'s2)step_pred => ('a,'s1)step_pred => ('s1 => 's2) => bool"
|
|
27 |
||
28 |
is_live_abstraction :: "('s1 => 's2) => ('a,'s1)live_ioa => ('a,'s2)live_ioa => bool"
|
|
29 |
||
30 |
||
31 |
defs |
|
32 |
||
| 17233 | 33 |
is_abstraction_def: |
34 |
"is_abstraction f C A == |
|
35 |
(!s:starts_of(C). f(s):starts_of(A)) & |
|
36 |
(!s t a. reachable C s & s -a--C-> t |
|
| 4559 | 37 |
--> (f s) -a--A-> (f t))" |
38 |
||
| 17233 | 39 |
is_live_abstraction_def: |
40 |
"is_live_abstraction h CL AM == |
|
| 4559 | 41 |
is_abstraction h (fst CL) (fst AM) & |
42 |
temp_weakening (snd AM) (snd CL) h" |
|
43 |
||
| 17233 | 44 |
cex_abs_def: |
| 10835 | 45 |
"cex_abs f ex == (f (fst ex), Map (%(a,t). (a,f t))$(snd ex))" |
| 4559 | 46 |
|
|
4577
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
mueller
parents:
4559
diff
changeset
|
47 |
(* equals cex_abs on Sequneces -- after ex2seq application -- *) |
| 17233 | 48 |
cex_absSeq_def: |
| 10835 | 49 |
"cex_absSeq f == % s. Map (%(s,a,t). (f s,a,f t))$s" |
|
4577
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
mueller
parents:
4559
diff
changeset
|
50 |
|
| 17233 | 51 |
weakeningIOA_def: |
| 4559 | 52 |
"weakeningIOA A C h == ! ex. ex : executions C --> cex_abs h ex : executions A" |
53 |
||
| 17233 | 54 |
temp_weakening_def: |
| 4559 | 55 |
"temp_weakening Q P h == temp_strengthening (.~ Q) (.~ P) h" |
56 |
||
| 17233 | 57 |
temp_strengthening_def: |
| 4559 | 58 |
"temp_strengthening Q P h == ! ex. (cex_abs h ex |== Q) --> (ex |== P)" |
59 |
||
| 17233 | 60 |
state_weakening_def: |
| 4559 | 61 |
"state_weakening Q P h == state_strengthening (.~Q) (.~P) h" |
62 |
||
| 17233 | 63 |
state_strengthening_def: |
| 4559 | 64 |
"state_strengthening Q P h == ! s t a. Q (h(s),a,h(t)) --> P (s,a,t)" |
65 |
||
| 17233 | 66 |
axioms |
| 4559 | 67 |
|
|
4577
674b0b354feb
added thms wrt weakening and strengthening in Abstraction;
mueller
parents:
4559
diff
changeset
|
68 |
(* thm about ex2seq which is not provable by induction as ex2seq is not continous *) |
| 17233 | 69 |
ex2seq_abs_cex: |
70 |
"ex2seq (cex_abs h ex) = cex_absSeq h (ex2seq ex)" |
|
| 4559 | 71 |
|
| 5976 | 72 |
(* analog to the proved thm strength_Box - proof skipped as trivial *) |
| 17233 | 73 |
weak_Box: |
74 |
"temp_weakening P Q h |
|
| 4559 | 75 |
==> temp_weakening ([] P) ([] Q) h" |
76 |
||
| 5976 | 77 |
(* analog to the proved thm strength_Next - proof skipped as trivial *) |
| 17233 | 78 |
weak_Next: |
79 |
"temp_weakening P Q h |
|
| 4559 | 80 |
==> temp_weakening (Next P) (Next Q) h" |
81 |
||
| 17233 | 82 |
ML {* use_legacy_bindings (the_context ()) *}
|
83 |
||
84 |
end |