663 apply (rule_tac [2] powser_inside, rule_tac [4] powser_inside) |
663 apply (rule_tac [2] powser_inside, rule_tac [4] powser_inside) |
664 apply (auto simp add: add_commute) |
664 apply (auto simp add: add_commute) |
665 apply (drule_tac x="(\<lambda>n. c n * (xa + x) ^ n)" in sums_diff, assumption) |
665 apply (drule_tac x="(\<lambda>n. c n * (xa + x) ^ n)" in sums_diff, assumption) |
666 apply (drule_tac x = " (%n. c n * (xa + x) ^ n - c n * x ^ n) " and c = "inverse xa" in sums_mult) |
666 apply (drule_tac x = " (%n. c n * (xa + x) ^ n - c n * x ^ n) " and c = "inverse xa" in sums_mult) |
667 apply (rule sums_unique [symmetric]) |
667 apply (rule sums_unique [symmetric]) |
668 apply (simp add: diff_def real_divide_def add_ac mult_ac) |
668 apply (simp add: diff_def divide_inverse add_ac mult_ac) |
669 apply (rule LIM_zero_cancel) |
669 apply (rule LIM_zero_cancel) |
670 apply (rule_tac g = "%h. suminf (%n. c (n) * ((( ((x + h) ^ n) - (x ^ n)) * inverse h) - (real n * (x ^ (n - Suc 0))))) " in LIM_trans) |
670 apply (rule_tac g = "%h. suminf (%n. c (n) * ((( ((x + h) ^ n) - (x ^ n)) * inverse h) - (real n * (x ^ (n - Suc 0))))) " in LIM_trans) |
671 prefer 2 apply (blast intro: termdiffs_aux) |
671 prefer 2 apply (blast intro: termdiffs_aux) |
672 apply (simp add: LIM_def, safe) |
672 apply (simp add: LIM_def, safe) |
673 apply (rule_tac x = "\<bar>K\<bar> - \<bar>x\<bar>" in exI) |
673 apply (rule_tac x = "\<bar>K\<bar> - \<bar>x\<bar>" in exI) |
1375 apply (subst fact_Suc) |
1375 apply (subst fact_Suc) |
1376 apply (subst real_of_nat_mult) |
1376 apply (subst real_of_nat_mult) |
1377 apply (subst real_of_nat_mult) |
1377 apply (subst real_of_nat_mult) |
1378 apply (subst real_of_nat_mult) |
1378 apply (subst real_of_nat_mult) |
1379 apply (subst real_of_nat_mult) |
1379 apply (subst real_of_nat_mult) |
1380 apply (simp (no_asm) add: real_divide_def inverse_mult_distrib del: fact_Suc) |
1380 apply (simp (no_asm) add: divide_inverse inverse_mult_distrib del: fact_Suc) |
1381 apply (auto simp add: mult_assoc [symmetric] simp del: fact_Suc) |
1381 apply (auto simp add: mult_assoc [symmetric] simp del: fact_Suc) |
1382 apply (rule_tac c="real (Suc (Suc (4*m)))" in mult_less_imp_less_right) |
1382 apply (rule_tac c="real (Suc (Suc (4*m)))" in mult_less_imp_less_right) |
1383 apply (auto simp add: mult_assoc simp del: fact_Suc) |
1383 apply (auto simp add: mult_assoc simp del: fact_Suc) |
1384 apply (rule_tac c="real (Suc (Suc (Suc (4*m))))" in mult_less_imp_less_right) |
1384 apply (rule_tac c="real (Suc (Suc (Suc (4*m))))" in mult_less_imp_less_right) |
1385 apply (auto simp add: mult_assoc mult_less_cancel_left simp del: fact_Suc) |
1385 apply (auto simp add: mult_assoc mult_less_cancel_left simp del: fact_Suc) |
1428 apply (rule_tac y = "sumr 0 (Suc (Suc (Suc 0))) (%n. - ((- 1) ^ n / (real (fact (2 * n))) * 2 ^ (2 * n))) " in order_less_trans) |
1428 apply (rule_tac y = "sumr 0 (Suc (Suc (Suc 0))) (%n. - ((- 1) ^ n / (real (fact (2 * n))) * 2 ^ (2 * n))) " in order_less_trans) |
1429 apply (simp (no_asm) add: fact_num_eq_if realpow_num_eq_if del: fact_Suc realpow_Suc) |
1429 apply (simp (no_asm) add: fact_num_eq_if realpow_num_eq_if del: fact_Suc realpow_Suc) |
1430 apply (simp (no_asm) add: mult_assoc del: sumr_Suc) |
1430 apply (simp (no_asm) add: mult_assoc del: sumr_Suc) |
1431 apply (rule sumr_pos_lt_pair) |
1431 apply (rule sumr_pos_lt_pair) |
1432 apply (erule sums_summable, safe) |
1432 apply (erule sums_summable, safe) |
1433 apply (simp (no_asm) add: real_divide_def mult_assoc [symmetric] del: fact_Suc) |
1433 apply (simp (no_asm) add: divide_inverse mult_assoc [symmetric] del: fact_Suc) |
1434 apply (rule real_mult_inverse_cancel2) |
1434 apply (rule real_mult_inverse_cancel2) |
1435 apply (rule real_of_nat_fact_gt_zero)+ |
1435 apply (rule real_of_nat_fact_gt_zero)+ |
1436 apply (simp (no_asm) add: mult_assoc [symmetric] del: fact_Suc) |
1436 apply (simp (no_asm) add: mult_assoc [symmetric] del: fact_Suc) |
1437 apply (subst fact_lemma) |
1437 apply (subst fact_lemma) |
1438 apply (subst fact_Suc) |
1438 apply (subst fact_Suc) |
1786 |
1786 |
1787 lemma lemma_DERIV_tan: |
1787 lemma lemma_DERIV_tan: |
1788 "cos x \<noteq> 0 ==> DERIV (%x. sin(x)/cos(x)) x :> inverse((cos x)\<twosuperior>)" |
1788 "cos x \<noteq> 0 ==> DERIV (%x. sin(x)/cos(x)) x :> inverse((cos x)\<twosuperior>)" |
1789 apply (rule lemma_DERIV_subst) |
1789 apply (rule lemma_DERIV_subst) |
1790 apply (best intro!: DERIV_intros intro: DERIV_chain2) |
1790 apply (best intro!: DERIV_intros intro: DERIV_chain2) |
1791 apply (auto simp add: real_divide_def numeral_2_eq_2) |
1791 apply (auto simp add: divide_inverse numeral_2_eq_2) |
1792 done |
1792 done |
1793 |
1793 |
1794 lemma DERIV_tan [simp]: "cos x \<noteq> 0 ==> DERIV tan x :> inverse((cos x)\<twosuperior>)" |
1794 lemma DERIV_tan [simp]: "cos x \<noteq> 0 ==> DERIV tan x :> inverse((cos x)\<twosuperior>)" |
1795 by (auto dest: lemma_DERIV_tan simp add: tan_def [symmetric]) |
1795 by (auto dest: lemma_DERIV_tan simp add: tan_def [symmetric]) |
1796 |
1796 |
1814 apply (rule_tac x = " (pi/2) - e" in exI) |
1814 apply (rule_tac x = " (pi/2) - e" in exI) |
1815 apply (simp (no_asm_simp)) |
1815 apply (simp (no_asm_simp)) |
1816 apply (drule_tac x = " (pi/2) - e" in spec) |
1816 apply (drule_tac x = " (pi/2) - e" in spec) |
1817 apply (auto simp add: abs_eqI2 tan_def) |
1817 apply (auto simp add: abs_eqI2 tan_def) |
1818 apply (rule inverse_less_iff_less [THEN iffD1]) |
1818 apply (rule inverse_less_iff_less [THEN iffD1]) |
1819 apply (auto simp add: real_divide_def) |
1819 apply (auto simp add: divide_inverse) |
1820 apply (rule real_mult_order) |
1820 apply (rule real_mult_order) |
1821 apply (subgoal_tac [3] "0 < sin e") |
1821 apply (subgoal_tac [3] "0 < sin e") |
1822 apply (subgoal_tac [3] "0 < cos e") |
1822 apply (subgoal_tac [3] "0 < cos e") |
1823 apply (auto intro: cos_gt_zero sin_gt_zero2 simp add: inverse_mult_distrib abs_mult) |
1823 apply (auto intro: cos_gt_zero sin_gt_zero2 simp add: inverse_mult_distrib abs_mult) |
1824 apply (drule_tac a = "cos e" in positive_imp_inverse_positive) |
1824 apply (drule_tac a = "cos e" in positive_imp_inverse_positive) |
1997 apply (simp only: cos_add sin_add real_of_nat_Suc left_distrib right_distrib, auto) |
1997 apply (simp only: cos_add sin_add real_of_nat_Suc left_distrib right_distrib, auto) |
1998 done |
1998 done |
1999 |
1999 |
2000 lemma lemma_sin_cos_eq2 [simp]: "sin (xa + real (Suc m) * pi / 2) = |
2000 lemma lemma_sin_cos_eq2 [simp]: "sin (xa + real (Suc m) * pi / 2) = |
2001 cos (xa + real (m) * pi / 2)" |
2001 cos (xa + real (m) * pi / 2)" |
2002 apply (simp only: cos_add sin_add real_divide_def real_of_nat_Suc left_distrib right_distrib, auto) |
2002 apply (simp only: cos_add sin_add divide_inverse real_of_nat_Suc left_distrib right_distrib, auto) |
2003 done |
2003 done |
2004 |
2004 |
2005 lemma DERIV_sin_add [simp]: "DERIV (%x. sin (x + k)) xa :> cos (xa + k)" |
2005 lemma DERIV_sin_add [simp]: "DERIV (%x. sin (x + k)) xa :> cos (xa + k)" |
2006 apply (rule lemma_DERIV_subst) |
2006 apply (rule lemma_DERIV_subst) |
2007 apply (rule_tac f = sin and g = "%x. x + k" in DERIV_chain2) |
2007 apply (rule_tac f = sin and g = "%x. x + k" in DERIV_chain2) |
2013 lemma sin_cos_npi [simp]: "sin ((real m + 1/2) * pi) = cos (real m * pi)" |
2013 lemma sin_cos_npi [simp]: "sin ((real m + 1/2) * pi) = cos (real m * pi)" |
2014 by (auto simp add: right_distrib sin_add left_distrib mult_ac) |
2014 by (auto simp add: right_distrib sin_add left_distrib mult_ac) |
2015 |
2015 |
2016 lemma sin_cos_npi2 [simp]: "sin (real (Suc (2 * n)) * pi / 2) = (-1) ^ n" |
2016 lemma sin_cos_npi2 [simp]: "sin (real (Suc (2 * n)) * pi / 2) = (-1) ^ n" |
2017 apply (cut_tac m = n in sin_cos_npi) |
2017 apply (cut_tac m = n in sin_cos_npi) |
2018 apply (simp only: real_of_nat_Suc left_distrib real_divide_def, auto) |
2018 apply (simp only: real_of_nat_Suc left_distrib divide_inverse, auto) |
2019 done |
2019 done |
2020 |
2020 |
2021 lemma cos_2npi [simp]: "cos (2 * real (n::nat) * pi) = 1" |
2021 lemma cos_2npi [simp]: "cos (2 * real (n::nat) * pi) = 1" |
2022 by (simp add: cos_double mult_assoc power_add [symmetric] numeral_2_eq_2) |
2022 by (simp add: cos_double mult_assoc power_add [symmetric] numeral_2_eq_2) |
2023 |
2023 |
2041 apply (simp only: cos_add sin_add real_of_nat_Suc right_distrib left_distrib minus_mult_right, auto) |
2041 apply (simp only: cos_add sin_add real_of_nat_Suc right_distrib left_distrib minus_mult_right, auto) |
2042 done |
2042 done |
2043 |
2043 |
2044 (*NEEDED??*) |
2044 (*NEEDED??*) |
2045 lemma [simp]: "cos (x + real(Suc m) * pi / 2) = -sin (x + real m * pi / 2)" |
2045 lemma [simp]: "cos (x + real(Suc m) * pi / 2) = -sin (x + real m * pi / 2)" |
2046 apply (simp only: cos_add sin_add real_divide_def real_of_nat_Suc left_distrib right_distrib, auto) |
2046 apply (simp only: cos_add sin_add divide_inverse real_of_nat_Suc left_distrib right_distrib, auto) |
2047 done |
2047 done |
2048 |
2048 |
2049 lemma cos_pi_eq_zero [simp]: "cos (pi * real (Suc (2 * m)) / 2) = 0" |
2049 lemma cos_pi_eq_zero [simp]: "cos (pi * real (Suc (2 * m)) / 2) = 0" |
2050 by (simp only: cos_add sin_add real_divide_def real_of_nat_Suc left_distrib right_distrib, auto) |
2050 by (simp only: cos_add sin_add divide_inverse real_of_nat_Suc left_distrib right_distrib, auto) |
2051 |
2051 |
2052 lemma DERIV_cos_add [simp]: "DERIV (%x. cos (x + k)) xa :> - sin (xa + k)" |
2052 lemma DERIV_cos_add [simp]: "DERIV (%x. cos (x + k)) xa :> - sin (xa + k)" |
2053 apply (rule lemma_DERIV_subst) |
2053 apply (rule lemma_DERIV_subst) |
2054 apply (rule_tac f = cos and g = "%x. x + k" in DERIV_chain2) |
2054 apply (rule_tac f = cos and g = "%x. x + k" in DERIV_chain2) |
2055 apply (best intro!: DERIV_intros intro: DERIV_chain2)+ |
2055 apply (best intro!: DERIV_intros intro: DERIV_chain2)+ |
2371 |
2371 |
2372 lemma real_sqrt_divide_less_zero: "0 < y ==> - y / sqrt (x * x + y * y) < 0" |
2372 lemma real_sqrt_divide_less_zero: "0 < y ==> - y / sqrt (x * x + y * y) < 0" |
2373 apply (case_tac "x = 0") |
2373 apply (case_tac "x = 0") |
2374 apply (auto simp add: abs_eqI2) |
2374 apply (auto simp add: abs_eqI2) |
2375 apply (drule_tac y = y in real_sqrt_sum_squares_gt_zero3) |
2375 apply (drule_tac y = y in real_sqrt_sum_squares_gt_zero3) |
2376 apply (auto simp add: zero_less_mult_iff real_divide_def power2_eq_square) |
2376 apply (auto simp add: zero_less_mult_iff divide_inverse power2_eq_square) |
2377 done |
2377 done |
2378 |
2378 |
2379 lemma polar_ex1: "[| x \<noteq> 0; 0 < y |] ==> \<exists>r a. x = r * cos a & y = r * sin a" |
2379 lemma polar_ex1: "[| x \<noteq> 0; 0 < y |] ==> \<exists>r a. x = r * cos a & y = r * sin a" |
2380 apply (rule_tac x = "sqrt (x\<twosuperior> + y\<twosuperior>) " in exI) |
2380 apply (rule_tac x = "sqrt (x\<twosuperior> + y\<twosuperior>) " in exI) |
2381 apply (rule_tac x = "arcos (x / sqrt (x * x + y * y))" in exI) |
2381 apply (rule_tac x = "arcos (x / sqrt (x * x + y * y))" in exI) |