src/HOL/Hyperreal/Transcendental.thy
changeset 15536 3ce1cb7a24f0
parent 15481 fc075ae929e4
child 15539 333a88244569
equal deleted inserted replaced
15535:a0cf3a19ee36 15536:3ce1cb7a24f0
   364 subsection{*Properties of Power Series*}
   364 subsection{*Properties of Power Series*}
   365 
   365 
   366 lemma lemma_realpow_diff_sumr:
   366 lemma lemma_realpow_diff_sumr:
   367      "sumr 0 (Suc n) (%p. (x ^ p) * y ^ ((Suc n) - p)) =  
   367      "sumr 0 (Suc n) (%p. (x ^ p) * y ^ ((Suc n) - p)) =  
   368       y * sumr 0 (Suc n) (%p. (x ^ p) * (y ^ (n - p)))"
   368       y * sumr 0 (Suc n) (%p. (x ^ p) * (y ^ (n - p)))"
   369 apply (auto simp add: sumr_mult simp del: sumr_Suc)
   369 apply (auto simp add: setsum_mult simp del: sumr_Suc)
   370 apply (rule sumr_subst)
   370 apply (rule sumr_subst)
   371 apply (intro strip)
   371 apply (intro strip)
   372 apply (subst lemma_realpow_diff)
   372 apply (subst lemma_realpow_diff)
   373 apply (auto simp add: mult_ac)
   373 apply (auto simp add: mult_ac)
   374 done
   374 done
   502 apply (auto simp add: lemma_realpow_diff_sumr2 
   502 apply (auto simp add: lemma_realpow_diff_sumr2 
   503                       right_diff_distrib [symmetric] mult_assoc
   503                       right_diff_distrib [symmetric] mult_assoc
   504             simp del: realpow_Suc sumr_Suc)
   504             simp del: realpow_Suc sumr_Suc)
   505 apply (auto simp add: lemma_realpow_rev_sumr simp del: sumr_Suc)
   505 apply (auto simp add: lemma_realpow_rev_sumr simp del: sumr_Suc)
   506 apply (auto simp add: real_of_nat_Suc sumr_diff_mult_const left_distrib 
   506 apply (auto simp add: real_of_nat_Suc sumr_diff_mult_const left_distrib 
   507                 sumdiff lemma_termdiff1 sumr_mult)
   507                 sumdiff lemma_termdiff1 setsum_mult)
   508 apply (auto intro!: sumr_subst simp add: diff_minus real_add_assoc)
   508 apply (auto intro!: sumr_subst simp add: diff_minus real_add_assoc)
   509 apply (simp add: diff_minus [symmetric] less_iff_Suc_add) 
   509 apply (simp add: diff_minus [symmetric] less_iff_Suc_add) 
   510 apply (auto simp add: sumr_mult lemma_realpow_diff_sumr2 mult_ac simp
   510 apply (auto simp add: setsum_mult lemma_realpow_diff_sumr2 mult_ac simp
   511                  del: sumr_Suc realpow_Suc)
   511                  del: sumr_Suc realpow_Suc)
   512 done
   512 done
   513 
   513 
   514 lemma lemma_termdiff3:
   514 lemma lemma_termdiff3:
   515      "[| h \<noteq> 0; \<bar>z\<bar> \<le> K; \<bar>z + h\<bar> \<le> K |]  
   515      "[| h \<noteq> 0; \<bar>z\<bar> \<le> K; \<bar>z + h\<bar> \<le> K |]  
   516       ==> abs (((z + h) ^ n - z ^ n) * inverse h - real n * z ^ (n - Suc 0))  
   516       ==> abs (((z + h) ^ n - z ^ n) * inverse h - real n * z ^ (n - Suc 0))  
   517           \<le> real n * real (n - Suc 0) * K ^ (n - 2) * \<bar>h\<bar>"
   517           \<le> real n * real (n - Suc 0) * K ^ (n - 2) * \<bar>h\<bar>"
   518 apply (subst lemma_termdiff2, assumption)
   518 apply (subst lemma_termdiff2, assumption)
   519 apply (simp add: abs_mult mult_commute) 
   519 apply (simp add: abs_mult mult_commute) 
   520 apply (simp add: mult_commute [of _ "K ^ (n - 2)"]) 
   520 apply (simp add: mult_commute [of _ "K ^ (n - 2)"]) 
   521 apply (rule sumr_rabs [THEN real_le_trans])
   521 apply (rule setsum_abs [THEN real_le_trans])
   522 apply (simp add: mult_assoc [symmetric])
   522 apply (simp add: mult_assoc [symmetric])
   523 apply (simp add: mult_commute [of _ "real (n - Suc 0)"])
   523 apply (simp add: mult_commute [of _ "real (n - Suc 0)"])
   524 apply (auto intro!: sumr_bound2 simp add: abs_mult)
   524 apply (auto intro!: sumr_bound2 simp add: abs_mult)
   525 apply (case_tac "n", auto)
   525 apply (case_tac "n", auto)
   526 apply (drule less_add_one)
   526 apply (drule less_add_one)
   533 apply (auto intro!: power_mono simp add: power_abs simp del: sumr_Suc)
   533 apply (auto intro!: power_mono simp add: power_abs simp del: sumr_Suc)
   534 apply (rule_tac j = "real (Suc d) * (K ^ d)" in real_le_trans)
   534 apply (rule_tac j = "real (Suc d) * (K ^ d)" in real_le_trans)
   535 apply (subgoal_tac [2] "0 \<le> K")
   535 apply (subgoal_tac [2] "0 \<le> K")
   536 apply (drule_tac [2] n = d in zero_le_power)
   536 apply (drule_tac [2] n = d in zero_le_power)
   537 apply (auto simp del: sumr_Suc)
   537 apply (auto simp del: sumr_Suc)
   538 apply (rule sumr_rabs [THEN real_le_trans])
   538 apply (rule setsum_abs [THEN real_le_trans])
   539 apply (rule sumr_bound2, auto dest!: less_add_one intro!: mult_mono simp add: abs_mult power_add)
   539 apply (rule sumr_bound2, auto dest!: less_add_one intro!: mult_mono simp add: abs_mult power_add)
   540 apply (auto intro!: power_mono zero_le_power simp add: power_abs, arith+)
   540 apply (auto intro!: power_mono zero_le_power simp add: power_abs, arith+)
   541 done
   541 done
   542 
   542 
   543 lemma lemma_termdiff4: 
   543 lemma lemma_termdiff4: