src/HOL/Analysis/Harmonic_Numbers.thy
changeset 67399 eab6ce8368fa
parent 66554 19bf4d5966dc
child 68643 3db6c9338ec1
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
   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)))"
   224     using LIMSEQ_inverse_real_of_nat
   224     using LIMSEQ_inverse_real_of_nat
   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 "( * ) (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: strict_mono_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