src/HOL/Hyperreal/Series.thy
changeset 20217 25b068a99d2b
parent 19765 dfe940911617
child 20254 58b71535ed00
equal deleted inserted replaced
20216:f30b73385060 20217:25b068a99d2b
   272   "[|\<forall>d. - f (n + (d + d)) < (f (Suc (n + (d + d))) :: real) |]
   272   "[|\<forall>d. - f (n + (d + d)) < (f (Suc (n + (d + d))) :: real) |]
   273    ==> setsum f {0..<n+Suc(Suc 0)} \<le> setsum f {0..<Suc(Suc 0) * Suc no + n}"
   273    ==> setsum f {0..<n+Suc(Suc 0)} \<le> setsum f {0..<Suc(Suc 0) * Suc no + n}"
   274 apply (induct "no", auto)
   274 apply (induct "no", auto)
   275 apply (drule_tac x = "Suc no" in spec)
   275 apply (drule_tac x = "Suc no" in spec)
   276 apply (simp add: add_ac)
   276 apply (simp add: add_ac)
   277 (* FIXME why does simp require a separate step to prove the (pure arithmetic)
       
   278    left-over? With del cong: strong_setsum_cong it works!
       
   279 *)
       
   280 apply simp
       
   281 done
   277 done
   282 
   278 
   283 lemma sumr_pos_lt_pair:
   279 lemma sumr_pos_lt_pair:
   284      "[|summable f; 
   280      "[|summable f; 
   285         \<forall>d. 0 < (f(n + (Suc(Suc 0) * d))) + f(n + ((Suc(Suc 0) * d) + 1))|]  
   281         \<forall>d. 0 < (f(n + (Suc(Suc 0) * d))) + f(n + ((Suc(Suc 0) * d) + 1))|]  
   297 apply (subgoal_tac "suminf f + (f (n) + f (n + 1)) \<le>
   293 apply (subgoal_tac "suminf f + (f (n) + f (n + 1)) \<le>
   298  setsum f {0 ..< Suc (Suc 0) * (Suc no) + n}")
   294  setsum f {0 ..< Suc (Suc 0) * (Suc no) + n}")
   299 apply (rule_tac [2] y = "setsum f {0..<n+ Suc (Suc 0)}" in order_trans)
   295 apply (rule_tac [2] y = "setsum f {0..<n+ Suc (Suc 0)}" in order_trans)
   300 prefer 3 apply assumption
   296 prefer 3 apply assumption
   301 apply (rule_tac [2] y = "setsum f {0..<n} + (f (n) + f (n + 1))" in order_trans)
   297 apply (rule_tac [2] y = "setsum f {0..<n} + (f (n) + f (n + 1))" in order_trans)
   302 apply simp_all 
   298 apply simp_all
   303 apply (subgoal_tac "suminf f \<le> setsum f {0..< Suc (Suc 0) * (Suc no) + n}")
       
   304 apply (rule_tac [2] y = "suminf f + (f (n) + f (n + 1))" in order_trans)
       
   305 prefer 3 apply simp
       
   306 apply (drule_tac [2] x = 0 in spec)
       
   307  prefer 2 apply simp 
       
   308 apply (subgoal_tac "0 \<le> setsum f {0 ..< Suc (Suc 0) * Suc no + n} + - suminf f")
       
   309 apply (simp add: abs_if)
       
   310 apply (auto simp add: linorder_not_less [symmetric])
       
   311 done
   299 done
   312 
   300 
   313 text{*A summable series of positive terms has limit that is at least as
   301 text{*A summable series of positive terms has limit that is at least as
   314 great as any partial sum.*}
   302 great as any partial sum.*}
   315 
   303