src/HOL/Analysis/Convex_Euclidean_Space.thy
changeset 69510 0f31dd2e540d
parent 69508 2a4c8a2a3f8e
child 69518 bf88364c9e94
equal deleted inserted replaced
69509:f9bf65d90b69 69510:0f31dd2e540d
  2635         apply auto
  2635         apply auto
  2636         done
  2636         done
  2637     }
  2637     }
  2638     moreover
  2638     moreover
  2639     have "(\<Sum>v\<in>y ` {1..k}. sum u {i \<in> {1..k}. y i = v}) = 1"
  2639     have "(\<Sum>v\<in>y ` {1..k}. sum u {i \<in> {1..k}. y i = v}) = 1"
  2640       unfolding sum_image_gen[OF fin, symmetric] using obt(2) by auto
  2640       unfolding sum.image_gen[OF fin, symmetric] using obt(2) by auto
  2641     moreover have "(\<Sum>v\<in>y ` {1..k}. sum u {i \<in> {1..k}. y i = v} *\<^sub>R v) = x"
  2641     moreover have "(\<Sum>v\<in>y ` {1..k}. sum u {i \<in> {1..k}. y i = v} *\<^sub>R v) = x"
  2642       using sum_image_gen[OF fin, of "\<lambda>i. u i *\<^sub>R y i" y, symmetric]
  2642       using sum.image_gen[OF fin, of "\<lambda>i. u i *\<^sub>R y i" y, symmetric]
  2643       unfolding scaleR_left.sum using obt(3) by auto
  2643       unfolding scaleR_left.sum using obt(3) by auto
  2644     ultimately
  2644     ultimately
  2645     have "\<exists>S u. finite S \<and> S \<subseteq> p \<and> (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>v\<in>S. u v *\<^sub>R v) = x"
  2645     have "\<exists>S u. finite S \<and> S \<subseteq> p \<and> (\<forall>x\<in>S. 0 \<le> u x) \<and> sum u S = 1 \<and> (\<Sum>v\<in>S. u v *\<^sub>R v) = x"
  2646       apply (rule_tac x="y ` {1..k}" in exI)
  2646       apply (rule_tac x="y ` {1..k}" in exI)
  2647       apply (rule_tac x="\<lambda>v. sum u {i\<in>{1..k}. y i = v}" in exI, auto)
  2647       apply (rule_tac x="\<lambda>v. sum u {i\<in>{1..k}. y i = v}" in exI, auto)
  2681       then have "(\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x)) = u y"
  2681       then have "(\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x)) = u y"
  2682           "(\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x) *\<^sub>R f x) = u y *\<^sub>R y"
  2682           "(\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x) *\<^sub>R f x) = u y *\<^sub>R y"
  2683         by (auto simp: sum_constant_scaleR)
  2683         by (auto simp: sum_constant_scaleR)
  2684     }
  2684     }
  2685     then have "(\<Sum>x = 1..card S. u (f x)) = 1" "(\<Sum>i = 1..card S. u (f i) *\<^sub>R f i) = y"
  2685     then have "(\<Sum>x = 1..card S. u (f x)) = 1" "(\<Sum>i = 1..card S. u (f i) *\<^sub>R f i) = y"
  2686       unfolding sum_image_gen[OF *(1), of "\<lambda>x. u (f x) *\<^sub>R f x" f]
  2686       unfolding sum.image_gen[OF *(1), of "\<lambda>x. u (f x) *\<^sub>R f x" f]
  2687         and sum_image_gen[OF *(1), of "\<lambda>x. u (f x)" f]
  2687         and sum.image_gen[OF *(1), of "\<lambda>x. u (f x)" f]
  2688       unfolding f
  2688       unfolding f
  2689       using sum.cong [of S S "\<lambda>y. (\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x) *\<^sub>R f x)" "\<lambda>v. u v *\<^sub>R v"]
  2689       using sum.cong [of S S "\<lambda>y. (\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x) *\<^sub>R f x)" "\<lambda>v. u v *\<^sub>R v"]
  2690       using sum.cong [of S S "\<lambda>y. (\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x))" u]
  2690       using sum.cong [of S S "\<lambda>y. (\<Sum>x\<in>{x \<in> {1..card S}. f x = y}. u (f x))" u]
  2691       unfolding obt(4,5)
  2691       unfolding obt(4,5)
  2692       by auto
  2692       by auto