equal
deleted
inserted
replaced
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) |