226 qed |
226 qed |
227 with pos show "\<forall>n. f n = 0" |
227 with pos show "\<forall>n. f n = 0" |
228 by (auto intro!: antisym) |
228 by (auto intro!: antisym) |
229 qed (metis suminf_zero fun_eq_iff) |
229 qed (metis suminf_zero fun_eq_iff) |
230 |
230 |
|
231 lemma suminf_pos_iff: |
|
232 "summable f \<Longrightarrow> \<forall>n. 0 \<le> f n \<Longrightarrow> 0 < suminf f \<longleftrightarrow> (\<exists>i. 0 < f i)" |
|
233 using setsum_le_suminf[of 0] suminf_eq_zero_iff by (simp add: less_le) |
|
234 |
|
235 lemma suminf_pos2: |
|
236 assumes "summable f" "\<forall>n. 0 \<le> f n" "0 < f i" |
|
237 shows "0 < suminf f" |
|
238 proof - |
|
239 have "0 < (\<Sum>n<Suc i. f n)" |
|
240 using assms by (intro setsum_pos2[where i=i]) auto |
|
241 also have "\<dots> \<le> suminf f" |
|
242 using assms by (intro setsum_le_suminf) auto |
|
243 finally show ?thesis . |
|
244 qed |
|
245 |
|
246 lemma suminf_pos: "summable f \<Longrightarrow> \<forall>n. 0 < f n \<Longrightarrow> 0 < suminf f" |
|
247 by (intro suminf_pos2[where i=0]) (auto intro: less_imp_le) |
|
248 |
231 end |
249 end |
232 |
250 |
233 context |
251 context |
234 fixes f :: "nat \<Rightarrow> 'a::{ordered_cancel_comm_monoid_add, linorder_topology}" |
252 fixes f :: "nat \<Rightarrow> 'a::{ordered_cancel_comm_monoid_add, linorder_topology}" |
235 begin |
253 begin |
242 by (auto simp: less_imp_le ac_simps) |
260 by (auto simp: less_imp_le ac_simps) |
243 |
261 |
244 lemma setsum_less_suminf: "summable f \<Longrightarrow> \<forall>m\<ge>n. 0 < f m \<Longrightarrow> setsum f {..<n} < suminf f" |
262 lemma setsum_less_suminf: "summable f \<Longrightarrow> \<forall>m\<ge>n. 0 < f m \<Longrightarrow> setsum f {..<n} < suminf f" |
245 using setsum_less_suminf2[of n n] by (simp add: less_imp_le) |
263 using setsum_less_suminf2[of n n] by (simp add: less_imp_le) |
246 |
264 |
247 lemma suminf_pos2: "summable f \<Longrightarrow> \<forall>n. 0 \<le> f n \<Longrightarrow> 0 < f i \<Longrightarrow> 0 < suminf f" |
|
248 using setsum_less_suminf2[of 0 i] by simp |
|
249 |
|
250 lemma suminf_pos: "summable f \<Longrightarrow> \<forall>n. 0 < f n \<Longrightarrow> 0 < suminf f" |
|
251 using suminf_pos2[of 0] by (simp add: less_imp_le) |
|
252 |
|
253 lemma suminf_pos_iff: |
|
254 "summable f \<Longrightarrow> \<forall>n. 0 \<le> f n \<Longrightarrow> 0 < suminf f \<longleftrightarrow> (\<exists>i. 0 < f i)" |
|
255 using setsum_le_suminf[of f 0] suminf_eq_zero_iff[of f] by (simp add: less_le) |
|
256 |
|
257 end |
265 end |
258 |
266 |
259 lemma summableI_nonneg_bounded: |
267 lemma summableI_nonneg_bounded: |
260 fixes f:: "nat \<Rightarrow> 'a::{ordered_comm_monoid_add, linorder_topology, conditionally_complete_linorder}" |
268 fixes f:: "nat \<Rightarrow> 'a::{ordered_comm_monoid_add, linorder_topology, conditionally_complete_linorder}" |
261 assumes pos[simp]: "\<And>n. 0 \<le> f n" and le: "\<And>n. (\<Sum>i<n. f i) \<le> x" |
269 assumes pos[simp]: "\<And>n. 0 \<le> f n" and le: "\<And>n. (\<Sum>i<n. f i) \<le> x" |
262 shows "summable f" |
270 shows "summable f" |
263 unfolding summable_def sums_def[abs_def] |
271 unfolding summable_def sums_def[abs_def] |
264 proof (intro exI order_tendstoI) |
272 proof (rule exI LIMSEQ_incseq_SUP)+ |
265 have [simp, intro]: "bdd_above (range (\<lambda>n. \<Sum>i<n. f i))" |
273 show "bdd_above (range (\<lambda>n. setsum f {..<n}))" |
266 using le by (auto simp: bdd_above_def) |
274 using le by (auto simp: bdd_above_def) |
267 { fix a assume "a < (SUP n. \<Sum>i<n. f i)" |
275 show "incseq (\<lambda>n. setsum f {..<n})" |
268 then obtain n where "a < (\<Sum>i<n. f i)" |
276 by (auto simp: mono_def intro!: setsum_mono2) |
269 by (auto simp add: less_cSUP_iff) |
277 qed |
270 then have "\<And>m. n \<le> m \<Longrightarrow> a < (\<Sum>i<m. f i)" |
278 |
271 by (rule less_le_trans) (auto intro!: setsum_mono2) |
279 lemma summableI[intro, simp]: |
272 then show "eventually (\<lambda>n. a < (\<Sum>i<n. f i)) sequentially" |
280 fixes f:: "nat \<Rightarrow> 'a::{canonically_ordered_monoid_add, linorder_topology, complete_linorder}" |
273 by (auto simp: eventually_sequentially) } |
281 shows "summable f" |
274 { fix a assume "(SUP n. \<Sum>i<n. f i) < a" |
282 by (intro summableI_nonneg_bounded[where x=top] zero_le top_greatest) |
275 moreover have "\<And>n. (\<Sum>i<n. f i) \<le> (SUP n. \<Sum>i<n. f i)" |
|
276 by (auto intro: cSUP_upper) |
|
277 ultimately show "eventually (\<lambda>n. (\<Sum>i<n. f i) < a) sequentially" |
|
278 by (auto intro: le_less_trans simp: eventually_sequentially) } |
|
279 qed |
|
280 |
283 |
281 subsection \<open>Infinite summability on topological monoids\<close> |
284 subsection \<open>Infinite summability on topological monoids\<close> |
282 |
285 |
283 lemma Zero_notin_Suc: "0 \<notin> Suc ` A" |
286 lemma Zero_notin_Suc: "0 \<notin> Suc ` A" |
284 by auto |
287 by auto |