src/HOL/Transcendental.thy
changeset 59865 8a20dd967385
parent 59862 44b3f4fa33ca
child 59867 58043346ca64
equal deleted inserted replaced
59863:30519ff3dffb 59865:8a20dd967385
  4540   assumes "\<bar>x\<bar> \<le> 1"
  4540   assumes "\<bar>x\<bar> \<le> 1"
  4541   shows "summable (\<lambda> k. (-1)^k * (1 / real (k*2+1) * x ^ (k*2+1)))"
  4541   shows "summable (\<lambda> k. (-1)^k * (1 / real (k*2+1) * x ^ (k*2+1)))"
  4542   (is "summable (?c x)")
  4542   (is "summable (?c x)")
  4543   by (rule summable_Leibniz(1), rule zeroseq_arctan_series[OF assms], rule monoseq_arctan_series[OF assms])
  4543   by (rule summable_Leibniz(1), rule zeroseq_arctan_series[OF assms], rule monoseq_arctan_series[OF assms])
  4544 
  4544 
  4545 lemma less_one_imp_sqr_less_one:
       
  4546   fixes x :: real
       
  4547   assumes "\<bar>x\<bar> < 1"
       
  4548   shows "x\<^sup>2 < 1"
       
  4549 proof -
       
  4550   have "\<bar>x\<^sup>2\<bar> < 1"
       
  4551     by (metis abs_power2 assms pos2 power2_abs power_0 power_strict_decreasing zero_eq_power2 zero_less_abs_iff)
       
  4552   thus ?thesis using zero_le_power2 by auto
       
  4553 qed
       
  4554 
       
  4555 lemma DERIV_arctan_series:
  4545 lemma DERIV_arctan_series:
  4556   assumes "\<bar> x \<bar> < 1"
  4546   assumes "\<bar> x \<bar> < 1"
  4557   shows "DERIV (\<lambda> x'. \<Sum> k. (-1)^k * (1 / real (k*2+1) * x' ^ (k*2+1))) x :> (\<Sum> k. (-1)^k * x^(k*2))"
  4547   shows "DERIV (\<lambda> x'. \<Sum> k. (-1)^k * (1 / real (k*2+1) * x' ^ (k*2+1))) x :> (\<Sum> k. (-1)^k * x^(k*2))"
  4558   (is "DERIV ?arctan _ :> ?Int")
  4548   (is "DERIV ?arctan _ :> ?Int")
  4559 proof -
  4549 proof -
  4566     by auto
  4556     by auto
  4567 
  4557 
  4568   {
  4558   {
  4569     fix x :: real
  4559     fix x :: real
  4570     assume "\<bar>x\<bar> < 1"
  4560     assume "\<bar>x\<bar> < 1"
  4571     hence "x\<^sup>2 < 1" by (rule less_one_imp_sqr_less_one)
  4561     hence "x\<^sup>2 < 1" by (simp add: abs_square_less_1)
  4572     have "summable (\<lambda> n. (- 1) ^ n * (x\<^sup>2) ^n)"
  4562     have "summable (\<lambda> n. (- 1) ^ n * (x\<^sup>2) ^n)"
  4573       by (rule summable_Leibniz(1), auto intro!: LIMSEQ_realpow_zero monoseq_realpow `x\<^sup>2 < 1` order_less_imp_le[OF `x\<^sup>2 < 1`])
  4563       by (rule summable_Leibniz(1), auto intro!: LIMSEQ_realpow_zero monoseq_realpow `x\<^sup>2 < 1` order_less_imp_le[OF `x\<^sup>2 < 1`])
  4574     hence "summable (\<lambda> n. (- 1) ^ n * x^(2*n))" unfolding power_mult .
  4564     hence "summable (\<lambda> n. (- 1) ^ n * x^(2*n))" unfolding power_mult .
  4575   } note summable_Integral = this
  4565   } note summable_Integral = this
  4576 
  4566 
  4674             fix x
  4664             fix x
  4675             assume "-r < x \<and> x < r"
  4665             assume "-r < x \<and> x < r"
  4676             hence "\<bar>x\<bar> < r" by auto
  4666             hence "\<bar>x\<bar> < r" by auto
  4677             hence "\<bar>x\<bar> < 1" using `r < 1` by auto
  4667             hence "\<bar>x\<bar> < 1" using `r < 1` by auto
  4678             have "\<bar> - (x\<^sup>2) \<bar> < 1"
  4668             have "\<bar> - (x\<^sup>2) \<bar> < 1"
  4679               using less_one_imp_sqr_less_one[OF `\<bar>x\<bar> < 1`] by auto
  4669               using abs_square_less_1 `\<bar>x\<bar> < 1` by auto
  4680             hence "(\<lambda> n. (- (x\<^sup>2)) ^ n) sums (1 / (1 - (- (x\<^sup>2))))"
  4670             hence "(\<lambda> n. (- (x\<^sup>2)) ^ n) sums (1 / (1 - (- (x\<^sup>2))))"
  4681               unfolding real_norm_def[symmetric] by (rule geometric_sums)
  4671               unfolding real_norm_def[symmetric] by (rule geometric_sums)
  4682             hence "(?c' x) sums (1 / (1 - (- (x\<^sup>2))))"
  4672             hence "(?c' x) sums (1 / (1 - (- (x\<^sup>2))))"
  4683               unfolding power_mult_distrib[symmetric] power_mult mult.commute[of _ 2] by auto
  4673               unfolding power_mult_distrib[symmetric] power_mult mult.commute[of _ 2] by auto
  4684             hence suminf_c'_eq_geom: "inverse (1 + x\<^sup>2) = suminf (?c' x)"
  4674             hence suminf_c'_eq_geom: "inverse (1 + x\<^sup>2) = suminf (?c' x)"