equal
deleted
inserted
replaced
1 (* Title: HOLCF/ConvexPD.thy |
1 (* Title: HOLCF/ConvexPD.thy |
2 ID: $Id$ |
|
3 Author: Brian Huffman |
2 Author: Brian Huffman |
4 *) |
3 *) |
5 |
4 |
6 header {* Convex powerdomain *} |
5 header {* Convex powerdomain *} |
7 |
6 |
19 unfolding convex_le_def by (fast intro: upper_le_refl lower_le_refl) |
18 unfolding convex_le_def by (fast intro: upper_le_refl lower_le_refl) |
20 |
19 |
21 lemma convex_le_trans: "\<lbrakk>t \<le>\<natural> u; u \<le>\<natural> v\<rbrakk> \<Longrightarrow> t \<le>\<natural> v" |
20 lemma convex_le_trans: "\<lbrakk>t \<le>\<natural> u; u \<le>\<natural> v\<rbrakk> \<Longrightarrow> t \<le>\<natural> v" |
22 unfolding convex_le_def by (fast intro: upper_le_trans lower_le_trans) |
21 unfolding convex_le_def by (fast intro: upper_le_trans lower_le_trans) |
23 |
22 |
24 interpretation convex_le: preorder [convex_le] |
23 interpretation convex_le!: preorder convex_le |
25 by (rule preorder.intro, rule convex_le_refl, rule convex_le_trans) |
24 by (rule preorder.intro, rule convex_le_refl, rule convex_le_trans) |
26 |
25 |
27 lemma upper_le_minimal [simp]: "PDUnit compact_bot \<le>\<natural> t" |
26 lemma upper_le_minimal [simp]: "PDUnit compact_bot \<le>\<natural> t" |
28 unfolding convex_le_def Rep_PDUnit by simp |
27 unfolding convex_le_def Rep_PDUnit by simp |
29 |
28 |
177 lemma Rep_convex_principal: |
176 lemma Rep_convex_principal: |
178 "Rep_convex_pd (convex_principal t) = {u. u \<le>\<natural> t}" |
177 "Rep_convex_pd (convex_principal t) = {u. u \<le>\<natural> t}" |
179 unfolding convex_principal_def |
178 unfolding convex_principal_def |
180 by (simp add: Abs_convex_pd_inverse convex_le.ideal_principal) |
179 by (simp add: Abs_convex_pd_inverse convex_le.ideal_principal) |
181 |
180 |
182 interpretation convex_pd: |
181 interpretation convex_pd!: |
183 ideal_completion [convex_le pd_take convex_principal Rep_convex_pd] |
182 ideal_completion convex_le pd_take convex_principal Rep_convex_pd |
184 apply unfold_locales |
183 apply unfold_locales |
185 apply (rule pd_take_convex_le) |
184 apply (rule pd_take_convex_le) |
186 apply (rule pd_take_idem) |
185 apply (rule pd_take_idem) |
187 apply (erule pd_take_convex_mono) |
186 apply (erule pd_take_convex_mono) |
188 apply (rule pd_take_convex_chain) |
187 apply (rule pd_take_convex_chain) |
295 lemma convex_plus_absorb: "xs +\<natural> xs = xs" |
294 lemma convex_plus_absorb: "xs +\<natural> xs = xs" |
296 apply (induct xs rule: convex_pd.principal_induct, simp) |
295 apply (induct xs rule: convex_pd.principal_induct, simp) |
297 apply (simp add: PDPlus_absorb) |
296 apply (simp add: PDPlus_absorb) |
298 done |
297 done |
299 |
298 |
300 interpretation aci_convex_plus: ab_semigroup_idem_mult ["op +\<natural>"] |
299 interpretation aci_convex_plus!: ab_semigroup_idem_mult "op +\<natural>" |
301 by unfold_locales |
300 by unfold_locales |
302 (rule convex_plus_assoc convex_plus_commute convex_plus_absorb)+ |
301 (rule convex_plus_assoc convex_plus_commute convex_plus_absorb)+ |
303 |
302 |
304 lemma convex_plus_left_commute: "xs +\<natural> (ys +\<natural> zs) = ys +\<natural> (xs +\<natural> zs)" |
303 lemma convex_plus_left_commute: "xs +\<natural> (ys +\<natural> zs) = ys +\<natural> (xs +\<natural> zs)" |
305 by (rule aci_convex_plus.mult_left_commute) |
304 by (rule aci_convex_plus.mult_left_commute) |