src/HOL/Analysis/Starlike.thy
changeset 67443 3abf6a722518
parent 67399 eab6ce8368fa
child 67613 ce654b0e6d69
equal deleted inserted replaced
67442:f075640b8868 67443:3abf6a722518
  3793 proof -
  3793 proof -
  3794   have fin: "finite s" "finite t" using assms aff_independent_finite finite_subset by auto
  3794   have fin: "finite s" "finite t" using assms aff_independent_finite finite_subset by auto
  3795     { fix u v x
  3795     { fix u v x
  3796       assume uv: "sum u t = 1" "\<forall>x\<in>s. 0 \<le> v x" "sum v s = 1"
  3796       assume uv: "sum u t = 1" "\<forall>x\<in>s. 0 \<le> v x" "sum v s = 1"
  3797                  "(\<Sum>x\<in>s. v x *\<^sub>R x) = (\<Sum>v\<in>t. u v *\<^sub>R v)" "x \<in> t"
  3797                  "(\<Sum>x\<in>s. v x *\<^sub>R x) = (\<Sum>v\<in>t. u v *\<^sub>R v)" "x \<in> t"
  3798       then have s: "s = (s - t) \<union> t" \<comment>\<open>split into separate cases\<close>
  3798       then have s: "s = (s - t) \<union> t" \<comment> \<open>split into separate cases\<close>
  3799         using assms by auto
  3799         using assms by auto
  3800       have [simp]: "(\<Sum>x\<in>t. v x *\<^sub>R x) + (\<Sum>x\<in>s - t. v x *\<^sub>R x) = (\<Sum>x\<in>t. u x *\<^sub>R x)"
  3800       have [simp]: "(\<Sum>x\<in>t. v x *\<^sub>R x) + (\<Sum>x\<in>s - t. v x *\<^sub>R x) = (\<Sum>x\<in>t. u x *\<^sub>R x)"
  3801                    "sum v t + sum v (s - t) = 1"
  3801                    "sum v t + sum v (s - t) = 1"
  3802         using uv fin s
  3802         using uv fin s
  3803         by (auto simp: sum.union_disjoint [symmetric] Un_commute)
  3803         by (auto simp: sum.union_disjoint [symmetric] Un_commute)
  3911     case False
  3911     case False
  3912     have fs: "finite s"
  3912     have fs: "finite s"
  3913       using assms by (simp add: aff_independent_finite)
  3913       using assms by (simp add: aff_independent_finite)
  3914     { fix a b and d::real
  3914     { fix a b and d::real
  3915       assume ab: "a \<in> s" "b \<in> s" "a \<noteq> b"
  3915       assume ab: "a \<in> s" "b \<in> s" "a \<noteq> b"
  3916       then have s: "s = (s - {a,b}) \<union> {a,b}" \<comment>\<open>split into separate cases\<close>
  3916       then have s: "s = (s - {a,b}) \<union> {a,b}" \<comment> \<open>split into separate cases\<close>
  3917         by auto
  3917         by auto
  3918       have "(\<Sum>x\<in>s. if x = a then - d else if x = b then d else 0) = 0"
  3918       have "(\<Sum>x\<in>s. if x = a then - d else if x = b then d else 0) = 0"
  3919            "(\<Sum>x\<in>s. (if x = a then - d else if x = b then d else 0) *\<^sub>R x) = d *\<^sub>R b - d *\<^sub>R a"
  3919            "(\<Sum>x\<in>s. (if x = a then - d else if x = b then d else 0) *\<^sub>R x) = d *\<^sub>R b - d *\<^sub>R a"
  3920         using ab fs
  3920         using ab fs
  3921         by (subst s, subst sum.union_disjoint, auto)+
  3921         by (subst s, subst sum.union_disjoint, auto)+