289 lemma convex_plus_commute: "xs +\<natural> ys = ys +\<natural> xs" |
289 lemma convex_plus_commute: "xs +\<natural> ys = ys +\<natural> xs" |
290 apply (induct xs ys rule: convex_pd.principal_induct2, simp, simp) |
290 apply (induct xs ys rule: convex_pd.principal_induct2, simp, simp) |
291 apply (simp add: PDPlus_commute) |
291 apply (simp add: PDPlus_commute) |
292 done |
292 done |
293 |
293 |
294 lemma convex_plus_absorb: "xs +\<natural> xs = xs" |
294 lemma convex_plus_absorb [simp]: "xs +\<natural> xs = xs" |
295 apply (induct xs rule: convex_pd.principal_induct, simp) |
295 apply (induct xs rule: convex_pd.principal_induct, simp) |
296 apply (simp add: PDPlus_absorb) |
296 apply (simp add: PDPlus_absorb) |
297 done |
297 done |
298 |
298 |
299 interpretation aci_convex_plus!: ab_semigroup_idem_mult "op +\<natural>" |
|
300 proof qed (rule convex_plus_assoc convex_plus_commute convex_plus_absorb)+ |
|
301 |
|
302 lemma convex_plus_left_commute: "xs +\<natural> (ys +\<natural> zs) = ys +\<natural> (xs +\<natural> zs)" |
299 lemma convex_plus_left_commute: "xs +\<natural> (ys +\<natural> zs) = ys +\<natural> (xs +\<natural> zs)" |
303 by (rule aci_convex_plus.mult_left_commute) |
300 by (rule mk_left_commute |
304 |
301 [of "op +\<natural>", OF convex_plus_assoc convex_plus_commute]) |
305 lemma convex_plus_left_absorb: "xs +\<natural> (xs +\<natural> ys) = xs +\<natural> ys" |
302 |
306 by (rule aci_convex_plus.mult_left_idem) |
303 lemma convex_plus_left_absorb [simp]: "xs +\<natural> (xs +\<natural> ys) = xs +\<natural> ys" |
307 (* |
304 by (simp only: convex_plus_assoc [symmetric] convex_plus_absorb) |
308 lemmas convex_plus_aci = aci_convex_plus.mult_ac_idem |
305 |
309 *) |
306 text {* Useful for @{text "simp add: convex_plus_ac"} *} |
|
307 lemmas convex_plus_ac = |
|
308 convex_plus_assoc convex_plus_commute convex_plus_left_commute |
|
309 |
|
310 text {* Useful for @{text "simp only: convex_plus_aci"} *} |
|
311 lemmas convex_plus_aci = |
|
312 convex_plus_ac convex_plus_absorb convex_plus_left_absorb |
|
313 |
310 lemma convex_unit_less_plus_iff [simp]: |
314 lemma convex_unit_less_plus_iff [simp]: |
311 "{x}\<natural> \<sqsubseteq> ys +\<natural> zs \<longleftrightarrow> {x}\<natural> \<sqsubseteq> ys \<and> {x}\<natural> \<sqsubseteq> zs" |
315 "{x}\<natural> \<sqsubseteq> ys +\<natural> zs \<longleftrightarrow> {x}\<natural> \<sqsubseteq> ys \<and> {x}\<natural> \<sqsubseteq> zs" |
312 apply (rule iffI) |
316 apply (rule iffI) |
313 apply (subgoal_tac |
317 apply (subgoal_tac |
314 "adm (\<lambda>f. f\<cdot>{x}\<natural> \<sqsubseteq> f\<cdot>ys \<and> f\<cdot>{x}\<natural> \<sqsubseteq> f\<cdot>zs)") |
318 "adm (\<lambda>f. f\<cdot>{x}\<natural> \<sqsubseteq> f\<cdot>ys \<and> f\<cdot>{x}\<natural> \<sqsubseteq> f\<cdot>zs)") |
411 lemma ACI_convex_bind: |
415 lemma ACI_convex_bind: |
412 "ab_semigroup_idem_mult (\<lambda>x y. \<Lambda> f. x\<cdot>f +\<natural> y\<cdot>f)" |
416 "ab_semigroup_idem_mult (\<lambda>x y. \<Lambda> f. x\<cdot>f +\<natural> y\<cdot>f)" |
413 apply unfold_locales |
417 apply unfold_locales |
414 apply (simp add: convex_plus_assoc) |
418 apply (simp add: convex_plus_assoc) |
415 apply (simp add: convex_plus_commute) |
419 apply (simp add: convex_plus_commute) |
416 apply (simp add: convex_plus_absorb eta_cfun) |
420 apply (simp add: eta_cfun) |
417 done |
421 done |
418 |
422 |
419 lemma convex_bind_basis_simps [simp]: |
423 lemma convex_bind_basis_simps [simp]: |
420 "convex_bind_basis (PDUnit a) = |
424 "convex_bind_basis (PDUnit a) = |
421 (\<Lambda> f. f\<cdot>(Rep_compact_basis a))" |
425 (\<Lambda> f. f\<cdot>(Rep_compact_basis a))" |