equal
deleted
inserted
replaced
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 |