src/HOLCF/LowerPD.thy
changeset 29237 e90d9d51106b
parent 27405 785f5dbec8f4
child 29244 95d591908d8d
equal deleted inserted replaced
29236:51526dd8da8e 29237:e90d9d51106b
     1 (*  Title:      HOLCF/LowerPD.thy
     1 (*  Title:      HOLCF/LowerPD.thy
     2     ID:         $Id$
       
     3     Author:     Brian Huffman
     2     Author:     Brian Huffman
     4 *)
     3 *)
     5 
     4 
     6 header {* Lower powerdomain *}
     5 header {* Lower powerdomain *}
     7 
     6 
    25 apply (drule (1) bspec, erule bexE)
    24 apply (drule (1) bspec, erule bexE)
    26 apply (erule rev_bexI)
    25 apply (erule rev_bexI)
    27 apply (erule (1) trans_less)
    26 apply (erule (1) trans_less)
    28 done
    27 done
    29 
    28 
    30 interpretation lower_le: preorder [lower_le]
    29 interpretation lower_le!: preorder lower_le
    31 by (rule preorder.intro, rule lower_le_refl, rule lower_le_trans)
    30 by (rule preorder.intro, rule lower_le_refl, rule lower_le_trans)
    32 
    31 
    33 lemma lower_le_minimal [simp]: "PDUnit compact_bot \<le>\<flat> t"
    32 lemma lower_le_minimal [simp]: "PDUnit compact_bot \<le>\<flat> t"
    34 unfolding lower_le_def Rep_PDUnit
    33 unfolding lower_le_def Rep_PDUnit
    35 by (simp, rule Rep_pd_basis_nonempty [folded ex_in_conv])
    34 by (simp, rule Rep_pd_basis_nonempty [folded ex_in_conv])
   132 lemma Rep_lower_principal:
   131 lemma Rep_lower_principal:
   133   "Rep_lower_pd (lower_principal t) = {u. u \<le>\<flat> t}"
   132   "Rep_lower_pd (lower_principal t) = {u. u \<le>\<flat> t}"
   134 unfolding lower_principal_def
   133 unfolding lower_principal_def
   135 by (simp add: Abs_lower_pd_inverse lower_le.ideal_principal)
   134 by (simp add: Abs_lower_pd_inverse lower_le.ideal_principal)
   136 
   135 
   137 interpretation lower_pd:
   136 interpretation lower_pd!:
   138   ideal_completion [lower_le pd_take lower_principal Rep_lower_pd]
   137   ideal_completion lower_le pd_take lower_principal Rep_lower_pd
   139 apply unfold_locales
   138 apply unfold_locales
   140 apply (rule pd_take_lower_le)
   139 apply (rule pd_take_lower_le)
   141 apply (rule pd_take_idem)
   140 apply (rule pd_take_idem)
   142 apply (erule pd_take_lower_mono)
   141 apply (erule pd_take_lower_mono)
   143 apply (rule pd_take_lower_chain)
   142 apply (rule pd_take_lower_chain)
   249 lemma lower_plus_absorb: "xs +\<flat> xs = xs"
   248 lemma lower_plus_absorb: "xs +\<flat> xs = xs"
   250 apply (induct xs rule: lower_pd.principal_induct, simp)
   249 apply (induct xs rule: lower_pd.principal_induct, simp)
   251 apply (simp add: PDPlus_absorb)
   250 apply (simp add: PDPlus_absorb)
   252 done
   251 done
   253 
   252 
   254 interpretation aci_lower_plus: ab_semigroup_idem_mult ["op +\<flat>"]
   253 interpretation aci_lower_plus!: ab_semigroup_idem_mult "op +\<flat>"
   255   by unfold_locales
   254   by unfold_locales
   256     (rule lower_plus_assoc lower_plus_commute lower_plus_absorb)+
   255     (rule lower_plus_assoc lower_plus_commute lower_plus_absorb)+
   257 
   256 
   258 lemma lower_plus_left_commute: "xs +\<flat> (ys +\<flat> zs) = ys +\<flat> (xs +\<flat> zs)"
   257 lemma lower_plus_left_commute: "xs +\<flat> (ys +\<flat> zs) = ys +\<flat> (xs +\<flat> zs)"
   259 by (rule aci_lower_plus.mult_left_commute)
   258 by (rule aci_lower_plus.mult_left_commute)