src/HOL/Finite_Set.thy
changeset 30859 29eb80cef6b7
parent 30844 7d0e10a961a6
child 30863 5dc392a59bb7
equal deleted inserted replaced
30858:2048e99f4e3e 30859:29eb80cef6b7
  1214 
  1214 
  1215 lemma setsum_eq_0_iff [simp]:
  1215 lemma setsum_eq_0_iff [simp]:
  1216     "finite F ==> (setsum f F = 0) = (ALL a:F. f a = (0::nat))"
  1216     "finite F ==> (setsum f F = 0) = (ALL a:F. f a = (0::nat))"
  1217 by (induct set: finite) auto
  1217 by (induct set: finite) auto
  1218 
  1218 
       
  1219 lemma setsum_eq_Suc0_iff: "finite A \<Longrightarrow>
       
  1220   (setsum f A = Suc 0) = (EX a:A. f a = Suc 0 & (ALL b:A. a\<noteq>b \<longrightarrow> f b = 0))"
       
  1221 apply(erule finite_induct)
       
  1222 apply (auto simp add:add_is_1)
       
  1223 done
       
  1224 
       
  1225 lemmas setsum_eq_1_iff = setsum_eq_Suc0_iff[simplified One_nat_def[symmetric]]
       
  1226 
  1219 lemma setsum_Un_nat: "finite A ==> finite B ==>
  1227 lemma setsum_Un_nat: "finite A ==> finite B ==>
  1220   (setsum f (A Un B) :: nat) = setsum f A + setsum f B - setsum f (A Int B)"
  1228   (setsum f (A Un B) :: nat) = setsum f A + setsum f B - setsum f (A Int B)"
  1221   -- {* For the natural numbers, we have subtraction. *}
  1229   -- {* For the natural numbers, we have subtraction. *}
  1222 by (subst setsum_Un_Int [symmetric], auto simp add: algebra_simps)
  1230 by (subst setsum_Un_Int [symmetric], auto simp add: algebra_simps)
  1223 
  1231