clean up some rsum proofs
authorhuffman
Tue, 26 May 2009 07:39:52 -0700
changeset 31251547bf9819d6c
parent 31250 cf75908fd3c3
child 31252 43a418a41317
clean up some rsum proofs
src/HOL/Integration.thy
     1.1 --- a/src/HOL/Integration.thy	Tue May 26 13:40:50 2009 +0200
     1.2 +++ b/src/HOL/Integration.thy	Tue May 26 07:39:52 2009 -0700
     1.3 @@ -66,6 +66,20 @@
     1.4  apply force
     1.5  done
     1.6  
     1.7 +lemma rsum_zero [simp]: "rsum (D,p) (\<lambda>x. 0) = 0"
     1.8 +unfolding rsum_def by simp
     1.9 +
    1.10 +lemma rsum_left_distrib: "rsum (D,p) f * c = rsum (D,p) (\<lambda>x. f x * c)"
    1.11 +unfolding rsum_def
    1.12 +by (simp add: setsum_left_distrib setsum_right_distrib algebra_simps)
    1.13 +
    1.14 +lemma rsum_right_distrib: "c * rsum (D,p) f = rsum (D,p) (\<lambda>x. c * f x)"
    1.15 +unfolding rsum_def
    1.16 +by (simp add: setsum_left_distrib setsum_right_distrib algebra_simps)
    1.17 +
    1.18 +lemma rsum_add: "rsum (D, p) (%x. f x + g x) =  rsum (D, p) f + rsum(D, p) g"
    1.19 +by (simp add: rsum_def setsum_addf left_distrib)
    1.20 +
    1.21  lemma psize_unique:
    1.22    assumes 1: "\<forall>n < N. D(n) < D(Suc n)"
    1.23    assumes 2: "\<forall>n \<ge> N. D(n) = D(N)"
    1.24 @@ -365,16 +379,15 @@
    1.25       "[| a \<le> b; Integral(a,b) f k |] ==> Integral(a,b) (%x. c * f x) (c * k)"
    1.26  apply (auto simp add: order_le_less 
    1.27              dest: Integral_unique [OF order_refl Integral_zero])
    1.28 -apply (auto simp add: rsum_def Integral_def setsum_right_distrib[symmetric] mult_assoc)
    1.29 -apply (rule_tac a2 = c in abs_ge_zero [THEN order_le_imp_less_or_eq, THEN disjE])
    1.30 - prefer 2 apply force
    1.31 -apply (drule_tac x = "e/abs c" in spec, auto)
    1.32 -apply (simp add: zero_less_mult_iff divide_inverse)
    1.33 -apply (rule exI, auto)
    1.34 -apply (drule spec)+
    1.35 -apply auto
    1.36 -apply (rule_tac z1 = "inverse (abs c)" in real_mult_less_iff1 [THEN iffD1])
    1.37 -apply (auto simp add: abs_mult divide_inverse [symmetric] right_diff_distrib [symmetric])
    1.38 +apply (auto simp add: Integral_def setsum_right_distrib[symmetric] mult_assoc)
    1.39 +apply (case_tac "c = 0", force)
    1.40 +apply (drule_tac x = "e/abs c" in spec)
    1.41 +apply (simp add: divide_pos_pos)
    1.42 +apply clarify
    1.43 +apply (rule_tac x="g" in exI, clarify)
    1.44 +apply (drule_tac x="D" in spec, drule_tac x="p" in spec)
    1.45 +apply (simp add: pos_less_divide_eq abs_mult [symmetric]
    1.46 +                 algebra_simps rsum_right_distrib)
    1.47  done
    1.48  
    1.49  text{*Fundamental theorem of calculus (Part I)*}
    1.50 @@ -759,9 +772,6 @@
    1.51  apply arith
    1.52  done
    1.53  
    1.54 -lemma rsum_add: "rsum (D, p) (%x. f x + g x) =  rsum (D, p) f + rsum(D, p) g"
    1.55 -by (simp add: rsum_def setsum_addf left_distrib)
    1.56 -
    1.57  text{* Bartle/Sherbert: Theorem 10.1.5 p. 278 *}
    1.58  lemma Integral_add_fun:
    1.59      "[| a \<le> b; Integral(a,b) f k1; Integral(a,b) g k2 |]