# HG changeset patch # User paulson # Date 1677169024 0 # Node ID bfb1acc9855e262c6f997fb14a689c59f5c626d9 # Parent 4a0b0cf9e4d0bbc2b018ae8c365ae9f17b1b6d7a has_sum now an infix operator!! diff -r 4a0b0cf9e4d0 -r bfb1acc9855e src/HOL/Analysis/Infinite_Sum.thy --- a/src/HOL/Analysis/Infinite_Sum.thy Thu Feb 23 15:21:22 2023 +0000 +++ b/src/HOL/Analysis/Infinite_Sum.thy Thu Feb 23 16:17:04 2023 +0000 @@ -31,11 +31,14 @@ subsection \Definition and syntax\ -definition has_sum :: \('a \ 'b :: {comm_monoid_add, topological_space}) \ 'a set \ 'b \ bool\ where - \has_sum f A x \ (sum f \ x) (finite_subsets_at_top A)\ +definition HAS_SUM :: \('a \ 'b :: {comm_monoid_add, topological_space}) \ 'a set \ 'b \ bool\ + where has_sum_def: \HAS_SUM f A x \ (sum f \ x) (finite_subsets_at_top A)\ + +abbreviation has_sum (infixr "has'_sum" 46) where + "(f has_sum S) A \ HAS_SUM f A S" definition summable_on :: "('a \ 'b::{comm_monoid_add, topological_space}) \ 'a set \ bool" (infixr "summable'_on" 46) where - "f summable_on A \ (\x. has_sum f A x)" + "f summable_on A \ (\x. (f has_sum x) A)" definition infsum :: "('a \ 'b::{comm_monoid_add,t2_space}) \ 'a set \ 'b" where "infsum f A = (if f summable_on A then Lim (finite_subsets_at_top A) (sum f) else 0)" @@ -84,21 +87,21 @@ lemma infsumI: fixes f g :: \'a \ 'b::{comm_monoid_add, t2_space}\ - assumes \has_sum f A x\ + assumes \(f has_sum x) A\ shows \infsum f A = x\ by (metis assms finite_subsets_at_top_neq_bot infsum_def summable_on_def has_sum_def tendsto_Lim) lemma infsum_eqI: fixes f g :: \'a \ 'b::{comm_monoid_add, t2_space}\ assumes \x = y\ - assumes \has_sum f A x\ - assumes \has_sum g B y\ + assumes \(f has_sum x) A\ + assumes \(g has_sum y) B\ shows \infsum f A = infsum g B\ using assms infsumI by blast lemma infsum_eqI': fixes f g :: \'a \ 'b::{comm_monoid_add, t2_space}\ - assumes \\x. has_sum f A x \ has_sum g B x\ + assumes \\x. (f has_sum x) A \ (g has_sum x) B\ shows \infsum f A = infsum g B\ by (metis assms infsum_def infsum_eqI summable_on_def) @@ -108,12 +111,12 @@ shows \infsum f A = 0\ by (simp add: assms infsum_def) -lemma summable_iff_has_sum_infsum: "f summable_on A \ has_sum f A (infsum f A)" +lemma summable_iff_has_sum_infsum: "f summable_on A \ (f has_sum (infsum f A)) A" using infsumI summable_on_def by blast lemma has_sum_infsum[simp]: assumes \f summable_on S\ - shows \has_sum f S (infsum f S)\ + shows \(f has_sum (infsum f S)) S\ using assms summable_iff_has_sum_infsum by blast lemma has_sum_cong_neutral: @@ -121,7 +124,7 @@ assumes \\x. x\T-S \ g x = 0\ assumes \\x. x\S-T \ f x = 0\ assumes \\x. x\S\T \ f x = g x\ - shows "has_sum f S x \ has_sum g T x" + shows "(f has_sum x) S \ (g has_sum x) T" proof - have \eventually P (filtermap (sum f) (finite_subsets_at_top S)) = eventually P (filtermap (sum g) (finite_subsets_at_top T))\ for P @@ -187,7 +190,7 @@ lemma has_sum_cong: assumes "\x. x\A \ f x = g x" - shows "has_sum f A x \ has_sum g A x" + shows "(f has_sum x) A \ (g has_sum x) A" using assms by (intro has_sum_cong_neutral) auto lemma summable_on_cong: @@ -254,8 +257,8 @@ lemma fixes f :: "'a \ 'b::{topological_ab_group_add}" - assumes \has_sum f B b\ and \has_sum f A a\ and AB: "A \ B" - shows has_sum_Diff: "has_sum f (B - A) (b - a)" + assumes \(f has_sum b) B\ and \(f has_sum a) A\ and AB: "A \ B" + shows has_sum_Diff: "(f has_sum (b - a)) (B - A)" proof - have finite_subsets1: "finite_subsets_at_top (B - A) \ filtermap (\F. F - A) (finite_subsets_at_top B)" @@ -324,7 +327,7 @@ lemma has_sum_mono_neutral: fixes f :: "'a\'b::{ordered_comm_monoid_add,linorder_topology}" (* Does this really require a linorder topology? (Instead of order topology.) *) - assumes \has_sum f A a\ and "has_sum g B b" + assumes \(f has_sum a) A\ and "(g has_sum b) B" assumes \\x. x \ A\B \ f x \ g x\ assumes \\x. x \ A-B \ f x \ 0\ assumes \\x. x \ B-A \ g x \ 0\ @@ -333,11 +336,11 @@ define f' g' where \f' x = (if x \ A then f x else 0)\ and \g' x = (if x \ B then g x else 0)\ for x have [simp]: \f summable_on A\ \g summable_on B\ using assms(1,2) summable_on_def by auto - have \has_sum f' (A\B) a\ + have \(f' has_sum a) (A\B)\ by (smt (verit, best) DiffE IntE Un_iff f'_def assms(1) has_sum_cong_neutral) then have f'_lim: \(sum f' \ a) (finite_subsets_at_top (A\B))\ by (meson has_sum_def) - have \has_sum g' (A\B) b\ + have \(g' has_sum b) (A\B)\ by (smt (verit, best) DiffD1 DiffD2 IntE UnCI g'_def assms(2) has_sum_cong_neutral) then have g'_lim: \(sum g' \ b) (finite_subsets_at_top (A\B))\ using has_sum_def by blast @@ -361,7 +364,7 @@ lemma has_sum_mono: fixes f :: "'a\'b::{ordered_comm_monoid_add,linorder_topology}" - assumes "has_sum f A x" and "has_sum g A y" + assumes "(f has_sum x) A" and "(g has_sum y) A" assumes \\x. x \ A \ f x \ g x\ shows "x \ y" using assms has_sum_mono_neutral by force @@ -375,7 +378,7 @@ lemma has_sum_finite[simp]: assumes "finite F" - shows "has_sum f F (sum f F)" + shows "(f has_sum (sum f F)) F" using assms by (auto intro: tendsto_Lim simp: finite_subsets_at_top_finite infsum_def has_sum_def principal_eq_bot_iff) @@ -392,7 +395,7 @@ lemma has_sum_finite_approximation: fixes f :: "'a \ 'b::{comm_monoid_add,metric_space}" - assumes "has_sum f A x" and "\ > 0" + assumes "(f has_sum x) A" and "\ > 0" shows "\F. finite F \ F \ A \ dist (sum f F) x \ \" proof - have "(sum f \ x) (finite_subsets_at_top A)" @@ -408,7 +411,7 @@ assumes "f summable_on A" and "\ > 0" shows "\F. finite F \ F \ A \ dist (sum f F) (infsum f A) \ \" proof - - from assms have "has_sum f A (infsum f A)" + from assms have "(f has_sum (infsum f A)) A" by (simp add: summable_iff_has_sum_infsum) from this and \\ > 0\ show ?thesis by (rule has_sum_finite_approximation) @@ -491,8 +494,8 @@ lemma norm_has_sum_bound: fixes f :: "'b \ 'a::real_normed_vector" and A :: "'b set" - assumes "has_sum (\x. norm (f x)) A n" - assumes "has_sum f A a" + assumes "((\x. norm (f x)) has_sum n) A" + assumes "(f has_sum a) A" shows "norm a \ n" proof - have "norm a \ n + \" if "\>0" for \ @@ -509,7 +512,7 @@ using norm_sum by auto also have "\ \ n + \" proof (intro add_right_mono [OF has_sum_mono_neutral]) - show "has_sum (\x. norm (f x)) F (\x\F. norm (f x))" + show "((\x. norm (f x)) has_sum (\x\F. norm (f x))) F" by (simp add: \finite F\) qed (use \F \ A\ assms in auto) finally show ?thesis @@ -526,7 +529,7 @@ shows "norm (infsum f A) \ infsum (\x. norm (f x)) A" proof (cases "f summable_on A") case True - have "has_sum (\x. norm (f x)) A (\\<^sub>\x\A. norm (f x))" + have "((\x. norm (f x)) has_sum (\\<^sub>\x\A. norm (f x))) A" by (simp add: assms) then show ?thesis by (metis True has_sum_infsum norm_has_sum_bound) @@ -574,7 +577,7 @@ lemma has_sum_0: assumes \\x. x\M \ f x = 0\ - shows \has_sum f M 0\ + shows \(f has_sum 0) M\ by (metis assms finite.intros(1) has_sum_cong has_sum_cong_neutral has_sum_finite sum.neutral_const) lemma summable_on_0: @@ -594,15 +597,15 @@ lemma summable_on_0_simp[simp]: \(\_. 0) summable_on M\ by (simp_all add: summable_on_0) -lemma has_sum_0_simp[simp]: \has_sum (\_. 0) M 0\ +lemma has_sum_0_simp[simp]: \((\_. 0) has_sum 0) M\ by (simp_all add: has_sum_0) lemma has_sum_add: fixes f g :: "'a \ 'b::{topological_comm_monoid_add}" - assumes \has_sum f A a\ - assumes \has_sum g A b\ - shows \has_sum (\x. f x + g x) A (a + b)\ + assumes \(f has_sum a) A\ + assumes \(g has_sum b) A\ + shows \((\x. f x + g x) has_sum (a + b)) A\ proof - from assms have lim_f: \(sum f \ a) (finite_subsets_at_top A)\ and lim_g: \(sum g \ b) (finite_subsets_at_top A)\ @@ -626,7 +629,7 @@ assumes \g summable_on A\ shows \infsum (\x. f x + g x) A = infsum f A + infsum g A\ proof - - have \has_sum (\x. f x + g x) A (infsum f A + infsum g A)\ + have \((\x. f x + g x) has_sum (infsum f A + infsum g A)) A\ by (simp add: assms has_sum_add) then show ?thesis using infsumI by blast @@ -635,16 +638,16 @@ lemma has_sum_Un_disjoint: fixes f :: "'a \ 'b::topological_comm_monoid_add" - assumes "has_sum f A a" - assumes "has_sum f B b" + assumes "(f has_sum a) A" + assumes "(f has_sum b) B" assumes disj: "A \ B = {}" - shows \has_sum f (A \ B) (a + b)\ + shows \(f has_sum (a + b)) (A \ B)\ proof - define fA fB where \fA x = (if x \ A then f x else 0)\ and \fB x = (if x \ A then f x else 0)\ for x - have fA: \has_sum fA (A \ B) a\ + have fA: \(fA has_sum a) (A \ B)\ by (smt (verit, ccfv_SIG) DiffD1 DiffD2 UnCI fA_def assms(1) has_sum_cong_neutral inf_sup_absorb) - have fB: \has_sum fB (A \ B) b\ + have fB: \(fB has_sum b) (A \ B)\ by (smt (verit, best) DiffD1 DiffD2 IntE Un_iff fB_def assms(2) disj disjoint_iff has_sum_cong_neutral) have fAB: \f x = fA x + fB x\ for x unfolding fA_def fB_def by simp @@ -672,7 +675,7 @@ lemma norm_summable_imp_has_sum: fixes f :: "nat \ 'a :: banach" assumes "summable (\n. norm (f n))" and "f sums S" - shows "has_sum f (UNIV :: nat set) S" + shows "(f has_sum S) (UNIV :: nat set)" unfolding has_sum_def tendsto_iff eventually_finite_subsets_at_top proof clarsimp fix \::real @@ -816,7 +819,7 @@ by (rule summable_on_subset_aux[OF _ _ assms]) (auto simp: complete_def convergent_def dest!: Cauchy_convergent) -lemma has_sum_empty[simp]: \has_sum f {} 0\ +lemma has_sum_empty[simp]: \(f has_sum 0) {}\ by (meson ex_in_conv has_sum_0) lemma summable_on_empty[simp]: \f summable_on {}\ @@ -828,9 +831,9 @@ lemma sum_has_sum: fixes f :: "'a \ 'b::topological_comm_monoid_add" assumes \finite A\ - assumes \\a. a \ A \ has_sum f (B a) (s a)\ + assumes \\a. a \ A \ (f has_sum (s a)) (B a)\ assumes \\a a'. a\A \ a'\A \ a\a' \ B a \ B a' = {}\ - shows \has_sum f (\a\A. B a) (sum s A)\ + shows \(f has_sum (sum s A)) (\a\A. B a)\ using assms proof (induction) case empty @@ -838,11 +841,11 @@ by simp next case (insert x A) - have \has_sum f (B x) (s x)\ + have \(f has_sum (s x)) (B x)\ by (simp add: insert.prems) - moreover have IH: \has_sum f (\a\A. B a) (sum s A)\ + moreover have IH: \(f has_sum (sum s A)) (\a\A. B a)\ using insert by simp - ultimately have \has_sum f (B x \ (\a\A. B a)) (s x + sum s A)\ + ultimately have \(f has_sum (s x + sum s A)) (B x \ (\a\A. B a))\ using insert by (intro has_sum_Un_disjoint) auto then show ?case using insert.hyps by auto @@ -879,8 +882,8 @@ \ \Not using \<^const>\additive\ because it would add sort constraint \<^class>\ab_group_add\\ assumes cont: \f \x\ f x\ \ \For \<^class>\t2_space\, this is equivalent to \isCont f x\ by @{thm [source] isCont_def}.\ - assumes infsum: \has_sum g S x\ - shows \has_sum (f \ g) S (f x)\ + assumes infsum: \(g has_sum x) S\ + shows \((f \ g) has_sum (f x)) S\ proof - have \(sum g \ x) (finite_subsets_at_top S)\ using infsum has_sum_def by blast @@ -889,7 +892,7 @@ then have \(sum (f \ g) \ f x) (finite_subsets_at_top S)\ using tendsto_cong f_sum by (simp add: Lim_transform_eventually eventually_finite_subsets_at_top_weakI) - then show \has_sum (f \ g) S (f x)\ + then show \((f \ g) has_sum (f x)) S\ using has_sum_def by blast qed @@ -897,7 +900,7 @@ fixes f :: \'b :: {comm_monoid_add,topological_space} \ 'c :: {comm_monoid_add,topological_space}\ assumes \\F. finite F \ F \ S \ sum (f \ g) F = f (sum g F)\ \ \Not using \<^const>\additive\ because it would add sort constraint \<^class>\ab_group_add\\ - assumes \\x. has_sum g S x \ f \x\ f x\ + assumes \\x. (g has_sum x) S \ f \x\ f x\ \ \For \<^class>\t2_space\, this is equivalent to \isCont f x\ by @{thm [source] isCont_def}.\ assumes \g summable_on S\ shows \(f \ g) summable_on S\ @@ -918,8 +921,8 @@ assumes \additive f\ assumes \f \x\ f x\ \ \For \<^class>\t2_space\, this is equivalent to \isCont f x\ by @{thm [source] isCont_def}.\ - assumes infsum: \has_sum g S x\ - shows \has_sum (f \ g) S (f x)\ + assumes infsum: \(g has_sum x) S\ + shows \((f \ g) has_sum (f x)) S\ using assms by (intro has_sum_comm_additive_general has_sum_infsum) (auto simp: isCont_def additive.sum) @@ -943,7 +946,7 @@ fixes f :: \'a \ 'b :: {conditionally_complete_linorder, ordered_comm_monoid_add, linorder_topology}\ assumes \\x. x\A \ f x \ 0\ assumes \bdd_above (sum f ` {F. F\A \ finite F})\ - shows \has_sum f A (SUP F\{F. finite F \ F\A}. sum f F)\ + shows \(f has_sum (SUP F\{F. finite F \ F\A}. sum f F)) A\ proof - have \(sum f \ (SUP F\{F. finite F \ F\A}. sum f F)) (finite_subsets_at_top A)\ proof (rule order_tendstoI) @@ -988,7 +991,7 @@ lemma nonneg_has_sum_complete: fixes f :: \'a \ 'b :: {complete_linorder, ordered_comm_monoid_add, linorder_topology}\ assumes \\x. x\A \ f x \ 0\ - shows \has_sum f A (SUP F\{F. finite F \ F\A}. sum f F)\ + shows \(f has_sum (SUP F\{F. finite F \ F\A}. sum f F)) A\ using assms nonneg_bdd_above_has_sum by blast lemma nonneg_summable_on_complete: @@ -1005,7 +1008,7 @@ lemma has_sum_nonneg: fixes f :: "'a \ 'b::{ordered_comm_monoid_add,linorder_topology}" - assumes "has_sum f M a" + assumes "(f has_sum a) M" and "\x. x \ M \ 0 \ f x" shows "a \ 0" by (metis (no_types, lifting) DiffD1 assms empty_iff has_sum_0 has_sum_mono_neutral order_refl) @@ -1018,11 +1021,11 @@ lemma has_sum_mono2: fixes f :: "'a \ 'b::{topological_ab_group_add, ordered_comm_monoid_add,linorder_topology}" - assumes "has_sum f A S" "has_sum f B S'" "A \ B" + assumes "(f has_sum S) A" "(f has_sum S') B" "A \ B" assumes "\x. x \ B - A \ f x \ 0" shows "S \ S'" proof - - have "has_sum f (B - A) (S' - S)" + have "(f has_sum (S' - S)) (B - A)" by (rule has_sum_Diff) fact+ hence "S' - S \ 0" by (rule has_sum_nonneg) (use assms(4) in auto) @@ -1039,13 +1042,13 @@ lemma finite_sum_le_has_sum: fixes f :: "'a \ 'b::{topological_ab_group_add, ordered_comm_monoid_add,linorder_topology}" - assumes "has_sum f A S" "finite B" "B \ A" + assumes "(f has_sum S) A" "finite B" "B \ A" assumes "\x. x \ A - B \ f x \ 0" shows "sum f B \ S" proof (rule has_sum_mono2) - show "has_sum f A S" + show "(f has_sum S) A" by fact - show "has_sum f B (sum f B)" + show "(f has_sum (sum f B)) B" by (rule has_sum_finite) fact+ qed (use assms in auto) @@ -1058,9 +1061,9 @@ lemma has_sum_reindex: assumes \inj_on h A\ - shows \has_sum g (h ` A) x \ has_sum (g \ h) A x\ + shows \(g has_sum x) (h ` A) \ ((g \ h) has_sum x) A\ proof - - have \has_sum g (h ` A) x \ (sum g \ x) (finite_subsets_at_top (h ` A))\ + have \(g has_sum x) (h ` A) \ (sum g \ x) (finite_subsets_at_top (h ` A))\ by (simp add: has_sum_def) also have \\ \ ((\F. sum g (h ` F)) \ x) (finite_subsets_at_top A)\ by (metis assms filterlim_filtermap filtermap_image_finite_subsets_at_top) @@ -1069,7 +1072,7 @@ show "\X. \finite X; X \ A\ \ inj_on h X" using assms subset_inj_on by blast qed - also have \\ \ has_sum (g \ h) A x\ + also have \\ \ ((g \ h) has_sum x) A\ by (simp add: has_sum_def) finally show ?thesis . qed @@ -1175,9 +1178,9 @@ fixes A :: "'a set" and B :: "'a \ 'b set" and f :: \'a \ 'b \ 'c::{comm_monoid_add,uniform_space}\ assumes plus_cont: \uniformly_continuous_on UNIV (\(x::'c,y). x+y)\ - assumes summableAB: "has_sum f (Sigma A B) a" - assumes summableB: \\x. x\A \ has_sum (\y. f (x, y)) (B x) (b x)\ - shows "has_sum b A a" + assumes summableAB: "(f has_sum a) (Sigma A B)" + assumes summableB: \\x. x\A \ ((\y. f (x, y)) has_sum b x) (B x)\ + shows "(b has_sum a) A" proof - define F FB FA where \F = finite_subsets_at_top (Sigma A B)\ and \FB x = finite_subsets_at_top (B x)\ and \FA = finite_subsets_at_top A\ for x @@ -1287,9 +1290,9 @@ assumes summableB: \\x. x\A \ (f x) summable_on (B x)\ shows \(\x. infsum (f x) (B x)) summable_on A\ proof - - from summableAB obtain a where a: \has_sum (\(x,y). f x y) (Sigma A B) a\ + from summableAB obtain a where a: \((\(x,y). f x y) has_sum a) (Sigma A B)\ using has_sum_infsum by blast - from summableB have b: \\x. x\A \ has_sum (f x) (B x) (infsum (f x) (B x))\ + from summableB have b: \\x. x\A \ (f x has_sum infsum (f x) (B x)) (B x)\ by (auto intro!: has_sum_infsum) show ?thesis using plus_cont a b @@ -1304,9 +1307,9 @@ assumes summableB: \\x. x\A \ (\y. f (x, y)) summable_on (B x)\ shows "infsum f (Sigma A B) = infsum (\x. infsum (\y. f (x, y)) (B x)) A" proof - - from summableAB have a: \has_sum f (Sigma A B) (infsum f (Sigma A B))\ + from summableAB have a: \(f has_sum infsum f (Sigma A B)) (Sigma A B)\ using has_sum_infsum by blast - from summableB have b: \\x. x\A \ has_sum (\y. f (x, y)) (B x) (infsum (\y. f (x, y)) (B x))\ + from summableB have b: \\x. x\A \ ((\y. f (x, y)) has_sum infsum (\y. f (x, y)) (B x)) (B x)\ by (auto intro!: has_sum_infsum) show ?thesis using plus_cont a b by (auto intro: infsumI[symmetric] has_sum_Sigma simp: summable_on_def) @@ -1427,7 +1430,7 @@ lemma nonneg_has_sum_le_0D: fixes f :: "'a \ 'b::{topological_ab_group_add,ordered_ab_group_add,linorder_topology}" - assumes "has_sum f A a" \a \ 0\ + assumes "(f has_sum a) A" \a \ 0\ and "\x. x \ A \ f x \ 0" and "x \ A" shows "f x = 0" @@ -1435,8 +1438,8 @@ lemma has_sum_cmult_left: fixes f :: "'a \ 'b :: {topological_semigroup_mult, semiring_0}" - assumes \has_sum f A a\ - shows "has_sum (\x. f x * c) A (a * c)" + assumes \(f has_sum a) A\ + shows "((\x. f x * c) has_sum (a * c)) A" proof - from assms have \(sum f \ a) (finite_subsets_at_top A)\ using has_sum_def by blast @@ -1457,7 +1460,7 @@ then show ?thesis by auto next case False - then have \has_sum f A (infsum f A)\ + then have \(f has_sum (infsum f A)) A\ by (simp add: assms) then show ?thesis by (auto intro!: infsumI has_sum_cmult_left) @@ -1471,8 +1474,8 @@ lemma has_sum_cmult_right: fixes f :: "'a \ 'b :: {topological_semigroup_mult, semiring_0}" - assumes \has_sum f A a\ - shows "has_sum (\x. c * f x) A (c * a)" + assumes \(f has_sum a) A\ + shows "((\x. c * f x) has_sum (c * a)) A" proof - from assms have \(sum f \ a) (finite_subsets_at_top A)\ using has_sum_def by blast @@ -1538,10 +1541,9 @@ shows "infsum (\x. c * f x) A = c * infsum f A" by (metis (full_types) infsum_cmult_right infsum_not_exists mult_eq_0_iff summable_on_cmult_right') - lemma has_sum_constant[simp]: assumes \finite F\ - shows \has_sum (\_. c) F (of_nat (card F) * c)\ + shows \((\_. c) has_sum of_nat (card F) * c) F\ by (metis assms has_sum_finite sum_constant) lemma infsum_constant[simp]: @@ -1589,7 +1591,7 @@ lemma has_sum_uminus: fixes f :: \'a \ 'b::topological_ab_group_add\ - shows \has_sum (\x. - f x) A a \ has_sum f A (- a)\ + shows \((\x. - f x) has_sum a) A \ (f has_sum (- a)) A\ by (auto simp add: sum_negf[abs_def] tendsto_minus_cancel_left has_sum_def) lemma summable_on_uminus: @@ -1604,7 +1606,7 @@ lemma has_sum_le_finite_sums: fixes a :: \'a::{comm_monoid_add,topological_space,linorder_topology}\ - assumes \has_sum f A a\ + assumes \(f has_sum a) A\ assumes \\F. finite F \ F \ A \ sum f F \ b\ shows \a \ b\ by (metis assms eventually_finite_subsets_at_top_weakI finite_subsets_at_top_neq_bot has_sum_def tendsto_upperbound) @@ -2061,7 +2063,7 @@ assumes geqb: \\x. x \ S \ f x \ b\ assumes b: \b > 0\ assumes \infinite S\ - shows "has_sum f S \" + shows "(f has_sum \) S" proof - have \(sum f \ \) (finite_subsets_at_top S)\ proof (rule order_tendstoI) @@ -2084,8 +2086,7 @@ finally show ?thesis . qed ultimately show \\\<^sub>F x in finite_subsets_at_top S. y < sum f x\ - unfolding eventually_finite_subsets_at_top - by auto + unfolding eventually_finite_subsets_at_top by auto qed auto then show ?thesis by (simp add: has_sum_def) @@ -2128,7 +2129,7 @@ assumes \\x. x \ S \ f x \ b\ assumes \b > 0\ assumes \infinite S\ - shows "has_sum f S \" + shows "(f has_sum \) S" by (metis Infty_neq_0(1) assms infsum_def has_sum_infsum infsum_superconst_infinite_ereal) lemma infsum_superconst_infinite_enat: @@ -2153,7 +2154,7 @@ assumes \\x. x \ S \ f x \ b\ assumes \b > 0\ assumes \infinite S\ - shows "has_sum f S \" + shows "(f has_sum \) S" by (metis assms i0_lb has_sum_infsum infsum_superconst_infinite_enat nonneg_summable_on_complete) text \This lemma helps to relate a real-valued infsum to a supremum over extended nonnegative reals.\ @@ -2218,7 +2219,7 @@ lemma has_sum_nonneg_SUPREMUM_real: fixes f :: "'a \ real" assumes "f summable_on A" and "\x. x\A \ f x \ 0" - shows "has_sum f A (SUP F\{F. finite F \ F \ A}. (sum f F))" + shows "(f has_sum (SUP F\{F. finite F \ F \ A}. (sum f F))) A" by (metis (mono_tags, lifting) assms has_sum_infsum infsum_nonneg_is_SUPREMUM_real) lemma summable_countable_real: @@ -2231,7 +2232,7 @@ lemma has_sum_cnj_iff[simp]: fixes f :: \'a \ complex\ - shows \has_sum (\x. cnj (f x)) M (cnj a) \ has_sum f M a\ + shows \((\x. cnj (f x)) has_sum cnj a) M \ (f has_sum a) M\ by (simp add: has_sum_def lim_cnj del: cnj_sum add: cnj_sum[symmetric, abs_def, of f]) lemma summable_on_cnj_iff[simp]: @@ -2242,8 +2243,8 @@ by (metis complex_cnj_zero infsumI has_sum_cnj_iff infsum_def summable_on_cnj_iff has_sum_infsum) lemma has_sum_Re: - assumes "has_sum f M a" - shows "has_sum (\x. Re (f x)) M (Re a)" + assumes "(f has_sum a) M" + shows "((\x. Re (f x)) has_sum Re a) M" using has_sum_comm_additive[where f=Re] using assms tendsto_Re by (fastforce simp add: o_def additive_def) @@ -2258,8 +2259,8 @@ by (metis assms has_sum_Re summable_on_def) lemma has_sum_Im: - assumes "has_sum f M a" - shows "has_sum (\x. Im (f x)) M (Im a)" + assumes "(f has_sum a) M" + shows "((\x. Im (f x)) has_sum Im a) M" using has_sum_comm_additive[where f=Im] using assms tendsto_Im by (fastforce simp add: o_def additive_def) @@ -2291,7 +2292,7 @@ lemma nonneg_has_sum_le_0D_complex: fixes f :: "'a \ complex" - assumes "has_sum f A a" and \a \ 0\ + assumes "(f has_sum a) A" and \a \ 0\ and "\x. x \ A \ f x \ 0" and "x \ A" shows "f x = 0" by (metis assms infsumI nonneg_infsum_le_0D_complex summable_on_def) @@ -2395,10 +2396,6 @@ shows \countable {x\A. f x \ 0}\ using abs_summable_countable assms summable_on_iff_abs_summable_on_complex by blast -abbreviation has_sum' (infixr "has'_sum" 46) where - "(f has_sum S) A \ Infinite_Sum.has_sum f A S" - - (* TODO: figure all this out *) inductive (in topological_space) convergent_filter :: "'a filter \ bool" where