src/HOLCF/ConvexPD.thy
changeset 27405 785f5dbec8f4
parent 27373 5794a0e3e26c
child 29138 661a8db7e647
child 29237 e90d9d51106b
equal deleted inserted replaced
27404:62171da527d6 27405:785f5dbec8f4
   115 apply (erule (1) 4 [OF 3])
   115 apply (erule (1) 4 [OF 3])
   116 apply (drule convex_le_PDPlus_lemma, clarify)
   116 apply (drule convex_le_PDPlus_lemma, clarify)
   117 apply (simp add: 4)
   117 apply (simp add: 4)
   118 done
   118 done
   119 
   119 
   120 lemma approx_pd_convex_chain:
   120 lemma pd_take_convex_chain:
   121   "approx_pd n t \<le>\<natural> approx_pd (Suc n) t"
   121   "pd_take n t \<le>\<natural> pd_take (Suc n) t"
   122 apply (induct t rule: pd_basis_induct)
   122 apply (induct t rule: pd_basis_induct)
   123 apply (simp add: compact_basis.take_chain)
   123 apply (simp add: compact_basis.take_chain)
   124 apply (simp add: PDPlus_convex_mono)
   124 apply (simp add: PDPlus_convex_mono)
   125 done
   125 done
   126 
   126 
   127 lemma approx_pd_convex_le: "approx_pd i t \<le>\<natural> t"
   127 lemma pd_take_convex_le: "pd_take i t \<le>\<natural> t"
   128 apply (induct t rule: pd_basis_induct)
   128 apply (induct t rule: pd_basis_induct)
   129 apply (simp add: compact_basis.take_less)
   129 apply (simp add: compact_basis.take_less)
   130 apply (simp add: PDPlus_convex_mono)
   130 apply (simp add: PDPlus_convex_mono)
   131 done
   131 done
   132 
   132 
   133 lemma approx_pd_convex_mono:
   133 lemma pd_take_convex_mono:
   134   "t \<le>\<natural> u \<Longrightarrow> approx_pd n t \<le>\<natural> approx_pd n u"
   134   "t \<le>\<natural> u \<Longrightarrow> pd_take n t \<le>\<natural> pd_take n u"
   135 apply (erule convex_le_induct)
   135 apply (erule convex_le_induct)
   136 apply (erule (1) convex_le_trans)
   136 apply (erule (1) convex_le_trans)
   137 apply (simp add: compact_basis.take_mono)
   137 apply (simp add: compact_basis.take_mono)
   138 apply (simp add: PDPlus_convex_mono)
   138 apply (simp add: PDPlus_convex_mono)
   139 done
   139 done
   178   "Rep_convex_pd (convex_principal t) = {u. u \<le>\<natural> t}"
   178   "Rep_convex_pd (convex_principal t) = {u. u \<le>\<natural> t}"
   179 unfolding convex_principal_def
   179 unfolding convex_principal_def
   180 by (simp add: Abs_convex_pd_inverse convex_le.ideal_principal)
   180 by (simp add: Abs_convex_pd_inverse convex_le.ideal_principal)
   181 
   181 
   182 interpretation convex_pd:
   182 interpretation convex_pd:
   183   ideal_completion [convex_le approx_pd convex_principal Rep_convex_pd]
   183   ideal_completion [convex_le pd_take convex_principal Rep_convex_pd]
   184 apply unfold_locales
   184 apply unfold_locales
   185 apply (rule approx_pd_convex_le)
   185 apply (rule pd_take_convex_le)
   186 apply (rule approx_pd_idem)
   186 apply (rule pd_take_idem)
   187 apply (erule approx_pd_convex_mono)
   187 apply (erule pd_take_convex_mono)
   188 apply (rule approx_pd_convex_chain)
   188 apply (rule pd_take_convex_chain)
   189 apply (rule finite_range_approx_pd)
   189 apply (rule finite_range_pd_take)
   190 apply (rule approx_pd_covers)
   190 apply (rule pd_take_covers)
   191 apply (rule ideal_Rep_convex_pd)
   191 apply (rule ideal_Rep_convex_pd)
   192 apply (erule Rep_convex_pd_lub)
   192 apply (erule Rep_convex_pd_lub)
   193 apply (rule Rep_convex_principal)
   193 apply (rule Rep_convex_principal)
   194 apply (simp only: sq_le_convex_pd_def)
   194 apply (simp only: sq_le_convex_pd_def)
   195 done
   195 done
   224 end
   224 end
   225 
   225 
   226 instance convex_pd :: (bifinite) bifinite ..
   226 instance convex_pd :: (bifinite) bifinite ..
   227 
   227 
   228 lemma approx_convex_principal [simp]:
   228 lemma approx_convex_principal [simp]:
   229   "approx n\<cdot>(convex_principal t) = convex_principal (approx_pd n t)"
   229   "approx n\<cdot>(convex_principal t) = convex_principal (pd_take n t)"
   230 unfolding approx_convex_pd_def
   230 unfolding approx_convex_pd_def
   231 by (rule convex_pd.completion_approx_principal)
   231 by (rule convex_pd.completion_approx_principal)
   232 
   232 
   233 lemma approx_eq_convex_principal:
   233 lemma approx_eq_convex_principal:
   234   "\<exists>t\<in>Rep_convex_pd xs. approx n\<cdot>xs = convex_principal (approx_pd n t)"
   234   "\<exists>t\<in>Rep_convex_pd xs. approx n\<cdot>xs = convex_principal (pd_take n t)"
   235 unfolding approx_convex_pd_def
   235 unfolding approx_convex_pd_def
   236 by (rule convex_pd.completion_approx_eq_principal)
   236 by (rule convex_pd.completion_approx_eq_principal)
   237 
   237 
   238 
   238 
   239 subsection {* Monadic unit and plus *}
   239 subsection {* Monadic unit and plus *}