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) |