author | haftmann |
Tue, 20 Oct 2009 16:13:01 +0200 | |
changeset 33037 | b22e44496dc2 |
parent 27208 | 5fe899199f85 |
child 35762 | af3ff2ba4c54 |
permissions | -rw-r--r-- |
4905 | 1 |
|
17248 | 2 |
(* $Id$ *) |
3 |
||
4 |
header {* Section 10.4 *} |
|
4905 | 5 |
|
17248 | 6 |
theory Ex1 |
7 |
imports LCF |
|
8 |
begin |
|
4905 | 9 |
|
10 |
consts |
|
17248 | 11 |
P :: "'a => tr" |
12 |
G :: "'a => 'a" |
|
13 |
H :: "'a => 'a" |
|
14 |
K :: "('a => 'a) => ('a => 'a)" |
|
4905 | 15 |
|
17248 | 16 |
axioms |
17 |
P_strict: "P(UU) = UU" |
|
18 |
K: "K = (%h x. P(x) => x | h(h(G(x))))" |
|
19 |
H: "H = FIX(K)" |
|
20 |
||
19755 | 21 |
|
22 |
declare P_strict [simp] K [simp] |
|
23 |
||
24 |
lemma H_unfold: "H = K(H)" |
|
25 |
apply (simplesubst H) |
|
26 |
apply (rule FIX_eq [symmetric]) |
|
27 |
done |
|
28 |
||
29 |
lemma H_strict [simp]: "H(UU)=UU" |
|
30 |
apply (simplesubst H_unfold) |
|
31 |
apply simp |
|
32 |
done |
|
33 |
||
34 |
lemma H_idemp_lemma: "ALL x. H(FIX(K,x)) = FIX(K,x)" |
|
27208
5fe899199f85
proper context for tactics derived from res_inst_tac;
wenzelm
parents:
19755
diff
changeset
|
35 |
apply (tactic {* induct_tac @{context} "K" 1 *}) |
19755 | 36 |
apply (simp (no_asm)) |
37 |
apply (simp (no_asm) split: COND_cases_iff) |
|
38 |
apply (intro strip) |
|
39 |
apply (subst H_unfold) |
|
40 |
apply (simp (no_asm_simp)) |
|
41 |
done |
|
42 |
||
43 |
lemma H_idemp: "ALL x. H(H(x)) = H(x)" |
|
44 |
apply (rule H_idemp_lemma [folded H]) |
|
45 |
done |
|
4905 | 46 |
|
47 |
end |