src/HOLCF/Cfun.thy
changeset 16920 ded12c9e88c2
parent 16699 24b494ff8f0f
child 17815 ccf54e3cabfa
equal deleted inserted replaced
16919:6df23e3180fb 16920:ded12c9e88c2
    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