(* $Id: Ex1.thy,v 1.2 2005/09/03 15:54:11 wenzelm Exp $ *)
header {* Section 10.4 *}
theory Ex1
imports LCF
begin
consts
P :: "'a => tr"
G :: "'a => 'a"
H :: "'a => 'a"
K :: "('a => 'a) => ('a => 'a)"
axioms
P_strict: "P(UU) = UU"
K: "K = (%h x. P(x) => x | h(h(G(x))))"
H: "H = FIX(K)"
ML {* use_legacy_bindings (the_context ()) *}
end
theorem H_unfold:
H = K(H)
theorem H_strict:
H(UU) = UU
theorem H_idemp_lemma:
∀x. H(FIX(K, x)) = FIX(K, x)
theorem H_idemp:
∀x. H(H(x)) = H(x)