# HG changeset patch # User hoelzl # Date 1300109864 -3600 # Node ID dbfc073c310d232150e2e14fccd4f69b2836a0bd # Parent 3fdbc7d5b5259b0dd03716a7668572783d85e3dc introduce setsum on extreal diff -r 3fdbc7d5b525 -r dbfc073c310d src/HOL/Library/Extended_Reals.thy --- a/src/HOL/Library/Extended_Reals.thy Mon Mar 14 14:37:42 2011 +0100 +++ b/src/HOL/Library/Extended_Reals.thy Mon Mar 14 14:37:44 2011 +0100 @@ -3076,4 +3076,51 @@ "[| (a::extreal) <= x; c <= x |] ==> max a c <= x" by (metis sup_extreal_def sup_least) +subsection {* Sums *} + +lemma setsum_extreal[simp]: + "(\x\A. extreal (f x)) = extreal (\x\A. f x)" +proof cases + assume "finite A" then show ?thesis by induct auto +qed simp + +lemma setsum_Pinfty: "(\x\P. f x) = \ \ (finite P \ (\i\P. f i = \))" +proof safe + assume *: "setsum f P = \" + show "finite P" + proof (rule ccontr) assume "infinite P" with * show False by auto qed + show "\i\P. f i = \" + proof (rule ccontr) + assume "\ ?thesis" then have "\i. i \ P \ f i \ \" by auto + from `finite P` this have "setsum f P \ \" + by induct auto + with * show False by auto + qed +next + fix i assume "finite P" "i \ P" "f i = \" + thus "setsum f P = \" + proof induct + case (insert x A) + show ?case using insert by (cases "x = i") auto + qed simp +qed + +lemma setsum_of_pextreal: + assumes "\x. x \ S \ \f x\ \ \" + shows "(\x\S. real (f x)) = real (setsum f S)" +proof - + have "\x\S. \r. f x = extreal r" + proof + fix x assume "x \ S" + from assms[OF this] show "\r. f x = extreal r" by (cases "f x") auto + qed + from bchoice[OF this] guess r .. + then show ?thesis by simp +qed + +lemma setsum_0: + fixes f :: "'a \ pextreal" assumes "finite A" + shows "(\x\A. f x) = 0 \ (\i\A. f i = 0)" + using assms by induct auto + end