equal
deleted
inserted
replaced
291 apply (rule UU_I) |
291 apply (rule UU_I) |
292 apply (erule subst) |
292 apply (erule subst) |
293 apply (rule minimal [THEN monofun_cfun_arg]) |
293 apply (rule minimal [THEN monofun_cfun_arg]) |
294 done |
294 done |
295 |
295 |
296 text {* the lub of a chain of continous functions is monotone *} |
|
297 |
|
298 lemma lub_cfun_mono: "chain F \<Longrightarrow> monofun (\<lambda>x. \<Squnion>i. F i\<cdot>x)" |
|
299 apply (drule ch2ch_monofun [OF monofun_Rep_CFun]) |
|
300 apply (simp add: thelub_fun [symmetric]) |
|
301 apply (erule monofun_lub_fun) |
|
302 apply (simp add: monofun_Rep_CFun2) |
|
303 done |
|
304 |
|
305 text {* a lemma about the exchange of lubs for type @{typ "'a -> 'b"} *} |
|
306 |
|
307 lemma ex_lub_cfun: |
|
308 "\<lbrakk>chain F; chain Y\<rbrakk> \<Longrightarrow> (\<Squnion>j. \<Squnion>i. F j\<cdot>(Y i)) = (\<Squnion>i. \<Squnion>j. F j\<cdot>(Y i))" |
|
309 by (simp add: diag_lub) |
|
310 |
|
311 text {* the lub of a chain of cont. functions is continuous *} |
|
312 |
|
313 lemma cont_lub_cfun: "chain F \<Longrightarrow> cont (\<lambda>x. \<Squnion>i. F i\<cdot>x)" |
|
314 apply (rule cont2cont_lub) |
|
315 apply (erule monofun_Rep_CFun [THEN ch2ch_monofun]) |
|
316 apply (rule cont_Rep_CFun2) |
|
317 done |
|
318 |
|
319 text {* type @{typ "'a -> 'b"} is chain complete *} |
296 text {* type @{typ "'a -> 'b"} is chain complete *} |
320 |
297 |
321 lemma lub_cfun: "chain F \<Longrightarrow> range F <<| (\<Lambda> x. \<Squnion>i. F i\<cdot>x)" |
298 lemma lub_cfun: "chain F \<Longrightarrow> range F <<| (\<Lambda> x. \<Squnion>i. F i\<cdot>x)" |
322 by (simp only: contlub_cfun_fun [symmetric] eta_cfun thelubE) |
299 by (simp only: contlub_cfun_fun [symmetric] eta_cfun thelubE) |
323 |
300 |