199 convex_pd.extension_mono PDPlus_convex_mono) |
199 convex_pd.extension_mono PDPlus_convex_mono) |
200 |
200 |
201 interpretation convex_add: semilattice convex_add proof |
201 interpretation convex_add: semilattice convex_add proof |
202 fix xs ys zs :: "'a convex_pd" |
202 fix xs ys zs :: "'a convex_pd" |
203 show "(xs \<union>\<natural> ys) \<union>\<natural> zs = xs \<union>\<natural> (ys \<union>\<natural> zs)" |
203 show "(xs \<union>\<natural> ys) \<union>\<natural> zs = xs \<union>\<natural> (ys \<union>\<natural> zs)" |
204 apply (induct xs ys arbitrary: zs rule: convex_pd.principal_induct2, simp, simp) |
204 apply (induct xs rule: convex_pd.principal_induct, simp) |
205 apply (rule_tac x=zs in convex_pd.principal_induct, simp) |
205 apply (induct ys rule: convex_pd.principal_induct, simp) |
|
206 apply (induct zs rule: convex_pd.principal_induct, simp) |
206 apply (simp add: PDPlus_assoc) |
207 apply (simp add: PDPlus_assoc) |
207 done |
208 done |
208 show "xs \<union>\<natural> ys = ys \<union>\<natural> xs" |
209 show "xs \<union>\<natural> ys = ys \<union>\<natural> xs" |
209 apply (induct xs ys rule: convex_pd.principal_induct2, simp, simp) |
210 apply (induct xs rule: convex_pd.principal_induct, simp) |
|
211 apply (induct ys rule: convex_pd.principal_induct, simp) |
210 apply (simp add: PDPlus_commute) |
212 apply (simp add: PDPlus_commute) |
211 done |
213 done |
212 show "xs \<union>\<natural> xs = xs" |
214 show "xs \<union>\<natural> xs = xs" |
213 apply (induct xs rule: convex_pd.principal_induct, simp) |
215 apply (induct xs rule: convex_pd.principal_induct, simp) |
214 apply (simp add: PDPlus_absorb) |
216 apply (simp add: PDPlus_absorb) |
362 "convex_bind\<cdot>{x}\<natural>\<cdot>f = f\<cdot>x" |
364 "convex_bind\<cdot>{x}\<natural>\<cdot>f = f\<cdot>x" |
363 by (induct x rule: compact_basis.principal_induct, simp, simp) |
365 by (induct x rule: compact_basis.principal_induct, simp, simp) |
364 |
366 |
365 lemma convex_bind_plus [simp]: |
367 lemma convex_bind_plus [simp]: |
366 "convex_bind\<cdot>(xs \<union>\<natural> ys)\<cdot>f = convex_bind\<cdot>xs\<cdot>f \<union>\<natural> convex_bind\<cdot>ys\<cdot>f" |
368 "convex_bind\<cdot>(xs \<union>\<natural> ys)\<cdot>f = convex_bind\<cdot>xs\<cdot>f \<union>\<natural> convex_bind\<cdot>ys\<cdot>f" |
367 by (induct xs ys rule: convex_pd.principal_induct2, simp, simp, simp) |
369 by (induct xs rule: convex_pd.principal_induct, simp, |
|
370 induct ys rule: convex_pd.principal_induct, simp, simp) |
368 |
371 |
369 lemma convex_bind_strict [simp]: "convex_bind\<cdot>\<bottom>\<cdot>f = f\<cdot>\<bottom>" |
372 lemma convex_bind_strict [simp]: "convex_bind\<cdot>\<bottom>\<cdot>f = f\<cdot>\<bottom>" |
370 unfolding convex_unit_strict [symmetric] by (rule convex_bind_unit) |
373 unfolding convex_unit_strict [symmetric] by (rule convex_bind_unit) |
371 |
374 |
372 lemma convex_bind_bind: |
375 lemma convex_bind_bind: |
535 "convex_to_upper\<cdot>{x}\<natural> = {x}\<sharp>" |
538 "convex_to_upper\<cdot>{x}\<natural> = {x}\<sharp>" |
536 by (induct x rule: compact_basis.principal_induct, simp, simp) |
539 by (induct x rule: compact_basis.principal_induct, simp, simp) |
537 |
540 |
538 lemma convex_to_upper_plus [simp]: |
541 lemma convex_to_upper_plus [simp]: |
539 "convex_to_upper\<cdot>(xs \<union>\<natural> ys) = convex_to_upper\<cdot>xs \<union>\<sharp> convex_to_upper\<cdot>ys" |
542 "convex_to_upper\<cdot>(xs \<union>\<natural> ys) = convex_to_upper\<cdot>xs \<union>\<sharp> convex_to_upper\<cdot>ys" |
540 by (induct xs ys rule: convex_pd.principal_induct2, simp, simp, simp) |
543 by (induct xs rule: convex_pd.principal_induct, simp, |
|
544 induct ys rule: convex_pd.principal_induct, simp, simp) |
541 |
545 |
542 lemma convex_to_upper_bind [simp]: |
546 lemma convex_to_upper_bind [simp]: |
543 "convex_to_upper\<cdot>(convex_bind\<cdot>xs\<cdot>f) = |
547 "convex_to_upper\<cdot>(convex_bind\<cdot>xs\<cdot>f) = |
544 upper_bind\<cdot>(convex_to_upper\<cdot>xs)\<cdot>(convex_to_upper oo f)" |
548 upper_bind\<cdot>(convex_to_upper\<cdot>xs)\<cdot>(convex_to_upper oo f)" |
545 by (induct xs rule: convex_pd_induct, simp, simp, simp) |
549 by (induct xs rule: convex_pd_induct, simp, simp, simp) |
574 "convex_to_lower\<cdot>{x}\<natural> = {x}\<flat>" |
578 "convex_to_lower\<cdot>{x}\<natural> = {x}\<flat>" |
575 by (induct x rule: compact_basis.principal_induct, simp, simp) |
579 by (induct x rule: compact_basis.principal_induct, simp, simp) |
576 |
580 |
577 lemma convex_to_lower_plus [simp]: |
581 lemma convex_to_lower_plus [simp]: |
578 "convex_to_lower\<cdot>(xs \<union>\<natural> ys) = convex_to_lower\<cdot>xs \<union>\<flat> convex_to_lower\<cdot>ys" |
582 "convex_to_lower\<cdot>(xs \<union>\<natural> ys) = convex_to_lower\<cdot>xs \<union>\<flat> convex_to_lower\<cdot>ys" |
579 by (induct xs ys rule: convex_pd.principal_induct2, simp, simp, simp) |
583 by (induct xs rule: convex_pd.principal_induct, simp, |
|
584 induct ys rule: convex_pd.principal_induct, simp, simp) |
580 |
585 |
581 lemma convex_to_lower_bind [simp]: |
586 lemma convex_to_lower_bind [simp]: |
582 "convex_to_lower\<cdot>(convex_bind\<cdot>xs\<cdot>f) = |
587 "convex_to_lower\<cdot>(convex_bind\<cdot>xs\<cdot>f) = |
583 lower_bind\<cdot>(convex_to_lower\<cdot>xs)\<cdot>(convex_to_lower oo f)" |
588 lower_bind\<cdot>(convex_to_lower\<cdot>xs)\<cdot>(convex_to_lower oo f)" |
584 by (induct xs rule: convex_pd_induct, simp, simp, simp) |
589 by (induct xs rule: convex_pd_induct, simp, simp, simp) |