# HG changeset patch # User huffman # Date 1243313707 25200 # Node ID 5155117f9d668740cc4b6742f44e8d8cc093b524 # Parent 6ff48aa6142c7b5f4e9d9d6a934da881fffe770f clean up some proofs diff -r 6ff48aa6142c -r 5155117f9d66 src/HOL/Integration.thy --- a/src/HOL/Integration.thy Sun May 24 15:02:23 2009 +0200 +++ b/src/HOL/Integration.thy Mon May 25 21:55:07 2009 -0700 @@ -55,6 +55,17 @@ \rsum(D,p) f - k\ < e)))" +lemma Integral_def2: + "Integral = (%(a,b) f k. \e>0. (\g. gauge(%x. a \ x & x \ b) g & + (\D p. tpart(a,b) (D,p) & fine(g)(D,p) --> + \rsum(D,p) f - k\ \ e)))" +unfolding Integral_def +apply (safe intro!: ext) +apply (fast intro: less_imp_le) +apply (drule_tac x="e/2" in spec) +apply force +done + lemma psize_unique: assumes 1: "\n < N. D(n) < D(Suc n)" assumes 2: "\n \ N. D(n) = D(N)" @@ -379,14 +390,12 @@ *) -(* new simplifications e.g. (y < x/n) = (y * n < x) are a real nuisance - they break the original proofs and make new proofs longer!*) lemma strad1: - "\\xa::real. xa \ x \ \xa - x\ < s \ - \(f xa - f x) / (xa - x) - f' x\ * 2 < e; - 0 < e; a \ x; x \ b; 0 < s\ - \ \z. \z - x\ < s -->\f z - f x - f' x * (z - x)\ * 2 \ e * \z - x\" -apply auto + "\\z::real. z \ x \ \z - x\ < s \ + \(f z - f x) / (z - x) - f' x\ < e/2; + 0 < s; 0 < e; a \ x; x \ b\ + \ \z. \z - x\ < s -->\f z - f x - f' x * (z - x)\ \ e/2 * \z - x\" +apply clarify apply (case_tac "0 < \z - x\") prefer 2 apply (simp add: zero_less_abs_iff) apply (drule_tac x = z in spec) @@ -405,68 +414,75 @@ done lemma lemma_straddle: - "[| \x. a \ x & x \ b --> DERIV f x :> f'(x); 0 < e |] - ==> \g. gauge(%x. a \ x & x \ b) g & + assumes f': "\x. a \ x & x \ b --> DERIV f x :> f'(x)" and "0 < e" + shows "\g. gauge(%x. a \ x & x \ b) g & (\x u v. a \ u & u \ x & x \ v & v \ b & (v - u) < g(x) --> \(f(v) - f(u)) - (f'(x) * (v - u))\ \ e * (v - u))" -apply (simp add: gauge_def) -apply (subgoal_tac "\x. a \ x & x \ b --> +proof - + have "\x. a \ x & x \ b --> (\d > 0. \u v. u \ x & x \ v & (v - u) < d --> - \(f (v) - f (u)) - (f' (x) * (v - u))\ \ e * (v - u))") -apply (drule choiceP, auto) -apply (drule spec, auto) -apply (auto simp add: DERIV_iff2 LIM_def) -apply (drule_tac x = "e/2" in spec, auto) -apply (frule strad1, assumption+) -apply (rule_tac x = s in exI, auto) -apply (rule_tac x = u and y = v in linorder_cases, auto) -apply (rule_tac y = "\(f (v) - f (x)) - (f' (x) * (v - x))\ + - \(f (x) - f (u)) - (f' (x) * (x - u))\" - in order_trans) -apply (rule abs_triangle_ineq [THEN [2] order_trans]) -apply (simp add: right_diff_distrib) -apply (rule_tac t = "e* (v - u)" in real_sum_of_halves [THEN subst]) -apply (rule add_mono) -apply (rule_tac y = "(e/2) * \v - x\" in order_trans) - prefer 2 apply simp -apply (erule_tac [!] V= "\x'. x' ~= x & \x' - x\ < s --> ?P x'" in thin_rl) -apply (drule_tac x = v in spec, simp add: times_divide_eq) -apply (drule_tac x = u in spec, auto) -apply (subgoal_tac "\f u - f x - f' x * (u - x)\ = \f x - f u - f' x * (x - u)\") -apply (rule order_trans) -apply (auto simp add: abs_le_iff) -apply (simp add: right_diff_distrib) -done + \(f(v) - f(u)) - (f'(x) * (v - u))\ \ e * (v - u))" + proof (clarify) + fix x :: real assume "a \ x" and "x \ b" + with f' have "DERIV f x :> f'(x)" by simp + then have "\r>0. \s>0. \z. z \ x \ \z - x\ < s \ \(f z - f x) / (z - x) - f' x\ < r" + by (simp add: DERIV_iff2 LIM_def) + with `0 < e` obtain s + where "\z. z \ x \ \z - x\ < s \ \(f z - f x) / (z - x) - f' x\ < e/2" and "0 < s" + by (drule_tac x="e/2" in spec, auto) + then have strad [rule_format]: + "\z. \z - x\ < s --> \f z - f x - f' x * (z - x)\ \ e/2 * \z - x\" + using `0 < e` `a \ x` `x \ b` by (rule strad1) + show "\d>0. \u v. u \ x \ x \ v \ v - u < d \ \f v - f u - f' x * (v - u)\ \ e * (v - u)" + proof (safe intro!: exI) + show "0 < s" by fact + next + fix u v :: real assume "u \ x" and "x \ v" and "v - u < s" + have "\f v - f u - f' x * (v - u)\ = + \(f v - f x - f' x * (v - x)) + (f x - f u - f' x * (x - u))\" + by (simp add: right_diff_distrib) + also have "\ \ \f v - f x - f' x * (v - x)\ + \f x - f u - f' x * (x - u)\" + by (rule abs_triangle_ineq) + also have "\ = \f v - f x - f' x * (v - x)\ + \f u - f x - f' x * (u - x)\" + by (simp add: right_diff_distrib) + also have "\ \ (e/2) * \v - x\ + (e/2) * \u - x\" + using `u \ x` `x \ v` `v - u < s` by (intro add_mono strad, simp_all) + also have "\ \ e * (v - u) / 2 + e * (v - u) / 2" + using `u \ x` `x \ v` `0 < e` by (intro add_mono, simp_all) + also have "\ = e * (v - u)" + by simp + finally show "\f v - f u - f' x * (v - u)\ \ e * (v - u)" . + qed + qed + thus ?thesis + by (simp add: gauge_def) (drule choiceP, auto) +qed lemma FTC1: "[|a \ b; \x. a \ x & x \ b --> DERIV f x :> f'(x) |] ==> Integral(a,b) f' (f(b) - f(a))" -apply (drule order_le_imp_less_or_eq, auto) -apply (auto simp add: Integral_def) -apply (rule ccontr) -apply (subgoal_tac "\e > 0. \g. gauge (%x. a \ x & x \ b) g & (\D p. tpart (a, b) (D, p) & fine g (D, p) --> \rsum (D, p) f' - (f b - f a)\ \ e)") -apply (rotate_tac 3) -apply (drule_tac x = "e/2" in spec, auto) -apply (drule spec, auto) -apply ((drule spec)+, auto) -apply (drule_tac e = "ea/ (b - a)" in lemma_straddle) -apply (auto simp add: zero_less_divide_iff) -apply (rule exI) -apply (auto simp add: tpart_def rsum_def) -apply (subgoal_tac "(\n=0..n=0..n=0..n=0..