src/HOL/Inequalities.thy
changeset 66804 3f9bb52082c4
parent 64267 b9a1486e79be
child 66936 cf8d8fc23891
equal deleted inserted replaced
66803:dd8922885a68 66804:3f9bb52082c4
    57   shows "of_nat n * (\<Sum>k=0..<n. a k * b k) \<le> (\<Sum>k=0..<n. a k) * (\<Sum>k=0..<n. b k)"
    57   shows "of_nat n * (\<Sum>k=0..<n. a k * b k) \<le> (\<Sum>k=0..<n. a k) * (\<Sum>k=0..<n. b k)"
    58 proof -
    58 proof -
    59   let ?S = "(\<Sum>j=0..<n. (\<Sum>k=0..<n. (a j - a k) * (b j - b k)))"
    59   let ?S = "(\<Sum>j=0..<n. (\<Sum>k=0..<n. (a j - a k) * (b j - b k)))"
    60   have "2 * (of_nat n * (\<Sum>j=0..<n. (a j * b j)) - (\<Sum>j=0..<n. b j) * (\<Sum>k=0..<n. a k)) = ?S"
    60   have "2 * (of_nat n * (\<Sum>j=0..<n. (a j * b j)) - (\<Sum>j=0..<n. b j) * (\<Sum>k=0..<n. a k)) = ?S"
    61     by (simp only: one_add_one[symmetric] algebra_simps)
    61     by (simp only: one_add_one[symmetric] algebra_simps)
    62       (simp add: algebra_simps sum_subtractf sum.distrib sum.commute[of "\<lambda>i j. a i * b j"] sum_distrib_left)
    62       (simp add: algebra_simps sum_subtractf sum.distrib sum.swap[of "\<lambda>i j. a i * b j"] sum_distrib_left)
    63   also
    63   also
    64   { fix i j::nat assume "i<n" "j<n"
    64   { fix i j::nat assume "i<n" "j<n"
    65     hence "a i - a j \<le> 0 \<and> b i - b j \<ge> 0 \<or> a i - a j \<ge> 0 \<and> b i - b j \<le> 0"
    65     hence "a i - a j \<le> 0 \<and> b i - b j \<ge> 0 \<or> a i - a j \<ge> 0 \<and> b i - b j \<le> 0"
    66       using assms by (cases "i \<le> j") (auto simp: algebra_simps)
    66       using assms by (cases "i \<le> j") (auto simp: algebra_simps)
    67   } then have "?S \<le> 0"
    67   } then have "?S \<le> 0"