author | huffman |
Sat, 27 Nov 2010 16:08:10 -0800 | |
changeset 40774 | 0437dbc127b3 |
parent 30607 | src/HOLCF/IOA/ex/TrivEx.thy@c3d1590debd8 |
child 40945 | b8703f63bfb2 |
permissions | -rw-r--r-- |
6470 | 1 |
(* Title: HOLCF/IOA/TrivEx.thy |
12218 | 2 |
Author: Olaf Müller |
6470 | 3 |
*) |
4 |
||
17244 | 5 |
header {* Trivial Abstraction Example *} |
6 |
||
7 |
theory TrivEx |
|
8 |
imports Abstraction |
|
9 |
begin |
|
6470 | 10 |
|
11 |
datatype action = INC |
|
12 |
||
25135
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
13 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
14 |
C_asig :: "action signature" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
15 |
"C_asig = ({},{INC},{})" |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
16 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
17 |
C_trans :: "(action, nat)transition set" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
18 |
"C_trans = |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
19 |
{tr. let s = fst(tr); |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
20 |
t = snd(snd(tr)) |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
21 |
in case fst(snd(tr)) |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
22 |
of |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
23 |
INC => t = Suc(s)}" |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
24 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
25 |
C_ioa :: "(action, nat)ioa" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
26 |
"C_ioa = (C_asig, {0}, C_trans,{},{})" |
6470 | 27 |
|
25135
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
28 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
29 |
A_asig :: "action signature" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
30 |
"A_asig = ({},{INC},{})" |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
31 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
32 |
A_trans :: "(action, bool)transition set" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
33 |
"A_trans = |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
34 |
{tr. let s = fst(tr); |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
35 |
t = snd(snd(tr)) |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
36 |
in case fst(snd(tr)) |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
37 |
of |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
38 |
INC => t = True}" |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
39 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
40 |
A_ioa :: "(action, bool)ioa" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
41 |
"A_ioa = (A_asig, {False}, A_trans,{},{})" |
6470 | 42 |
|
25135
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
43 |
definition |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
44 |
h_abs :: "nat => bool" where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
45 |
"h_abs n = (n~=0)" |
6470 | 46 |
|
25135
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
47 |
axiomatization where |
4f8176c940cf
modernized specifications ('definition', 'axiomatization');
wenzelm
parents:
19740
diff
changeset
|
48 |
MC_result: "validIOA A_ioa (<>[] <%(b,a,c). b>)" |
6470 | 49 |
|
19740 | 50 |
lemma h_abs_is_abstraction: |
51 |
"is_abstraction h_abs C_ioa A_ioa" |
|
52 |
apply (unfold is_abstraction_def) |
|
53 |
apply (rule conjI) |
|
54 |
txt {* start states *} |
|
55 |
apply (simp (no_asm) add: h_abs_def starts_of_def C_ioa_def A_ioa_def) |
|
56 |
txt {* step case *} |
|
57 |
apply (rule allI)+ |
|
58 |
apply (rule imp_conj_lemma) |
|
59 |
apply (simp (no_asm) add: trans_of_def C_ioa_def A_ioa_def C_trans_def A_trans_def) |
|
60 |
apply (induct_tac "a") |
|
61 |
apply (simp add: h_abs_def) |
|
62 |
done |
|
63 |
||
64 |
lemma TrivEx_abstraction: "validIOA C_ioa (<>[] <%(n,a,m). n~=0>)" |
|
65 |
apply (rule AbsRuleT1) |
|
66 |
apply (rule h_abs_is_abstraction) |
|
67 |
apply (rule MC_result) |
|
30607
c3d1590debd8
eliminated global SIMPSET, CLASET etc. -- refer to explicit context;
wenzelm
parents:
25135
diff
changeset
|
68 |
apply abstraction |
19740 | 69 |
apply (simp add: h_abs_def) |
70 |
done |
|
17244 | 71 |
|
72 |
end |