src/HOL/Hyperreal/Series.ML
changeset 12486 0ed8bdd883e0
parent 12481 ea5d6da573c5
child 14288 d149e3cbdb39
equal deleted inserted replaced
12485:3df60299a6d0 12486:0ed8bdd883e0
   281 (*
   281 (*
   282 Goalw [sums_def,LIMSEQ_def] 
   282 Goalw [sums_def,LIMSEQ_def] 
   283      "(ALL m. n <= Suc m --> f(m) = 0) ==> f sums (sumr 0 n f)";
   283      "(ALL m. n <= Suc m --> f(m) = 0) ==> f sums (sumr 0 n f)";
   284 by (Step_tac 1);
   284 by (Step_tac 1);
   285 by (res_inst_tac [("x","n")] exI 1);
   285 by (res_inst_tac [("x","n")] exI 1);
   286 by (Step_tac 1 THEN forward_tac [le_imp_less_or_eq] 1);
   286 by (Step_tac 1 THEN ftac le_imp_less_or_eq 1);
   287 by (Step_tac 1);
   287 by (Step_tac 1);
   288 by (dres_inst_tac [("f","f")] sumr_split_add_minus 1);
   288 by (dres_inst_tac [("f","f")] sumr_split_add_minus 1);
   289 by (ALLGOALS (Asm_simp_tac));
   289 by (ALLGOALS (Asm_simp_tac));
   290 by (dtac (conjI RS sumr_interval_const) 1);
   290 by (dtac (conjI RS sumr_interval_const) 1);
   291 by (Auto_tac);
   291 by (Auto_tac);
   295 
   295 
   296 Goalw [sums_def,LIMSEQ_def] 
   296 Goalw [sums_def,LIMSEQ_def] 
   297      "(ALL m. n <= m --> f(m) = 0) ==> f sums (sumr 0 n f)";
   297      "(ALL m. n <= m --> f(m) = 0) ==> f sums (sumr 0 n f)";
   298 by (Step_tac 1);
   298 by (Step_tac 1);
   299 by (res_inst_tac [("x","n")] exI 1);
   299 by (res_inst_tac [("x","n")] exI 1);
   300 by (Step_tac 1 THEN forward_tac [le_imp_less_or_eq] 1);
   300 by (Step_tac 1 THEN ftac le_imp_less_or_eq 1);
   301 by (Step_tac 1);
   301 by (Step_tac 1);
   302 by (dres_inst_tac [("f","f")] sumr_split_add_minus 1);
   302 by (dres_inst_tac [("f","f")] sumr_split_add_minus 1);
   303 by (ALLGOALS (Asm_simp_tac));
   303 by (ALLGOALS (Asm_simp_tac));
   304 by (dtac (conjI RS sumr_interval_const2) 1);
   304 by (dtac (conjI RS sumr_interval_const2) 1);
   305 by (Auto_tac);
   305 by (Auto_tac);
   569 by (dtac Suc_le_imp_diff_ge2 1 THEN Auto_tac);
   569 by (dtac Suc_le_imp_diff_ge2 1 THEN Auto_tac);
   570 qed "ratio_test_lemma2";
   570 qed "ratio_test_lemma2";
   571 
   571 
   572 Goal "[| c < 1; ALL n. N <= n --> abs(f(Suc n)) <= c*abs(f n) |] \
   572 Goal "[| c < 1; ALL n. N <= n --> abs(f(Suc n)) <= c*abs(f n) |] \
   573 \     ==> summable f";
   573 \     ==> summable f";
   574 by (forward_tac [ratio_test_lemma2] 1);
   574 by (ftac ratio_test_lemma2 1);
   575 by Auto_tac;  
   575 by Auto_tac;  
   576 by (res_inst_tac [("g","%n. (abs (f N)/(c ^ N))*c ^ n")] 
   576 by (res_inst_tac [("g","%n. (abs (f N)/(c ^ N))*c ^ n")] 
   577     summable_comparison_test 1);
   577     summable_comparison_test 1);
   578 by (res_inst_tac [("x","N")] exI 1 THEN Step_tac 1);
   578 by (res_inst_tac [("x","N")] exI 1 THEN Step_tac 1);
   579 by (dtac (le_Suc_ex_iff RS iffD1) 1);
   579 by (dtac (le_Suc_ex_iff RS iffD1) 1);