src/HOL/Hyperreal/Transcendental.thy
changeset 15251 bb6f072c8d10
parent 15241 a3949068537e
child 15383 c49e4225ef4f
equal deleted inserted replaced
15250:217bececa2bd 15251:bb6f072c8d10
   307 done
   307 done
   308 
   308 
   309 lemma lemma_STAR_sin [simp]:
   309 lemma lemma_STAR_sin [simp]:
   310      "(if even n then 0  
   310      "(if even n then 0  
   311        else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) * 0 ^ n = 0"
   311        else (- 1) ^ ((n - Suc 0) div 2)/(real (fact n))) * 0 ^ n = 0"
   312 by (induct_tac "n", auto)
   312 by (induct "n", auto)
   313 
   313 
   314 lemma lemma_STAR_cos [simp]:
   314 lemma lemma_STAR_cos [simp]:
   315      "0 < n -->  
   315      "0 < n -->  
   316       (- 1) ^ (n div 2)/(real (fact n)) * 0 ^ n = 0"
   316       (- 1) ^ (n div 2)/(real (fact n)) * 0 ^ n = 0"
   317 by (induct_tac "n", auto)
   317 by (induct "n", auto)
   318 
   318 
   319 lemma lemma_STAR_cos1 [simp]:
   319 lemma lemma_STAR_cos1 [simp]:
   320      "0 < n -->  
   320      "0 < n -->  
   321       (-1) ^ (n div 2)/(real (fact n)) * 0 ^ n = 0"
   321       (-1) ^ (n div 2)/(real (fact n)) * 0 ^ n = 0"
   322 by (induct_tac "n", auto)
   322 by (induct "n", auto)
   323 
   323 
   324 lemma lemma_STAR_cos2 [simp]:
   324 lemma lemma_STAR_cos2 [simp]:
   325      "sumr 1 n (%n. if even n  
   325      "sumr 1 n (%n. if even n  
   326                     then (- 1) ^ (n div 2)/(real (fact n)) *  
   326                     then (- 1) ^ (n div 2)/(real (fact n)) *  
   327                           0 ^ n  
   327                           0 ^ n  
   328                     else 0) = 0"
   328                     else 0) = 0"
   329 apply (induct_tac "n")
   329 apply (induct "n")
   330 apply (case_tac [2] "n", auto)
   330 apply (case_tac [2] "n", auto)
   331 done
   331 done
   332 
   332 
   333 lemma exp_converges: "(%n. inverse (real (fact n)) * x ^ n) sums exp(x)"
   333 lemma exp_converges: "(%n. inverse (real (fact n)) * x ^ n) sums exp(x)"
   334 apply (simp add: exp_def)
   334 apply (simp add: exp_def)
   351 apply (rule summable_cos [THEN summable_sums])
   351 apply (rule summable_cos [THEN summable_sums])
   352 done
   352 done
   353 
   353 
   354 lemma lemma_realpow_diff [rule_format (no_asm)]:
   354 lemma lemma_realpow_diff [rule_format (no_asm)]:
   355      "p \<le> n --> y ^ (Suc n - p) = ((y::real) ^ (n - p)) * y"
   355      "p \<le> n --> y ^ (Suc n - p) = ((y::real) ^ (n - p)) * y"
   356 apply (induct_tac "n", auto)
   356 apply (induct "n", auto)
   357 apply (subgoal_tac "p = Suc n")
   357 apply (subgoal_tac "p = Suc n")
   358 apply (simp (no_asm_simp), auto)
   358 apply (simp (no_asm_simp), auto)
   359 apply (drule sym)
   359 apply (drule sym)
   360 apply (simp add: Suc_diff_le mult_commute realpow_Suc [symmetric] 
   360 apply (simp add: Suc_diff_le mult_commute realpow_Suc [symmetric] 
   361        del: realpow_Suc)
   361        del: realpow_Suc)
   375 done
   375 done
   376 
   376 
   377 lemma lemma_realpow_diff_sumr2:
   377 lemma lemma_realpow_diff_sumr2:
   378      "x ^ (Suc n) - y ^ (Suc n) =  
   378      "x ^ (Suc n) - y ^ (Suc n) =  
   379       (x - y) * sumr 0 (Suc n) (%p. (x ^ p) * (y ^(n - p)))"
   379       (x - y) * sumr 0 (Suc n) (%p. (x ^ p) * (y ^(n - p)))"
   380 apply (induct_tac "n", simp)
   380 apply (induct "n", simp)
   381 apply (auto simp del: sumr_Suc)
   381 apply (auto simp del: sumr_Suc)
   382 apply (subst sumr_Suc)
   382 apply (subst sumr_Suc)
   383 apply (drule sym)
   383 apply (drule sym)
   384 apply (auto simp add: lemma_realpow_diff_sumr right_distrib diff_minus mult_ac simp del: sumr_Suc)
   384 apply (auto simp add: lemma_realpow_diff_sumr right_distrib diff_minus mult_ac simp del: sumr_Suc)
   385 done
   385 done
   445 text{*Show that we can shift the terms down one*}
   445 text{*Show that we can shift the terms down one*}
   446 lemma lemma_diffs:
   446 lemma lemma_diffs:
   447      "sumr 0 n (%n. (diffs c)(n) * (x ^ n)) =  
   447      "sumr 0 n (%n. (diffs c)(n) * (x ^ n)) =  
   448       sumr 0 n (%n. real n * c(n) * (x ^ (n - Suc 0))) +  
   448       sumr 0 n (%n. real n * c(n) * (x ^ (n - Suc 0))) +  
   449       (real n * c(n) * x ^ (n - Suc 0))"
   449       (real n * c(n) * x ^ (n - Suc 0))"
   450 apply (induct_tac "n")
   450 apply (induct "n")
   451 apply (auto simp add: mult_assoc add_assoc [symmetric] diffs_def)
   451 apply (auto simp add: mult_assoc add_assoc [symmetric] diffs_def)
   452 done
   452 done
   453 
   453 
   454 lemma lemma_diffs2:
   454 lemma lemma_diffs2:
   455      "sumr 0 n (%n. real n * c(n) * (x ^ (n - Suc 0))) =  
   455      "sumr 0 n (%n. real n * c(n) * (x ^ (n - Suc 0))) =  
   891 
   891 
   892 lemma abs_exp_cancel [simp]: "\<bar>exp x\<bar> = exp x"
   892 lemma abs_exp_cancel [simp]: "\<bar>exp x\<bar> = exp x"
   893 by auto
   893 by auto
   894 
   894 
   895 lemma exp_real_of_nat_mult: "exp(real n * x) = exp(x) ^ n"
   895 lemma exp_real_of_nat_mult: "exp(real n * x) = exp(x) ^ n"
   896 apply (induct_tac "n")
   896 apply (induct "n")
   897 apply (auto simp add: real_of_nat_Suc right_distrib exp_add mult_commute)
   897 apply (auto simp add: real_of_nat_Suc right_distrib exp_add mult_commute)
   898 done
   898 done
   899 
   899 
   900 lemma exp_diff: "exp(x - y) = exp(x)/(exp y)"
   900 lemma exp_diff: "exp(x - y) = exp(x)/(exp y)"
   901 apply (simp add: diff_minus divide_inverse)
   901 apply (simp add: diff_minus divide_inverse)
  1550 
  1550 
  1551 lemma cos_periodic [simp]: "cos (x + 2*pi) = cos x"
  1551 lemma cos_periodic [simp]: "cos (x + 2*pi) = cos x"
  1552 by (simp add: cos_add cos_double)
  1552 by (simp add: cos_add cos_double)
  1553 
  1553 
  1554 lemma cos_npi [simp]: "cos (real n * pi) = -1 ^ n"
  1554 lemma cos_npi [simp]: "cos (real n * pi) = -1 ^ n"
  1555 apply (induct_tac "n")
  1555 apply (induct "n")
  1556 apply (auto simp add: real_of_nat_Suc left_distrib)
  1556 apply (auto simp add: real_of_nat_Suc left_distrib)
  1557 done
  1557 done
  1558 
  1558 
  1559 lemma sin_npi [simp]: "sin (real (n::nat) * pi) = 0"
  1559 lemma sin_npi [simp]: "sin (real (n::nat) * pi) = 0"
  1560 apply (induct_tac "n")
  1560 apply (induct "n")
  1561 apply (auto simp add: real_of_nat_Suc left_distrib)
  1561 apply (auto simp add: real_of_nat_Suc left_distrib)
  1562 done
  1562 done
  1563 
  1563 
  1564 lemma sin_npi2 [simp]: "sin (pi * real (n::nat)) = 0"
  1564 lemma sin_npi2 [simp]: "sin (pi * real (n::nat)) = 0"
  1565 apply (cut_tac n = n in sin_npi)
  1565 apply (cut_tac n = n in sin_npi)