src/HOLCF/ConvexPD.thy
changeset 29237 e90d9d51106b
parent 27405 785f5dbec8f4
child 29244 95d591908d8d
equal deleted inserted replaced
29236:51526dd8da8e 29237:e90d9d51106b
     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)