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