src/HOL/Hyperreal/MacLaurin.ML
changeset 14348 744c868ee0b7
parent 14334 6137d24eef79
child 14365 3d4df8c166ae
equal deleted inserted replaced
14347:1fff56703e29 14348:744c868ee0b7
    63 by (asm_simp_tac (HOL_ss addsimps 
    63 by (asm_simp_tac (HOL_ss addsimps 
    64     [CLAIM "(a::real) * (b * (c * d)) = (d * a) * (b * c)"]
    64     [CLAIM "(a::real) * (b * (c * d)) = (d * a) * (b * c)"]
    65      delsimps [realpow_Suc]) 2);
    65      delsimps [realpow_Suc]) 2);
    66 by (stac real_mult_inv_left 2);
    66 by (stac real_mult_inv_left 2);
    67 by (stac real_mult_inv_left 3);
    67 by (stac real_mult_inv_left 3);
    68 by (dtac (realpow_gt_zero RS real_not_refl2 RS not_sym) 2);
    68 by (rtac (real_not_refl2 RS not_sym) 2);
    69 by (assume_tac 2);
    69 by (etac zero_less_power 2);
    70 by (rtac real_of_nat_fact_not_zero 2);
    70 by (rtac real_of_nat_fact_not_zero 2);
    71 by (Simp_tac 2);
    71 by (Simp_tac 2);
    72 by (etac exE 1);
    72 by (etac exE 1);
    73 by (cut_inst_tac [("b","%t. f t - \
    73 by (cut_inst_tac [("b","%t. f t - \
    74 \      (sumr 0 n (%m. (diff m 0 / real (fact m)) * (t ^ m)) + \
    74 \      (sumr 0 n (%m. (diff m 0 / real (fact m)) * (t ^ m)) + \
   279 by (rtac (CLAIM "[| x = x'; y = y' |] ==> x + y = x' + (y'::real)") 1);
   279 by (rtac (CLAIM "[| x = x'; y = y' |] ==> x + y = x' + (y'::real)") 1);
   280 by (rtac sumr_fun_eq 1);
   280 by (rtac sumr_fun_eq 1);
   281 by (Asm_full_simp_tac 1);
   281 by (Asm_full_simp_tac 1);
   282 by (auto_tac (claset(),simpset() addsimps [real_divide_def,
   282 by (auto_tac (claset(),simpset() addsimps [real_divide_def,
   283     CLAIM "((a * b) * c) * d = (b * c) * (a * (d::real))",
   283     CLAIM "((a * b) * c) * d = (b * c) * (a * (d::real))",
   284     realpow_mult RS sym]));
   284     power_mult_distrib RS sym]));
   285 qed "Maclaurin_minus";
   285 qed "Maclaurin_minus";
   286 
   286 
   287 Goal "(h < 0 & 0 < n & diff 0 = f & \
   287 Goal "(h < 0 & 0 < n & diff 0 = f & \
   288 \      (ALL m t. \
   288 \      (ALL m t. \
   289 \         m < n & h <= t & t <= 0 --> DERIV (diff m) t :> diff (Suc m) t))\
   289 \         m < n & h <= t & t <= 0 --> DERIV (diff m) t :> diff (Suc m) t))\
   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,mult_right_mono],
   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,power_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";
   498 by (induct_tac "n" 1);
   498 by (induct_tac "n" 1);
   518 \                      x ^ m)) \
   518 \                      x ^ m)) \
   519 \     + ((sin(t + 1/2 * real (n) *pi) / real (fact n)) * x ^ n)";
   519 \     + ((sin(t + 1/2 * real (n) *pi) / real (fact n)) * x ^ n)";
   520 by (cut_inst_tac [("f","sin"),("n","n"),("x","x"),
   520 by (cut_inst_tac [("f","sin"),("n","n"),("x","x"),
   521        ("diff","%n x. sin(x + 1/2*real (n)*pi)")] 
   521        ("diff","%n x. sin(x + 1/2*real (n)*pi)")] 
   522        Maclaurin_all_lt_objl 1);
   522        Maclaurin_all_lt_objl 1);
   523 by (Step_tac 1);
   523 by (Safe_tac);
   524 by (Simp_tac 1);
   524 by (Simp_tac 1);
   525 by (Simp_tac 1);
   525 by (Simp_tac 1);
   526 by (case_tac "n" 1);
   526 by (case_tac "n" 1);
   527 by (Clarify_tac 1); 
   527 by (Clarify_tac 1); 
   528 by (Asm_full_simp_tac 1);
   528 by (Asm_full_simp_tac 1);