equal
deleted
inserted
replaced
44 |
44 |
45 lemma UU_CFun: "\<bottom> \<in> CFun" |
45 lemma UU_CFun: "\<bottom> \<in> CFun" |
46 by (simp add: CFun_def inst_fun_pcpo cont_const) |
46 by (simp add: CFun_def inst_fun_pcpo cont_const) |
47 |
47 |
48 instance "->" :: (cpo, pcpo) pcpo |
48 instance "->" :: (cpo, pcpo) pcpo |
49 by (rule typedef_pcpo_UU [OF type_definition_CFun less_CFun_def UU_CFun]) |
49 by (rule typedef_pcpo [OF type_definition_CFun less_CFun_def UU_CFun]) |
50 |
50 |
51 lemmas Rep_CFun_strict = |
51 lemmas Rep_CFun_strict = |
52 typedef_Rep_strict [OF type_definition_CFun less_CFun_def UU_CFun] |
52 typedef_Rep_strict [OF type_definition_CFun less_CFun_def UU_CFun] |
53 |
53 |
54 lemmas Abs_CFun_strict = |
54 lemmas Abs_CFun_strict = |
202 apply (rule cont_Rep_CFun2) |
202 apply (rule cont_Rep_CFun2) |
203 done |
203 done |
204 |
204 |
205 text {* type @{typ "'a -> 'b"} is chain complete *} |
205 text {* type @{typ "'a -> 'b"} is chain complete *} |
206 |
206 |
207 lemma lub_cfun: "chain F \<Longrightarrow> range F <<| (LAM x. LUB i. F i$x)" |
207 lemma lub_cfun: "chain F \<Longrightarrow> range F <<| (\<Lambda> x. \<Squnion>i. F i\<cdot>x)" |
208 apply (subst thelub_fun [symmetric]) |
208 by (simp only: contlub_cfun_fun [symmetric] eta_cfun thelubE) |
209 apply (erule monofun_Rep_CFun [THEN ch2ch_monofun]) |
209 |
210 apply (erule typedef_is_lub [OF type_definition_CFun less_CFun_def adm_CFun]) |
210 lemma thelub_cfun: "chain F \<Longrightarrow> lub (range F) = (\<Lambda> x. \<Squnion>i. F i\<cdot>x)" |
211 done |
211 by (rule lub_cfun [THEN thelubI]) |
212 |
|
213 lemmas thelub_cfun = lub_cfun [THEN thelubI, standard] |
|
214 -- {* @{thm thelub_cfun} *} (* chain F \<Longrightarrow> lub (range F) = (\<Lambda>x. \<Squnion>i. F i\<cdot>x) *) |
|
215 |
212 |
216 subsection {* Miscellaneous *} |
213 subsection {* Miscellaneous *} |
217 |
214 |
218 text {* Monotonicity of @{term Abs_CFun} *} |
215 text {* Monotonicity of @{term Abs_CFun} *} |
219 |
216 |