equal
deleted
inserted
replaced
213 finally show "?em (2*n) - ?em n + ln 2 = (\<Sum>k<2*n. (-1)^k / real_of_nat (Suc k))" .. |
213 finally show "?em (2*n) - ?em n + ln 2 = (\<Sum>k<2*n. (-1)^k / real_of_nat (Suc k))" .. |
214 qed |
214 qed |
215 moreover have "(\<lambda>n. ?em (2*n) - ?em n + ln (2::real)) |
215 moreover have "(\<lambda>n. ?em (2*n) - ?em n + ln (2::real)) |
216 \<longlonglongrightarrow> euler_mascheroni - euler_mascheroni + ln 2" |
216 \<longlonglongrightarrow> euler_mascheroni - euler_mascheroni + ln 2" |
217 by (intro tendsto_intros euler_mascheroni_LIMSEQ filterlim_compose[OF euler_mascheroni_LIMSEQ] |
217 by (intro tendsto_intros euler_mascheroni_LIMSEQ filterlim_compose[OF euler_mascheroni_LIMSEQ] |
218 filterlim_subseq) (auto simp: subseq_def) |
218 filterlim_subseq) (auto simp: strict_mono_def) |
219 hence "(\<lambda>n. ?em (2*n) - ?em n + ln (2::real)) \<longlonglongrightarrow> ln 2" by simp |
219 hence "(\<lambda>n. ?em (2*n) - ?em n + ln (2::real)) \<longlonglongrightarrow> ln 2" by simp |
220 ultimately have "(\<lambda>n. (\<Sum>k<2*n. (-1)^k / real_of_nat (Suc k))) \<longlonglongrightarrow> ln 2" |
220 ultimately have "(\<lambda>n. (\<Sum>k<2*n. (-1)^k / real_of_nat (Suc k))) \<longlonglongrightarrow> ln 2" |
221 by (rule Lim_transform_eventually) |
221 by (rule Lim_transform_eventually) |
222 |
222 |
223 moreover have "summable (\<lambda>k. (-1)^k * inverse (real_of_nat (Suc k)))" |
223 moreover have "summable (\<lambda>k. (-1)^k * inverse (real_of_nat (Suc k)))" |
225 by (intro summable_Leibniz(1) decseq_imp_monoseq decseq_SucI) simp_all |
225 by (intro summable_Leibniz(1) decseq_imp_monoseq decseq_SucI) simp_all |
226 hence A: "(\<lambda>n. \<Sum>k<n. (-1)^k / real_of_nat (Suc k)) \<longlonglongrightarrow> (\<Sum>k. (-1)^k / real_of_nat (Suc k))" |
226 hence A: "(\<lambda>n. \<Sum>k<n. (-1)^k / real_of_nat (Suc k)) \<longlonglongrightarrow> (\<Sum>k. (-1)^k / real_of_nat (Suc k))" |
227 by (simp add: summable_sums_iff divide_inverse sums_def) |
227 by (simp add: summable_sums_iff divide_inverse sums_def) |
228 from filterlim_compose[OF this filterlim_subseq[of "op * (2::nat)"]] |
228 from filterlim_compose[OF this filterlim_subseq[of "op * (2::nat)"]] |
229 have "(\<lambda>n. \<Sum>k<2*n. (-1)^k / real_of_nat (Suc k)) \<longlonglongrightarrow> (\<Sum>k. (-1)^k / real_of_nat (Suc k))" |
229 have "(\<lambda>n. \<Sum>k<2*n. (-1)^k / real_of_nat (Suc k)) \<longlonglongrightarrow> (\<Sum>k. (-1)^k / real_of_nat (Suc k))" |
230 by (simp add: subseq_def) |
230 by (simp add: strict_mono_def) |
231 ultimately have "(\<Sum>k. (- 1) ^ k / real_of_nat (Suc k)) = ln 2" by (intro LIMSEQ_unique) |
231 ultimately have "(\<Sum>k. (- 1) ^ k / real_of_nat (Suc k)) = ln 2" by (intro LIMSEQ_unique) |
232 with A show ?thesis by (simp add: sums_def) |
232 with A show ?thesis by (simp add: sums_def) |
233 qed |
233 qed |
234 |
234 |
235 lemma alternating_harmonic_series_sums': |
235 lemma alternating_harmonic_series_sums': |