src/HOL/Groups_Big.thy
changeset 72094 beccb2a0410f
parent 72089 8348bba699e6
child 73535 0f33c7031ec9
equal deleted inserted replaced
72093:6a2f43901350 72094:beccb2a0410f
  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"