src/HOL/HOLCF/LowerPD.thy
changeset 41286 3d7685a4a5ff
parent 41284 6d66975b711f
child 41287 029a6fc1bfb8
equal deleted inserted replaced
41285:efd23c1d9886 41286:3d7685a4a5ff
   458     by (rule finite_range_imp_finite_fixes)
   458     by (rule finite_range_imp_finite_fixes)
   459 qed
   459 qed
   460 
   460 
   461 subsection {* Lower powerdomain is a domain *}
   461 subsection {* Lower powerdomain is a domain *}
   462 
   462 
       
   463 lemma approx_chain_lower_map:
       
   464   assumes "approx_chain a"
       
   465   shows "approx_chain (\<lambda>i. lower_map\<cdot>(a i))"
       
   466   using assms unfolding approx_chain_def
       
   467   by (simp add: lub_APP lower_map_ID finite_deflation_lower_map)
       
   468 
       
   469 instance lower_pd :: ("domain") bifinite
       
   470 proof
       
   471   show "\<exists>(a::nat \<Rightarrow> 'a lower_pd \<rightarrow> 'a lower_pd). approx_chain a"
       
   472     using bifinite [where 'a='a]
       
   473     by (fast intro!: approx_chain_lower_map)
       
   474 qed
       
   475 
   463 definition
   476 definition
   464   lower_approx :: "nat \<Rightarrow> udom lower_pd \<rightarrow> udom lower_pd"
   477   lower_approx :: "nat \<Rightarrow> udom lower_pd \<rightarrow> udom lower_pd"
   465 where
   478 where
   466   "lower_approx = (\<lambda>i. lower_map\<cdot>(udom_approx i))"
   479   "lower_approx = (\<lambda>i. lower_map\<cdot>(udom_approx i))"
   467 
   480