src/HOLCF/UpperPD.thy
changeset 27297 2c42b1505f25
parent 27289 c49d427867aa
child 27309 c74270fd72a8
     1.1 --- a/src/HOLCF/UpperPD.thy	Fri Jun 20 19:59:00 2008 +0200
     1.2 +++ b/src/HOLCF/UpperPD.thy	Fri Jun 20 20:03:13 2008 +0200
     1.3 @@ -95,27 +95,24 @@
     1.4  subsection {* Type definition *}
     1.5  
     1.6  cpodef (open) 'a upper_pd =
     1.7 -  "{S::'a::profinite pd_basis set. upper_le.ideal S}"
     1.8 -apply (simp add: upper_le.adm_ideal)
     1.9 -apply (fast intro: upper_le.ideal_principal)
    1.10 -done
    1.11 +  "{S::'a pd_basis cset. upper_le.ideal (Rep_cset S)}"
    1.12 +by (rule upper_le.cpodef_ideal_lemma)
    1.13  
    1.14 -lemma ideal_Rep_upper_pd: "upper_le.ideal (Rep_upper_pd x)"
    1.15 +lemma ideal_Rep_upper_pd: "upper_le.ideal (Rep_cset (Rep_upper_pd xs))"
    1.16  by (rule Rep_upper_pd [unfolded mem_Collect_eq])
    1.17  
    1.18  definition
    1.19    upper_principal :: "'a pd_basis \<Rightarrow> 'a upper_pd" where
    1.20 -  "upper_principal t = Abs_upper_pd {u. u \<le>\<sharp> t}"
    1.21 +  "upper_principal t = Abs_upper_pd (Abs_cset {u. u \<le>\<sharp> t})"
    1.22  
    1.23  lemma Rep_upper_principal:
    1.24 -  "Rep_upper_pd (upper_principal t) = {u. u \<le>\<sharp> t}"
    1.25 +  "Rep_cset (Rep_upper_pd (upper_principal t)) = {u. u \<le>\<sharp> t}"
    1.26  unfolding upper_principal_def
    1.27 -apply (rule Abs_upper_pd_inverse [unfolded mem_Collect_eq])
    1.28 -apply (rule upper_le.ideal_principal)
    1.29 -done
    1.30 +by (simp add: Abs_upper_pd_inverse upper_le.ideal_principal)
    1.31  
    1.32  interpretation upper_pd:
    1.33 -  ideal_completion [upper_le approx_pd upper_principal Rep_upper_pd]
    1.34 +  ideal_completion
    1.35 +    [upper_le approx_pd upper_principal "\<lambda>x. Rep_cset (Rep_upper_pd x)"]
    1.36  apply unfold_locales
    1.37  apply (rule approx_pd_upper_le)
    1.38  apply (rule approx_pd_idem)
    1.39 @@ -124,9 +121,9 @@
    1.40  apply (rule finite_range_approx_pd)
    1.41  apply (rule approx_pd_covers)
    1.42  apply (rule ideal_Rep_upper_pd)
    1.43 -apply (rule cont_Rep_upper_pd)
    1.44 +apply (simp add: cont2contlubE [OF cont_Rep_upper_pd] Rep_cset_lub)
    1.45  apply (rule Rep_upper_principal)
    1.46 -apply (simp only: less_upper_pd_def less_set_eq)
    1.47 +apply (simp only: less_upper_pd_def sq_le_cset_def)
    1.48  done
    1.49  
    1.50  text {* Upper powerdomain is pointed *}
    1.51 @@ -166,7 +163,8 @@
    1.52  by (rule upper_pd.completion_approx_principal)
    1.53  
    1.54  lemma approx_eq_upper_principal:
    1.55 -  "\<exists>t\<in>Rep_upper_pd xs. approx n\<cdot>xs = upper_principal (approx_pd n t)"
    1.56 +  "\<exists>t\<in>Rep_cset (Rep_upper_pd xs).
    1.57 +    approx n\<cdot>xs = upper_principal (approx_pd n t)"
    1.58  unfolding approx_upper_pd_def
    1.59  by (rule upper_pd.completion_approx_eq_principal)
    1.60