# HG changeset patch # User nipkow # Date 1101984121 -3600 # Node ID 300e09825d8b64d6d1bd5d7ef08122339efbfd61 # Parent 8bad1f42fec06c0c442f8008b22d857425f820d3 Added "ALL x > y" and relatives. diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/HOL.thy --- a/src/HOL/HOL.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/HOL.thy Thu Dec 02 11:42:01 2004 +0100 @@ -1109,12 +1109,22 @@ "_leAll" :: "[idt, 'a, bool] => bool" ("(3ALL _<=_./ _)" [0, 0, 10] 10) "_leEx" :: "[idt, 'a, bool] => bool" ("(3EX _<=_./ _)" [0, 0, 10] 10) + "_gtAll" :: "[idt, 'a, bool] => bool" ("(3ALL _>_./ _)" [0, 0, 10] 10) + "_gtEx" :: "[idt, 'a, bool] => bool" ("(3EX _>_./ _)" [0, 0, 10] 10) + "_geAll" :: "[idt, 'a, bool] => bool" ("(3ALL _>=_./ _)" [0, 0, 10] 10) + "_geEx" :: "[idt, 'a, bool] => bool" ("(3EX _>=_./ _)" [0, 0, 10] 10) + syntax (xsymbols) "_lessAll" :: "[idt, 'a, bool] => bool" ("(3\_<_./ _)" [0, 0, 10] 10) "_lessEx" :: "[idt, 'a, bool] => bool" ("(3\_<_./ _)" [0, 0, 10] 10) "_leAll" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) "_leEx" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + "_gtAll" :: "[idt, 'a, bool] => bool" ("(3\_>_./ _)" [0, 0, 10] 10) + "_gtEx" :: "[idt, 'a, bool] => bool" ("(3\_>_./ _)" [0, 0, 10] 10) + "_geAll" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + "_geEx" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + syntax (HOL) "_lessAll" :: "[idt, 'a, bool] => bool" ("(3! _<_./ _)" [0, 0, 10] 10) "_lessEx" :: "[idt, 'a, bool] => bool" ("(3? _<_./ _)" [0, 0, 10] 10) @@ -1127,11 +1137,20 @@ "_leAll" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) "_leEx" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + "_gtAll" :: "[idt, 'a, bool] => bool" ("(3\_>_./ _)" [0, 0, 10] 10) + "_gtEx" :: "[idt, 'a, bool] => bool" ("(3\_>_./ _)" [0, 0, 10] 10) + "_geAll" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + "_geEx" :: "[idt, 'a, bool] => bool" ("(3\_\_./ _)" [0, 0, 10] 10) + translations "ALL x "ALL x. x < y --> P" "EX x "EX x. x < y & P" "ALL x<=y. P" => "ALL x. x <= y --> P" "EX x<=y. P" => "EX x. x <= y & P" + "ALL x>y. P" => "ALL x. x > y --> P" + "EX x>y. P" => "EX x. x > y & P" + "ALL x>=y. P" => "ALL x. x >= y --> P" + "EX x>=y. P" => "EX x. x >= y & P" print_translation {* let diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/HyperPow.thy --- a/src/HOL/Hyperreal/HyperPow.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/HyperPow.thy Thu Dec 02 11:42:01 2004 +0100 @@ -7,7 +7,7 @@ header{*Exponentials on the Hyperreals*} theory HyperPow -imports HyperArith HyperNat "../Real/RealPow" +imports HyperArith HyperNat begin instance hypreal :: power .. diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/Integration.thy --- a/src/HOL/Hyperreal/Integration.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/Integration.thy Thu Dec 02 11:42:01 2004 +0100 @@ -17,13 +17,13 @@ --{*Partitions and tagged partitions etc.*} partition :: "[(real*real),nat => real] => bool" - "partition == %(a,b) D. ((D 0 = a) & - (\N. ((\n. n < N --> D(n) < D(Suc n)) & - (\n. N \ n --> (D(n) = b)))))" + "partition == %(a,b) D. D 0 = a & + (\N. (\n < N. D(n) < D(Suc n)) & + (\n \ N. D(n) = b))" psize :: "(nat => real) => nat" - "psize D == @N. (\n. n < N --> D(n) < D(Suc n)) & - (\n. N \ n --> (D(n) = D(N)))" + "psize D == SOME N. (\n < N. D(n) < D(Suc n)) & + (\n \ N. D(n) = D(N))" tpart :: "[(real*real),((nat => real)*(nat =>real))] => bool" "tpart == %(a,b) (D,p). partition(a,b) D & @@ -45,7 +45,7 @@ --{*Gauge integrability (definite)*} Integral :: "[(real*real),real=>real,real] => bool" - "Integral == %(a,b) f k. \e. 0 < e --> + "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))" @@ -70,8 +70,8 @@ lemma partition: "(partition(a,b) D) = ((D 0 = a) & - (\n. n < (psize D) --> D n < D(Suc n)) & - (\n. (psize D) \ n --> (D n = b)))" + (\n < psize D. D n < D(Suc n)) & + (\n \ psize D. D n = b))" apply (simp add: partition_def, auto) apply (subgoal_tac [!] "psize D = N", auto) apply (simp_all (no_asm) add: psize_def) @@ -181,13 +181,11 @@ lemma lemma_partition_append1: "[| partition (a, b) D1; partition (b, c) D2 |] - ==> (\n. - n < psize D1 + psize D2 --> + ==> (\n < psize D1 + psize D2. (if n < psize D1 then D1 n else D2 (n - psize D1)) < (if Suc n < psize D1 then D1 (Suc n) else D2 (Suc n - psize D1))) & - (\n. - psize D1 + psize D2 \ n --> + (\n \ psize D1 + psize D2. (if n < psize D1 then D1 n else D2 (n - psize D1)) = (if psize D1 + psize D2 < psize D1 then D1 (psize D1 + psize D2) else D2 (psize D1 + psize D2 - psize D1)))" @@ -412,9 +410,8 @@ --> \(f(v) - f(u)) - (f'(x) * (v - u))\ \ e * (v - u))" apply (simp add: gauge_def) apply (subgoal_tac "\x. a \ x & x \ b --> - (\d. 0 < d & - (\u v. u \ x & x \ v & (v - u) < d --> - \(f (v) - f (u)) - (f' (x) * (v - u))\ \ e * (v - u)))") + (\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) @@ -445,7 +442,7 @@ apply (drule order_le_imp_less_or_eq, auto) apply (auto simp add: Integral_def) apply (rule ccontr) -apply (subgoal_tac "\e. 0 < e --> (\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 (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) @@ -796,7 +793,7 @@ lemma lemma_Integral_le: "[| \x. a \ x & x \ b --> f x \ g x; tpart(a,b) (D,p) - |] ==> \n. n \ psize D --> f (p n) \ g (p n)" + |] ==> \n \ psize D. f (p n) \ g (p n)" apply (simp add: tpart_def) apply (auto, frule partition [THEN iffD1], auto) apply (drule_tac x = "p n" in spec, auto) @@ -842,12 +839,11 @@ lemma Integral_imp_Cauchy: "(\k. Integral(a,b) f k) ==> - (\e. 0 < e --> - (\g. gauge (%x. a \ x & x \ b) g & + (\e > 0. \g. gauge (%x. a \ x & x \ b) g & (\D1 D2 p1 p2. tpart(a,b) (D1, p1) & fine g (D1,p1) & tpart(a,b) (D2, p2) & fine g (D2,p2) --> - \rsum(D1,p1) f - rsum(D2,p2) f\ < e)))" + \rsum(D1,p1) f - rsum(D2,p2) f\ < e))" apply (simp add: Integral_def, auto) apply (drule_tac x = "e/2" in spec, auto) apply (rule exI, auto) @@ -862,13 +858,12 @@ lemma Cauchy_iff2: "Cauchy X = - (\j. (\M. \m n. M \ m & M \ n --> - \X m + - X n\ < inverse(real (Suc j))))" + (\j. (\M. \m \ M. \n \ M. \X m + - X n\ < inverse(real (Suc j))))" apply (simp add: Cauchy_def, auto) apply (drule reals_Archimedean, safe) apply (drule_tac x = n in spec, auto) apply (rule_tac x = M in exI, auto) -apply (drule_tac x = m in spec) +apply (drule_tac x = m in spec, simp) apply (drule_tac x = na in spec, auto) done diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/Lim.thy --- a/src/HOL/Hyperreal/Lim.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/Lim.thy Thu Dec 02 11:42:01 2004 +0100 @@ -8,7 +8,7 @@ header{*Limits, Continuity and Differentiation*} theory Lim -imports SEQ RealDef +imports SEQ begin text{*Standard and Nonstandard Definitions*} @@ -17,9 +17,8 @@ LIM :: "[real=>real,real,real] => bool" ("((_)/ -- (_)/ --> (_))" [60, 0, 60] 60) "f -- a --> L == - \r. 0 < r --> - (\s. 0 < s & (\x. (x \ a & (\x + -a\ < s) - --> \f x + -L\ < r)))" + \r > 0. \s > 0. \x. x \ a & \x + -a\ < s + --> \f x + -L\ < r" NSLIM :: "[real=>real,real,real] => bool" ("((_)/ -- (_)/ --NS> (_))" [60, 0, 60] 60) @@ -58,9 +57,7 @@ inc = ( *f* f)(hypreal_of_real x + h) + -hypreal_of_real (f x))" isUCont :: "(real=>real) => bool" - "isUCont f == (\r. 0 < r --> - (\s. 0 < s & (\x y. \x + -y\ < s - --> \f x + -f y\ < r)))" + "isUCont f == \r > 0. \s > 0. \x y. \x + -y\ < s --> \f x + -f y\ < r" isNSUCont :: "(real=>real) => bool" "isNSUCont f == (\x y. x @= y --> ( *f* f) x @= ( *f* f) y)" @@ -84,12 +81,12 @@ lemma LIM_eq: "f -- a --> L = - (\r. 0 (\s. 0 < s & (\x. x \ a & \x-a\ < s --> \f x - L\ < r)))" + (\r>0.\s>0.\x. x \ a & \x-a\ < s --> \f x - L\ < r)" by (simp add: LIM_def diff_minus) lemma LIM_D: "[| f -- a --> L; 0 \s. 0 < s & (\x. x \ a & \x-a\ < s --> \f x - L\ < r)" + ==> \s>0.\x. x \ a & \x-a\ < s --> \f x - L\ < r" by (simp add: LIM_eq) lemma LIM_const [simp]: "(%x. k) -- x --> k" @@ -111,8 +108,7 @@ where gs: "0 < gs" and gs_lt: "\x. x \ a & \x-a\ < gs --> \g x - M\ < r/2" by blast - show "\s. 0 < s \ - (\x. x \ a \ \x-a\ < s \ \f x + g x - (L + M)\ < r)" + show "\s>0.\x. x \ a \ \x-a\ < s \ \f x + g x - (L + M)\ < r" proof (intro exI conjI strip) show "0 < min fs gs" by (simp add: fs gs) fix x :: real @@ -143,8 +139,7 @@ lemma LIM_const_not_eq: "k \ L ==> ~ ((%x. k) -- a --> L)" proof (simp add: linorder_neq_iff LIM_eq, elim disjE) assume k: "k < L" - show "\r. 0 < r \ - (\s. 0 < s \ (\x. (x < a \ a < x) \ \x-a\ < s) \ \ \k-L\ < r)" + show "\r>0. \s>0. (\x. (x < a \ a < x) \ \x-a\ < s) \ \ \k-L\ < r" proof (intro exI conjI strip) show "0 < L-k" by (simp add: k compare_rls) fix s :: real @@ -157,8 +152,7 @@ qed next assume k: "L < k" - show "\r. 0 < r \ - (\s. 0 < s \ (\x. (x < a \ a < x) \ \x-a\ < s) \ \ \k-L\ < r)" + show "\r>0.\s>0. (\x. (x < a \ a < x) \ \x-a\ < s) \ \ \k-L\ < r" proof (intro exI conjI strip) show "0 < k-L" by (simp add: k compare_rls) fix s :: real @@ -245,8 +239,8 @@ subsubsection{*Limit: The NS definition implies the standard definition.*} -lemma lemma_LIM: "\s. 0 < s --> (\xa. xa \ x & - \xa + - x\ < s & r \ \f xa + -L\) +lemma lemma_LIM: "\s>0.\xa. xa \ x & + \xa + - x\ < s & r \ \f xa + -L\ ==> \n::nat. \xa. xa \ x & \xa + -x\ < inverse(real(Suc n)) & r \ \f xa + -L\" apply clarify @@ -254,8 +248,7 @@ done lemma lemma_skolemize_LIM2: - "\s. 0 < s --> (\xa. xa \ x & - \xa + - x\ < s & r \ \f xa + -L\) + "\s>0.\xa. xa \ x & \xa + - x\ < s & r \ \f xa + -L\ ==> \X. \n::nat. X n \ x & \X n + -x\ < inverse(real(Suc n)) & r \ abs(f (X n) + -L)" apply (drule lemma_LIM) @@ -598,17 +591,15 @@ apply (drule FreeUltrafilterNat_all, ultra) done -lemma lemma_LIMu: "\s. 0 < s --> (\z y. \z + - y\ < s & r \ \f z + -f y\) - ==> \n::nat. \z y. - \z + -y\ < inverse(real(Suc n)) & - r \ \f z + -f y\" +lemma lemma_LIMu: "\s>0.\z y. \z + - y\ < s & r \ \f z + -f y\ + ==> \n::nat. \z y. \z + -y\ < inverse(real(Suc n)) & r \ \f z + -f y\" apply clarify apply (cut_tac n1 = n in real_of_nat_Suc_gt_zero [THEN positive_imp_inverse_positive], auto) done lemma lemma_skolemize_LIM2u: - "\s. 0 < s --> (\z y. \z + - y\ < s & r \ \f z + -f y\) + "\s>0.\z y. \z + - y\ < s & r \ \f z + -f y\ ==> \X Y. \n::nat. abs(X n + -(Y n)) < inverse(real(Suc n)) & r \ abs(f (X n) + -f (Y n))" @@ -687,7 +678,7 @@ subsubsection{*Alternative definition for differentiability*} lemma LIM_I: - "(!!r. 0 (\s. 0 < s & (\x. x \ a & \x-a\ < s --> \f x - L\ < r))) + "(!!r. 0 \s>0.\x. x \ a & \x-a\ < s --> \f x - L\ < r) ==> f -- a --> L" by (simp add: LIM_eq) @@ -1438,7 +1429,7 @@ apply (drule_tac P = "%d. 0 ?P d" and x = 1 in spec, arith) apply (drule_tac x = x in spec)+ apply simp -apply (drule_tac P = "%r. ?P r --> (\s. 0 l" and l: "0 < l" - shows "\d. 0 < d & (\h. 0 < h & h < d --> f(x) < f(x + h))" + shows "\d > 0. \h > 0. h < d --> f(x) < f(x + h)" proof - from l der [THEN DERIV_D, THEN LIM_D [where r = "l"]] - have "\s. 0 < s \ - (\z. z \ 0 \ \z\ < s \ \(f(x+z) - f x) / z - l\ < l)" + have "\s > 0. (\z. z \ 0 \ \z\ < s \ \(f(x+z) - f x) / z - l\ < l)" by (simp add: diff_minus) then obtain s where s: "0 < s" @@ -1608,7 +1598,7 @@ proof (intro exI conjI strip) show "0 h < s" + assume "0 < h" "h < s" with all [of h] show "f x < f (x+h)" proof (simp add: abs_if pos_less_divide_eq diff_minus [symmetric] split add: split_if_asm) @@ -1624,11 +1614,10 @@ lemma DERIV_left_dec: assumes der: "DERIV f x :> l" and l: "l < 0" - shows "\d. 0 < d & (\h. 0 < h & h < d --> f(x) < f(x-h))" + shows "\d > 0. \h > 0. h < d --> f(x) < f(x-h)" proof - from l der [THEN DERIV_D, THEN LIM_D [where r = "-l"]] - have "\s. 0 < s \ - (\z. z \ 0 \ \z\ < s \ \(f(x+z) - f x) / z - l\ < -l)" + have "\s > 0. (\z. z \ 0 \ \z\ < s \ \(f(x+z) - f x) / z - l\ < -l)" by (simp add: diff_minus) then obtain s where s: "0 < s" @@ -1638,7 +1627,7 @@ proof (intro exI conjI strip) show "0 h < s" + assume "0 < h" "h < s" with all [of "-h"] show "f x < f (x-h)" proof (simp add: abs_if pos_less_divide_eq diff_minus [symmetric] split add: split_if_asm) @@ -1662,7 +1651,7 @@ case less from DERIV_left_dec [OF der less] obtain d' where d': "0 < d'" - and lt: "\h. 0 < h \ h < d' \ f x < f (x-h)" by blast + and lt: "\h > 0. h < d' \ f x < f (x-h)" by blast from real_lbound_gt_zero [OF d d'] obtain e where "0 < e \ e < d \ e < d'" .. with lt le [THEN spec [where x="x-e"]] @@ -1671,7 +1660,7 @@ case greater from DERIV_left_inc [OF der greater] obtain d' where d': "0 < d'" - and lt: "\h. 0 < h \ h < d' \ f x < f (x + h)" by blast + and lt: "\h > 0. h < d' \ f x < f (x + h)" by blast from real_lbound_gt_zero [OF d d'] obtain e where "0 < e \ e < d \ e < d'" .. with lt le [THEN spec [where x="x+e"]] @@ -1857,7 +1846,7 @@ lemma DERIV_isconst_end: "[| a < b; \x. a \ x & x \ b --> isCont f x; \x. a < x & x < b --> DERIV f x :> 0 |] - ==> (f b = f a)" + ==> f b = f a" apply (drule MVT, assumption) apply (blast intro: differentiableI) apply (auto dest!: DERIV_unique simp add: diff_eq_eq) @@ -1992,7 +1981,7 @@ assumes d: "0 < d" and inj: "\z. \z-x\ \ d --> g(f z) = z" and cont: "\z. \z-x\ \ d --> isCont f z" - shows "\e. 0y. \y - f x\ \ e --> (\z. \z-x\ \ d & f z = y))" + shows "\e>0. \y. \y - f x\ \ e --> (\z. \z-x\ \ d & f z = y)" proof - have "x-d \ x+d" "\z. x-d \ z \ z \ x+d \ isCont f z" using cont d by (auto simp add: abs_le_interval_iff) @@ -2045,7 +2034,7 @@ shows "isCont g (f x)" proof (simp add: isCont_iff LIM_eq) show "\r. 0 < r \ - (\s. 0 (\z. z\0 \ \z\ < s \ \g(f x + z) - g(f x)\ < r))" + (\s>0. \z. z\0 \ \z\ < s \ \g(f x + z) - g(f x)\ < r)" proof (intro strip) fix r::real assume r: "0y. \y - f x\ \ e' \ (\z. \z - x\ \ e \ f z = y)" by blast - show "\s. 0 (\z. z\0 \ \z\ < s \ \g(f x + z) - g(f x)\ < r)" + show "\s>0. \z. z\0 \ \z\ < s \ \g(f x + z) - g(f x)\ < r" proof (intro exI conjI) show "0z. z \ 0 \ \z\ < e' \ \g (f x + z) - g (f x)\ < r" @@ -2269,4 +2258,3 @@ end - diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/NatStar.thy --- a/src/HOL/Hyperreal/NatStar.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/NatStar.thy Thu Dec 02 11:42:01 2004 +0100 @@ -8,7 +8,7 @@ header{*Star-transforms for the Hypernaturals*} theory NatStar -imports "../Real/RealPow" HyperPow +imports HyperPow begin text{*Extends sets of nats, and functions from the nats to nats or reals*} @@ -638,5 +638,3 @@ end - - diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/SEQ.thy --- a/src/HOL/Hyperreal/SEQ.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/SEQ.thy Thu Dec 02 11:42:01 2004 +0100 @@ -37,7 +37,7 @@ Bseq :: "(nat => real) => bool" --{*Standard definition for bounded sequence*} - "Bseq X == (\K. (0 < K & (\n. \X n\ \ K)))" + "Bseq X == \K>0.\n. \X n\ \ K" NSBseq :: "(nat=>real) => bool" --{*Nonstandard definition for bounded sequence*} @@ -45,18 +45,15 @@ monoseq :: "(nat=>real)=>bool" --{*Definition for monotonicity*} - "monoseq X == ((\(m::nat) n. m \ n --> X m \ X n) | - (\m n. m \ n --> X n \ X m))" + "monoseq X == (\m. \n\m. X m \ X n) | (\m. \n\m. X n \ X m)" subseq :: "(nat => nat) => bool" --{*Definition of subsequence*} - "subseq f == (\m n. m < n --> (f m) < (f n))" + "subseq f == \m. \n>m. (f m) < (f n)" Cauchy :: "(nat => real) => bool" --{*Standard definition of the Cauchy condition*} - "Cauchy X == (\e. (0 < e --> - (\M. (\m n. M \ m & M \ n - --> abs((X m) + -(X n)) < e))))" + "Cauchy X == \e>0. \M. \m \ M. \n \ M. abs((X m) + -(X n)) < e" NSCauchy :: "(nat => real) => bool" --{*Nonstandard definition*} @@ -80,8 +77,7 @@ subsection{*LIMSEQ and NSLIMSEQ*} lemma LIMSEQ_iff: - "(X ----> L) = - (\r. 0 (\no. \n. no \ n --> \X n + -L\ < r))" + "(X ----> L) = (\r>0. \no. \n \ no. \X n + -L\ < r)" by (simp add: LIMSEQ_def) lemma NSLIMSEQ_iff: @@ -363,10 +359,10 @@ apply (auto intro: order_trans) done -lemma monoI1: "\m n. m \ n --> X m \ X n ==> monoseq X" +lemma monoI1: "\m. \ n \ m. X m \ X n ==> monoseq X" by (simp add: monoseq_def) -lemma monoI2: "\m n. m \ n --> X n \ X m ==> monoseq X" +lemma monoI2: "\m. \ n \ m. X n \ X m ==> monoseq X" by (simp add: monoseq_def) lemma mono_SucI1: "\n. X n \ X (Suc n) ==> monoseq X" @@ -385,7 +381,7 @@ by (auto simp add: Bseq_def) lemma lemma_NBseq_def: - "(\K. 0 < K & (\n. \X n\ \ K)) = + "(\K > 0. \n. \X n\ \ K) = (\N. \n. \X n\ \ real(Suc N))" apply auto prefer 2 apply force @@ -402,8 +398,7 @@ done lemma lemma_NBseq_def2: - "(\K. 0 < K & (\n. \X n\ \ K)) = - (\N. \n. \X n\ < real(Suc N))" + "(\K > 0. \n. \X n\ \ K) = (\N. \n. \X n\ < real(Suc N))" apply (subst lemma_NBseq_def, auto) apply (rule_tac x = "Suc N" in exI) apply (rule_tac [2] x = N in exI) @@ -449,13 +444,13 @@ which woulid be useless.*} lemma lemmaNSBseq: - "\K. 0 < K --> (\n. K < \X n\) + "\K > 0. \n. K < \X n\ ==> \N. \n. real(Suc N) < \X n\" apply safe apply (cut_tac n = N in real_of_nat_Suc_gt_zero, blast) done -lemma lemmaNSBseq2: "\K. 0 < K --> (\n. K < \X n\) +lemma lemmaNSBseq2: "\K > 0. \n. K < \X n\ ==> \f. \N. real(Suc N) < \X (f N)\" apply (drule lemmaNSBseq) apply (drule choice, blast) @@ -558,9 +553,9 @@ subsection{*A Bounded and Monotonic Sequence Converges*} lemma lemma_converg1: - "!!(X::nat=>real). [| \m n. m \ n --> X m \ X n; + "!!(X::nat=>real). [| \m. \ n \ m. X m \ X n; isLub (UNIV::real set) {x. \n. X n = x} (X ma) - |] ==> \n. ma \ n --> X n = X ma" + |] ==> \n \ ma. X n = X ma" apply safe apply (drule_tac y = "X n" in isLubD2) apply (blast dest: order_antisym)+ @@ -578,7 +573,7 @@ done text{*Now, the same theorem in terms of NS limit *} -lemma Bmonoseq_NSLIMSEQ: "\n. m \ n --> X n = X m ==> \L. (X ----NS> L)" +lemma Bmonoseq_NSLIMSEQ: "\n \ m. X n = X m ==> \L. (X ----NS> L)" by (auto dest!: Bmonoseq_LIMSEQ simp add: LIMSEQ_NSLIMSEQ_iff) lemma lemma_converg2: @@ -610,7 +605,7 @@ text{*A standard proof of the theorem for monotone increasing sequence*} lemma Bseq_mono_convergent: - "[| Bseq X; \m n. m \ n --> X m \ X n |] ==> convergent X" + "[| Bseq X; \m. \n \ m. X m \ X n |] ==> convergent X" apply (simp add: convergent_def) apply (frule Bseq_isLub, safe) apply (case_tac "\m. X m = U", auto) @@ -629,7 +624,7 @@ text{*Nonstandard version of the theorem*} lemma NSBseq_mono_NSconvergent: - "[| NSBseq X; \m n. m \ n --> X m \ X n |] ==> NSconvergent X" + "[| NSBseq X; \m. \n \ m. X m \ X n |] ==> NSconvergent X" by (auto intro: Bseq_mono_convergent simp add: convergent_NSconvergent_iff [symmetric] Bseq_NSBseq_iff [symmetric]) @@ -655,16 +650,16 @@ subsection{*A Few More Equivalence Theorems for Boundedness*} text{*alternative formulation for boundedness*} -lemma Bseq_iff2: "Bseq X = (\k x. 0 < k & (\n. \X(n) + -x\ \ k))" +lemma Bseq_iff2: "Bseq X = (\k > 0. \x. \n. \X(n) + -x\ \ k)" apply (unfold Bseq_def, safe) apply (rule_tac [2] x = "k + \x\ " in exI) -apply (rule_tac x = K in exI) +apply (rule_tac x = K in exI, simp) apply (rule exI [where x = 0], auto) apply (drule_tac x=n in spec, arith)+ done text{*alternative formulation for boundedness*} -lemma Bseq_iff3: "Bseq X = (\k N. 0 < k & (\n. abs(X(n) + -X(N)) \ k))" +lemma Bseq_iff3: "Bseq X = (\k > 0. \N. \n. abs(X(n) + -X(N)) \ k)" apply safe apply (simp add: Bseq_def, safe) apply (rule_tac x = "K + \X N\ " in exI) @@ -746,8 +741,8 @@ text{*A Cauchy sequence is bounded -- this is the standard proof mechanization rather than the nonstandard proof*} -lemma lemmaCauchy: "\n. M \ n --> \X M + - X n\ < (1::real) - ==> \n. M \ n --> \X n\ < 1 + \X M\" +lemma lemmaCauchy: "\n \ M. \X M + - X n\ < (1::real) + ==> \n \ M. \X n\ < 1 + \X M\" apply safe apply (drule spec, auto, arith) done @@ -757,7 +752,7 @@ text{* FIXME: Long. Maximal element in subsequence *} lemma SUP_rabs_subseq: - "\m. m \ M & (\n. n \ M --> \(X::nat=> real) n\ \ \X m\)" + "\m \ M. \n \ M. \(X::nat=> real) n\ \ \X m\" apply (induct M) apply (rule_tac x = 0 in exI, simp, safe) apply (cut_tac x = "\X (Suc M)\" and y = "\X m\ " in linorder_less_linear) @@ -772,28 +767,28 @@ lemma lemma_Nat_covered: "[| \m::nat. m \ M --> P M m; - \m. M \ m --> P M m |] + \m \ M. P M m |] ==> \m. P M m" by (auto elim: less_asym simp add: le_def) lemma lemma_trans1: - "[| \n. n \ M --> \(X::nat=>real) n\ \ a; a < b |] - ==> \n. n \ M --> \X n\ \ b" + "[| \n \ M. \(X::nat=>real) n\ \ a; a < b |] + ==> \n \ M. \X n\ \ b" by (blast intro: order_le_less_trans [THEN order_less_imp_le]) lemma lemma_trans2: - "[| \n. M \ n --> \(X::nat=>real) n\ < a; a < b |] - ==> \n. M \ n --> \X n\\ b" + "[| \n \ M. \(X::nat=>real) n\ < a; a < b |] + ==> \n \ M. \X n\\ b" by (blast intro: order_less_trans [THEN order_less_imp_le]) lemma lemma_trans3: - "[| \n. n \ M --> \X n\ \ a; a = b |] - ==> \n. n \ M --> \X n\ \ b" + "[| \n \ M. \X n\ \ a; a = b |] + ==> \n \ M. \X n\ \ b" by auto -lemma lemma_trans4: "\n. M \ n --> \(X::nat=>real) n\ < a - ==> \n. M \ n --> \X n\ \ a" +lemma lemma_trans4: "\n \ M. \(X::nat=>real) n\ < a + ==> \n \ M. \X n\ \ a" by (blast intro: order_less_imp_le) @@ -857,8 +852,8 @@ lemma NSLIMSEQ_le: "[| f ----NS> l; g ----NS> m; - \N. \n. N \ n --> f(n) \ g(n) - |] ==> l \ m" + \N. \n \ N. f(n) \ g(n) + |] ==> l \ m" apply (simp add: NSLIMSEQ_def, safe) apply (drule starfun_le_mono) apply (drule HNatInfinite_whn [THEN [2] bspec])+ @@ -870,7 +865,7 @@ (* standard version *) lemma LIMSEQ_le: - "[| f ----> l; g ----> m; \N. \n. N \ n --> f(n) \ g(n) |] + "[| f ----> l; g ----> m; \N. \n \ N. f(n) \ g(n) |] ==> l \ m" by (simp add: LIMSEQ_NSLIMSEQ_iff NSLIMSEQ_le) @@ -952,7 +947,7 @@ text{* standard proof seems easier *} lemma LIMSEQ_inverse_zero: - "\y. \N. \n. N \ n --> y < f(n) ==> (%n. inverse(f n)) ----> 0" + "\y. \N. \n \ N. y < f(n) ==> (%n. inverse(f n)) ----> 0" apply (simp add: LIMSEQ_def, safe) apply (drule_tac x = "inverse r" in spec, safe) apply (rule_tac x = N in exI, safe) @@ -967,7 +962,7 @@ done lemma NSLIMSEQ_inverse_zero: - "\y. \N. \n. N \ n --> y < f(n) + "\y. \N. \n \ N. y < f(n) ==> (%n. inverse(f n)) ----NS> 0" by (simp add: LIMSEQ_NSLIMSEQ_iff [symmetric] LIMSEQ_inverse_zero) @@ -1240,4 +1235,3 @@ end - diff -r 8bad1f42fec0 -r 300e09825d8b src/HOL/Hyperreal/Series.thy --- a/src/HOL/Hyperreal/Series.thy Thu Dec 02 11:09:19 2004 +0100 +++ b/src/HOL/Hyperreal/Series.thy Thu Dec 02 11:42:01 2004 +0100 @@ -84,7 +84,7 @@ done lemma sumr_interval_const2: - "[|\n. m \ n --> f n = r; m \ k|] + "[|\n\m. f n = r; m \ k|] ==> sumr m k f = (real (k - m) * r)" apply (induct "k", auto) apply (drule_tac x = k in spec) @@ -94,7 +94,7 @@ lemma sumr_le: - "[|\n. m \ n --> 0 \ f n; m < k|] ==> sumr 0 m f \ sumr 0 k f" + "[|\n\m. 0 \ f n; m < k|] ==> sumr 0 m f \ sumr 0 k f" apply (induct "k") apply (auto simp add: less_Suc_eq_le) apply (drule_tac x = k in spec, safe) @@ -109,7 +109,7 @@ apply (auto intro: add_mono simp add: le_def) done -lemma sumr_ge_zero: "(\n. m \ n --> 0 \ f n) --> 0 \ sumr m n f" +lemma sumr_ge_zero: "(\n\m. 0 \ f n) --> 0 \ sumr m n f" apply (induct "n", auto) apply (drule_tac x = n in spec, arith) done @@ -119,11 +119,11 @@ by (induct "n", simp_all add: add_increasing) lemma sumr_zero [rule_format]: - "\n. N \ n --> f n = 0 ==> N \ m --> sumr m n f = 0" + "\n \ N. f n = 0 ==> N \ m --> sumr m n f = 0" by (induct "n", auto) lemma Suc_le_imp_diff_ge2: - "[|\n. N \ n --> f (Suc n) = 0; Suc N \ m|] ==> sumr m n f = 0" + "[|\n \ N. f (Suc n) = 0; Suc N \ m|] ==> sumr m n f = 0" apply (rule sumr_zero) apply (case_tac "n", auto) done @@ -289,7 +289,7 @@ great as any partial sum.*} lemma series_pos_le: - "[| summable f; \m. n \ m --> 0 \ f(m) |] ==> sumr 0 n f \ suminf f" + "[| summable f; \m \ n. 0 \ f(m) |] ==> sumr 0 n f \ suminf f" apply (drule summable_sums) apply (simp add: sums_def) apply (cut_tac k = "sumr 0 n f" in LIMSEQ_const) @@ -300,7 +300,7 @@ done lemma series_pos_less: - "[| summable f; \m. n \ m --> 0 < f(m) |] ==> sumr 0 n f < suminf f" + "[| summable f; \m \ n. 0 < f(m) |] ==> sumr 0 n f < suminf f" apply (rule_tac y = "sumr 0 (Suc n) f" in order_less_le_trans) apply (rule_tac [2] series_pos_le, auto) apply (drule_tac x = m in spec, auto) @@ -332,14 +332,14 @@ lemma summable_Cauchy: "summable f = - (\e. 0 < e --> (\N. \m n. N \ m --> abs(sumr m n f) < e))" + (\e > 0. \N. \m \ N. \n. abs(sumr m n f) < e)" apply (auto simp add: summable_convergent_sumr_iff Cauchy_convergent_iff [symmetric] Cauchy_def) apply (drule_tac [!] spec, auto) apply (rule_tac x = M in exI) apply (rule_tac [2] x = N in exI, auto) apply (cut_tac [!] m = m and n = n in less_linear, auto) apply (frule le_less_trans [THEN less_imp_le], assumption) -apply (drule_tac x = n in spec) +apply (drule_tac x = n in spec, simp) apply (drule_tac x = m in spec) apply (auto intro: abs_minus_add_cancel [THEN subst] simp add: sumr_split_add_minus abs_minus_add_cancel) @@ -348,7 +348,7 @@ text{*Comparison test*} lemma summable_comparison_test: - "[| \N. \n. N \ n --> abs(f n) \ g n; summable g |] ==> summable f" + "[| \N. \n \ N. abs(f n) \ g n; summable g |] ==> summable f" apply (auto simp add: summable_Cauchy) apply (drule spec, auto) apply (rule_tac x = "N + Na" in exI, auto) @@ -362,7 +362,7 @@ done lemma summable_rabs_comparison_test: - "[| \N. \n. N \ n --> abs(f n) \ g n; summable g |] + "[| \N. \n \ N. abs(f n) \ g n; summable g |] ==> summable (%k. abs (f k))" apply (rule summable_comparison_test) apply (auto simp add: abs_idempotent) @@ -419,7 +419,7 @@ (*All this trouble just to get 0n. N \ n --> abs(f(Suc n)) \ c*abs(f n) |] + "[| \n \ N. abs(f(Suc n)) \ c*abs(f n) |] ==> 0 < c | summable f" apply (simp (no_asm) add: linorder_not_le [symmetric]) apply (simp add: summable_Cauchy) @@ -430,7 +430,7 @@ done lemma ratio_test: - "[| c < 1; \n. N \ n --> abs(f(Suc n)) \ c*abs(f n) |] + "[| c < 1; \n \ N. abs(f(Suc n)) \ c*abs(f n) |] ==> summable f" apply (frule ratio_test_lemma2, auto) apply (rule_tac g = "%n. (abs (f N) / (c ^ N))*c ^ n"