99 by DERIV_tac; |
99 by DERIV_tac; |
100 by (rtac lemma_DERIV_subst 3); |
100 by (rtac lemma_DERIV_subst 3); |
101 by (rtac DERIV_quotient 3); |
101 by (rtac DERIV_quotient 3); |
102 by (rtac DERIV_const 4); |
102 by (rtac DERIV_const 4); |
103 by (rtac DERIV_pow 3); |
103 by (rtac DERIV_pow 3); |
104 by (asm_simp_tac (simpset() addsimps [real_inverse_distrib, |
104 by (asm_simp_tac (simpset() addsimps [inverse_mult_distrib, |
105 CLAIM_SIMP "(a::real) * b * c * (d * e) = a * b * (c * d) * e" |
105 CLAIM_SIMP "(a::real) * b * c * (d * e) = a * b * (c * d) * e" |
106 real_mult_ac,fact_diff_Suc]) 4); |
106 mult_ac,fact_diff_Suc]) 4); |
107 by (Asm_simp_tac 3); |
107 by (Asm_simp_tac 3); |
108 by (forw_inst_tac [("m","ma")] less_add_one 2); |
108 by (forw_inst_tac [("m","ma")] less_add_one 2); |
109 by (Clarify_tac 2); |
109 by (Clarify_tac 2); |
110 by (asm_simp_tac (simpset() addsimps |
110 by (asm_simp_tac (simpset() addsimps |
111 [CLAIM "Suc m = ma + d + 1 ==> m - ma = d"] |
111 [CLAIM "Suc m = ma + d + 1 ==> m - ma = d"] |
124 by (rtac DERIV_cmult 2); |
124 by (rtac DERIV_cmult 2); |
125 by (rtac lemma_DERIV_subst 2); |
125 by (rtac lemma_DERIV_subst 2); |
126 by DERIV_tac; |
126 by DERIV_tac; |
127 by (stac fact_Suc 2); |
127 by (stac fact_Suc 2); |
128 by (stac real_of_nat_mult 2); |
128 by (stac real_of_nat_mult 2); |
129 by (simp_tac (simpset() addsimps [real_inverse_distrib] @ |
129 by (simp_tac (simpset() addsimps [inverse_mult_distrib] @ |
130 real_mult_ac) 2); |
130 mult_ac) 2); |
131 by (subgoal_tac "ALL ma. ma < n --> \ |
131 by (subgoal_tac "ALL ma. ma < n --> \ |
132 \ (EX t. 0 < t & t < h & difg (Suc ma) t = 0)" 1); |
132 \ (EX t. 0 < t & t < h & difg (Suc ma) t = 0)" 1); |
133 by (rotate_tac 11 1); |
133 by (rotate_tac 11 1); |
134 by (dres_inst_tac [("x","m")] spec 1); |
134 by (dres_inst_tac [("x","m")] spec 1); |
135 by (etac impE 1); |
135 by (etac impE 1); |
265 by (cut_inst_tac [("f","%x. f (-x)"), |
265 by (cut_inst_tac [("f","%x. f (-x)"), |
266 ("diff","%n x. ((- 1) ^ n) * diff n (-x)"), |
266 ("diff","%n x. ((- 1) ^ n) * diff n (-x)"), |
267 ("h","-h"),("n","n")] Maclaurin_objl 1); |
267 ("h","-h"),("n","n")] Maclaurin_objl 1); |
268 by (Asm_full_simp_tac 1); |
268 by (Asm_full_simp_tac 1); |
269 by (etac impE 1 THEN Step_tac 1); |
269 by (etac impE 1 THEN Step_tac 1); |
270 by (stac real_minus_mult_eq2 1); |
270 by (stac minus_mult_right 1); |
271 by (rtac DERIV_cmult 1); |
271 by (rtac DERIV_cmult 1); |
272 by (rtac lemma_DERIV_subst 1); |
272 by (rtac lemma_DERIV_subst 1); |
273 by (rtac (read_instantiate [("g","uminus")] DERIV_chain2) 1); |
273 by (rtac (read_instantiate [("g","uminus")] DERIV_chain2) 1); |
274 by (rtac DERIV_minus 2 THEN rtac DERIV_Id 2); |
274 by (rtac DERIV_minus 2 THEN rtac DERIV_Id 2); |
275 by (Force_tac 2); |
275 by (Force_tac 2); |
444 Goal "d < (4::nat) ==> d = 0 | d = 1 | d = 2 | d = 3"; |
444 Goal "d < (4::nat) ==> d = 0 | d = 1 | d = 2 | d = 3"; |
445 by (case_tac "d" 1 THEN Auto_tac); |
445 by (case_tac "d" 1 THEN Auto_tac); |
446 qed "lemma_exhaust_less_4"; |
446 qed "lemma_exhaust_less_4"; |
447 |
447 |
448 bind_thm ("real_mult_le_lemma", |
448 bind_thm ("real_mult_le_lemma", |
449 simplify (simpset()) (inst "y" "1" real_mult_le_le_mono2)); |
449 simplify (simpset()) (inst "b" "1" mult_right_mono)); |
450 |
450 |
451 |
451 |
452 Goal "abs(sin x - \ |
452 Goal "abs(sin x - \ |
453 \ sumr 0 n (%m. (if even m then 0 \ |
453 \ sumr 0 n (%m. (if even m then 0 \ |
454 \ else ((- 1) ^ ((m - (Suc 0)) div 2)) / real (fact m)) * \ |
454 \ else ((- 1) ^ ((m - (Suc 0)) div 2)) / real (fact m)) * \ |
487 by (asm_simp_tac (simpset() addsimps [even_num_iff]) 2); |
487 by (asm_simp_tac (simpset() addsimps [even_num_iff]) 2); |
488 by (dtac lemma_even_mod_4_div_2 1); |
488 by (dtac lemma_even_mod_4_div_2 1); |
489 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2,real_divide_def]) 1); |
489 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2,real_divide_def]) 1); |
490 by (dtac lemma_odd_mod_4_div_2 1); |
490 by (dtac lemma_odd_mod_4_div_2 1); |
491 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2, real_divide_def]) 1); |
491 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2, real_divide_def]) 1); |
492 by (auto_tac (claset() addSIs [real_mult_le_lemma,real_mult_le_le_mono2], |
492 by (auto_tac (claset() addSIs [real_mult_le_lemma,mult_right_mono], |
493 simpset() addsimps [real_divide_def,abs_mult,abs_inverse,realpow_abs RS |
493 simpset() addsimps [real_divide_def,abs_mult,abs_inverse,realpow_abs RS |
494 sym])); |
494 sym])); |
495 qed "Maclaurin_sin_bound"; |
495 qed "Maclaurin_sin_bound"; |
496 |
496 |
497 Goal "0 < n --> Suc (Suc (2 * n - 2)) = 2*n"; |
497 Goal "0 < n --> Suc (Suc (2 * n - 2)) = 2*n"; |
658 by (arith_tac 1); |
658 by (arith_tac 1); |
659 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
659 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
660 by (rtac sumr_fun_eq 1); |
660 by (rtac sumr_fun_eq 1); |
661 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
661 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
662 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
662 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
663 even_mult_two_ex,real_add_mult_distrib,cos_add] delsimps |
663 even_mult_two_ex,left_distrib,cos_add] delsimps |
664 [fact_Suc,realpow_Suc])); |
664 [fact_Suc,realpow_Suc])); |
665 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
665 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
666 qed "Maclaurin_cos_expansion"; |
666 qed "Maclaurin_cos_expansion"; |
667 |
667 |
668 Goal "[| 0 < x; 0 < n |] ==> \ |
668 Goal "[| 0 < x; 0 < n |] ==> \ |
685 by (assume_tac 1 THEN assume_tac 1); |
685 by (assume_tac 1 THEN assume_tac 1); |
686 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
686 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
687 by (rtac sumr_fun_eq 1); |
687 by (rtac sumr_fun_eq 1); |
688 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
688 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
689 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
689 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
690 even_mult_two_ex,real_add_mult_distrib,cos_add] delsimps |
690 even_mult_two_ex,left_distrib,cos_add] delsimps |
691 [fact_Suc,realpow_Suc])); |
691 [fact_Suc,realpow_Suc])); |
692 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
692 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
693 qed "Maclaurin_cos_expansion2"; |
693 qed "Maclaurin_cos_expansion2"; |
694 |
694 |
695 Goal "[| x < 0; 0 < n |] ==> \ |
695 Goal "[| x < 0; 0 < n |] ==> \ |
712 by (assume_tac 1 THEN assume_tac 1); |
712 by (assume_tac 1 THEN assume_tac 1); |
713 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
713 by (rtac (CLAIM "[|x = y; x' = y'|] ==> x + x' = y + (y'::real)") 1); |
714 by (rtac sumr_fun_eq 1); |
714 by (rtac sumr_fun_eq 1); |
715 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
715 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym])); |
716 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
716 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex, |
717 even_mult_two_ex,real_add_mult_distrib,cos_add] delsimps |
717 even_mult_two_ex,left_distrib,cos_add] delsimps |
718 [fact_Suc,realpow_Suc])); |
718 [fact_Suc,realpow_Suc])); |
719 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
719 by (auto_tac (claset(),simpset() addsimps [real_mult_commute])); |
720 qed "Maclaurin_minus_cos_expansion"; |
720 qed "Maclaurin_minus_cos_expansion"; |
721 |
721 |
722 (* ------------------------------------------------------------------------- *) |
722 (* ------------------------------------------------------------------------- *) |