equal
deleted
inserted
replaced
1066 have "0 < f i + sum f (I - {i})" |
1066 have "0 < f i + sum f (I - {i})" |
1067 using assms by (intro add_pos_nonneg sum_nonneg) auto |
1067 using assms by (intro add_pos_nonneg sum_nonneg) auto |
1068 also have "\<dots> = sum f I" |
1068 also have "\<dots> = sum f I" |
1069 using assms by (simp add: sum.remove) |
1069 using assms by (simp add: sum.remove) |
1070 finally show ?thesis . |
1070 finally show ?thesis . |
|
1071 qed |
|
1072 |
|
1073 lemma sum_strict_mono2: |
|
1074 fixes f :: "'a \<Rightarrow> 'b::ordered_cancel_comm_monoid_add" |
|
1075 assumes "finite B" "A \<subseteq> B" "b \<in> B-A" "f b > 0" and "\<And>x. x \<in> B \<Longrightarrow> f x \<ge> 0" |
|
1076 shows "sum f A < sum f B" |
|
1077 proof - |
|
1078 have "B - A \<noteq> {}" |
|
1079 using assms(3) by blast |
|
1080 have "sum f (B-A) > 0" |
|
1081 by (rule sum_pos2) (use assms in auto) |
|
1082 moreover have "sum f B = sum f (B-A) + sum f A" |
|
1083 by (rule sum.subset_diff) (use assms in auto) |
|
1084 ultimately show ?thesis |
|
1085 using add_strict_increasing by auto |
1071 qed |
1086 qed |
1072 |
1087 |
1073 lemma sum_cong_Suc: |
1088 lemma sum_cong_Suc: |
1074 assumes "0 \<notin> A" "\<And>x. Suc x \<in> A \<Longrightarrow> f (Suc x) = g (Suc x)" |
1089 assumes "0 \<notin> A" "\<And>x. Suc x \<in> A \<Longrightarrow> f (Suc x) = g (Suc x)" |
1075 shows "sum f A = sum g A" |
1090 shows "sum f A = sum g A" |