:: Convergent Real Sequences. Upper and Lower Bound of Sets of Real Numbers :: by Jaros{\l}aw Kotowicz :: :: Received November 23, 1989 :: Copyright (c) 1990-2021 Association of Mizar Users :: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland). :: This code can be distributed under the GNU General Public Licence :: version 3.0 or later, or the Creative Commons Attribution-ShareAlike :: License version 3.0 or later, subject to the binding interpretation :: detailed in file COPYING.interpretation. :: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these :: licenses, or see http://www.gnu.org/licenses/gpl.html and :: http://creativecommons.org/licenses/by-sa/3.0/. environ vocabularies NUMBERS, SUBSET_1, SEQ_1, ORDINAL2, NAT_1, ARYTM_3, XXREAL_0, REAL_1, CARD_1, ARYTM_1, MEMBERED, XXREAL_2, COMPLEX1, TARSKI, XBOOLE_0, SEQ_2, FUNCT_1, VALUED_0, RELAT_1, FUNCOP_1, VALUED_1, SQUARE_1, SEQM_3, SEQ_4, BINOP_1, BINOP_2, FINSEQOP, XCMPLX_0, COMPLSP1, FINSEQ_1, ZFMISC_1, FINSEQ_2, CARD_3, RVSUM_1, RCOMP_1, SETFAM_1, METRIC_1, FINSET_1, ORDINAL4, PARTFUN1, GOBOARD2, MEMBER_1, FUNCT_7; notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, RELAT_1, CARD_1, FINSET_1, MEMBERED, ORDINAL1, NUMBERS, XXREAL_2, XCMPLX_0, XXREAL_0, XREAL_0, SETFAM_1, REAL_1, SQUARE_1, COMPLEX1, FUNCT_1, RELSET_1, PARTFUN1, SEQ_1, COMSEQ_2, SEQ_2, SEQM_3, FUNCT_2, BINOP_1, BINOP_2, FINSEQ_1, FUNCOP_1, NAT_1, VALUED_0, VALUED_1, MEMBER_1, RVSUM_1, FINSEQ_2, RECDEF_1, FINSEQOP; constructors FUNCOP_1, REAL_1, NAT_1, COMPLEX1, PARTFUN1, SEQ_2, SEQM_3, SQUARE_1, VALUED_1, RECDEF_1, XXREAL_2, FINSET_1, RELSET_1, BINOP_1, BINOP_2, SETWISEO, FINSEQOP, ZFMISC_1, RVSUM_1, MEMBER_1, COMSEQ_2, NUMBERS; registrations XBOOLE_0, ORDINAL1, RELSET_1, NUMBERS, XXREAL_0, XREAL_0, MEMBERED, VALUED_0, VALUED_1, FUNCT_2, XXREAL_2, FUNCOP_1, SEQ_2, FINSET_1, BINOP_2, FUNCT_1, FINSEQ_2, SUBSET_1, NAT_1, RELAT_1, FINSEQ_1, CARD_1, MEMBER_1, SQUARE_1, RVSUM_1, XCMPLX_0, SEQ_1; requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM; begin reserve n,k,k1,m,m1,n1,n2,l for Nat; reserve r,r1,r2,p,p1,g,g1,g2,s,s1,s2,t for Real; reserve seq,seq1,seq2 for Real_Sequence; reserve Nseq for increasing sequence of NAT; reserve x for set; reserve X,Y for Subset of REAL; theorem :: SEQ_4:1 for X,Y st for r,p st r in X & p in Y holds r

Subset of REAL; end; theorem :: SEQ_4:5 for X being real-membered set holds X is non empty bounded_above implies ex g st (for r st r in X holds r<=g) & for s st 0 Real means :: SEQ_4:def 1 (for r st r in X holds r<=it) & for s st 0 Real means :: SEQ_4:def 2 (for r st r in X holds it<=r) & for s st 0r) iff lower_bound X < upper_bound X); :: :: Theorems about the Convergence and the Limit :: theorem :: SEQ_4:13 seq is convergent implies abs seq is convergent; registration let seq be convergent Real_Sequence; cluster abs seq -> convergent for Real_Sequence; end; theorem :: SEQ_4:14 seq is convergent implies lim abs seq = |.lim seq.|; theorem :: SEQ_4:15 abs seq is convergent & lim abs seq=0 implies seq is convergent & lim seq=0; theorem :: SEQ_4:16 seq1 is subsequence of seq & seq is convergent implies seq1 is convergent; theorem :: SEQ_4:17 seq1 is subsequence of seq & seq is convergent implies lim seq1= lim seq; theorem :: SEQ_4:18 seq is convergent & (ex k st for n st k<=n holds seq1.n=seq.n) implies seq1 is convergent; theorem :: SEQ_4:19 seq is convergent & (ex k st for n st k<=n holds seq1.n=seq.n) implies lim seq=lim seq1; registration let seq be convergent Real_Sequence; let k; cluster seq ^\ k -> convergent for Real_Sequence; end; theorem :: SEQ_4:20 seq is convergent implies lim (seq^\k)=lim seq; theorem :: SEQ_4:21 seq^\k is convergent implies seq is convergent; theorem :: SEQ_4:22 seq^\k is convergent implies lim seq = lim (seq^\k); theorem :: SEQ_4:23 seq is convergent & lim seq<>0 implies ex k st (seq ^\k) is non-zero; theorem :: SEQ_4:24 seq is convergent & lim seq<>0 implies ex seq1 st seq1 is subsequence of seq & seq1 is non-zero; theorem :: SEQ_4:25 seq is constant & (r in rng seq or ex n st seq.n=r ) implies lim seq=r; theorem :: SEQ_4:26 seq is constant implies for n holds lim seq=seq.n; theorem :: SEQ_4:27 seq is convergent & lim seq<>0 implies for seq1 st seq1 is subsequence of seq & seq1 is non-zero holds lim (seq1")=(lim seq)"; ::$CT 3 theorem :: SEQ_4:31 (for n holds seq.n=g/(n+r)) implies seq is convergent & lim seq =0; ::$CT 3 theorem :: SEQ_4:35 0<=r & (for n holds seq.n=g/(n*n+r)) implies seq is convergent & lim seq=0; registration cluster non-decreasing bounded_above -> convergent for Real_Sequence; end; registration cluster non-increasing bounded_below -> convergent for Real_Sequence; end; registration cluster monotone bounded -> convergent for Real_Sequence; end; theorem :: SEQ_4:36 seq is monotone & seq is bounded implies seq is convergent; theorem :: SEQ_4:37 seq is bounded_above & seq is non-decreasing implies for n holds seq.n <=lim seq; theorem :: SEQ_4:38 seq is bounded_below & seq is non-increasing implies for n holds lim seq <= seq.n; theorem :: SEQ_4:39 for seq ex Nseq st seq*Nseq is monotone; ::$N Bolzano-Weierstrass Theorem (1 dimension) theorem :: SEQ_4:40 seq is bounded implies ex seq1 st seq1 is subsequence of seq & seq1 is convergent; ::$N Cauchy sequence theorem :: SEQ_4:41 :: Cauchy Theorem seq is convergent iff for s st 0= t holds lower_bound X >= t; theorem :: SEQ_4:44 for X being non empty real-membered set st (for s st s in X holds s >= r) & for t st for s st s in X holds s >= t holds r >= t holds r = lower_bound X ; theorem :: SEQ_4:45 for X being non empty real-membered set, r for t st for s st s in X holds s <= t holds upper_bound X <= t; theorem :: SEQ_4:46 for X being non empty real-membered set, r st (for s st s in X holds s <= r) & for t st for s st s in X holds s <= t holds r <= t holds r = upper_bound X; theorem :: SEQ_4:47 for X being non empty real-membered set, Y being real-membered set st X c= Y & Y is bounded_below holds lower_bound Y <= lower_bound X; theorem :: SEQ_4:48 for X being non empty real-membered set, Y being real-membered set st X c= Y & Y is bounded_above holds upper_bound X <= upper_bound Y; :: from CQC_SIM1, 2007.03.15, A.T. definition let A be non empty natural-membered set; redefine func min A -> Element of NAT; end; begin :: moved from COMPLSP1, 2010.02.25 reserve k,n for Nat, r,r9,r1,r2 for Real, c,c9,c1,c2,c3 for Element of COMPLEX; theorem :: SEQ_4:49 0c is_a_unity_wrt addcomplex; theorem :: SEQ_4:50 compcomplex is_an_inverseOp_wrt addcomplex; theorem :: SEQ_4:51 addcomplex is having_an_inverseOp; theorem :: SEQ_4:52 the_inverseOp_wrt addcomplex = compcomplex; definition redefine func diffcomplex equals :: SEQ_4:def 3 addcomplex*(id COMPLEX,compcomplex); end; theorem :: SEQ_4:53 1r is_a_unity_wrt multcomplex; theorem :: SEQ_4:54 multcomplex is_distributive_wrt addcomplex; definition let c be Complex; func c multcomplex -> UnOp of COMPLEX equals :: SEQ_4:def 4 multcomplex[;](c,id COMPLEX); end; theorem :: SEQ_4:55 (c multcomplex).c9 = c*c9; theorem :: SEQ_4:56 c multcomplex is_distributive_wrt addcomplex; definition func abscomplex -> Function of COMPLEX,REAL means :: SEQ_4:def 5 for c holds it.c = |.c.|; end; reserve z,z1,z2 for FinSequence of COMPLEX; definition let z1,z2; redefine func z1 + z2 -> FinSequence of COMPLEX equals :: SEQ_4:def 6 addcomplex.:(z1,z2); redefine func z1 - z2 -> FinSequence of COMPLEX equals :: SEQ_4:def 7 diffcomplex.:(z1,z2); end; definition let z; redefine func -z -> FinSequence of COMPLEX equals :: SEQ_4:def 8 compcomplex*z; end; notation let z; let c be Complex; synonym c*z for c(#)z; end; definition let z; let c be Complex; redefine func c*z -> FinSequence of COMPLEX equals :: SEQ_4:def 9 (c multcomplex)*z; end; definition let z; redefine func abs z -> FinSequence of REAL equals :: SEQ_4:def 10 abscomplex*z; end; definition let n; func COMPLEX n -> FinSequenceSet of COMPLEX equals :: SEQ_4:def 11 n-tuples_on COMPLEX; end; registration let n; cluster COMPLEX n -> non empty; end; reserve x,z,z1,z2,z3 for Element of COMPLEX n, A,B for Subset of COMPLEX n; theorem :: SEQ_4:57 k in Seg n implies z.k in COMPLEX; definition let n,z1,z2; redefine func z1 + z2 -> Element of COMPLEX n; end; theorem :: SEQ_4:58 k in Seg n & c1 = z1.k & c2 = z2.k implies (z1 + z2).k = c1 + c2; definition let n; func 0c n -> FinSequence of COMPLEX equals :: SEQ_4:def 12 n |-> 0c; end; definition let n; redefine func 0c n -> Element of COMPLEX n; end; theorem :: SEQ_4:59 z + 0c n = z & z = 0c n + z; definition let n,z; redefine func -z -> Element of COMPLEX n; end; theorem :: SEQ_4:60 k in Seg n & c = z.k implies (-z).k = -c; theorem :: SEQ_4:61 z + -z = 0c n & -z + z = 0c n; theorem :: SEQ_4:62 z1 + z2 = 0c n implies z1 = -z2 & z2 = -z1 ; ::$CT theorem :: SEQ_4:64 -z1 = -z2 implies z1 = z2; theorem :: SEQ_4:65 z1 + z = z2 + z or z1 + z = z + z2 implies z1 = z2; theorem :: SEQ_4:66 -(z1 + z2) = -z1 + -z2; definition let n,z1,z2; redefine func z1 - z2 -> Element of COMPLEX n; end; theorem :: SEQ_4:67 k in Seg n implies (z1 - z2).k = z1.k - z2.k; theorem :: SEQ_4:68 z - 0c n = z; theorem :: SEQ_4:69 0c n - z = -z; theorem :: SEQ_4:70 z1 - -z2 = z1 + z2; theorem :: SEQ_4:71 -(z1 - z2) = z2 - z1; theorem :: SEQ_4:72 -(z1 - z2) = -z1 + z2; theorem :: SEQ_4:73 z - z = 0c n; theorem :: SEQ_4:74 z1 - z2 = 0c n implies z1 = z2; theorem :: SEQ_4:75 z1 - z2 - z3 = z1 - (z2 + z3); theorem :: SEQ_4:76 z1 + (z2 - z3) = z1 + z2 - z3; theorem :: SEQ_4:77 z1 - (z2 - z3) = z1 - z2 + z3; theorem :: SEQ_4:78 z1 - z2 + z3 = z1 + z3 - z2; theorem :: SEQ_4:79 z1 = z1 + z - z; theorem :: SEQ_4:80 z1 + (z2 - z1) = z2; theorem :: SEQ_4:81 z1 = z1 - z + z; definition let n,z,c; redefine func c*z -> Element of COMPLEX n; end; theorem :: SEQ_4:82 k in Seg n & c9 = z.k implies (c*z).k = c*c9; theorem :: SEQ_4:83 c1*(c2*z) = (c1*c2)*z; theorem :: SEQ_4:84 (c1 + c2)*z = c1*z + c2*z; theorem :: SEQ_4:85 c*(z1+z2) = c*z1 + c*z2; theorem :: SEQ_4:86 1r*z = z; theorem :: SEQ_4:87 0c*z = 0c n; theorem :: SEQ_4:88 (-1r)*z = -z; definition let n,z; redefine func abs z -> Element of n-tuples_on REAL; end; theorem :: SEQ_4:89 k in Seg n & c = z.k implies (abs z).k = |.c.|; theorem :: SEQ_4:90 abs 0c n = n |-> 0; theorem :: SEQ_4:91 abs -z = abs z; theorem :: SEQ_4:92 abs(c*z) = |.c.|*(abs z); definition let z be FinSequence of COMPLEX; func |.z.| -> Real equals :: SEQ_4:def 13 sqrt Sum sqr abs z; end; theorem :: SEQ_4:93 |.0c n.| = 0; theorem :: SEQ_4:94 |.z.| = 0 implies z = 0c n; theorem :: SEQ_4:95 0 <= |.z.|; theorem :: SEQ_4:96 |.-z.| = |.z.|; theorem :: SEQ_4:97 |.c*z.| = |.c.|*|.z.|; theorem :: SEQ_4:98 |.z1 + z2.| <= |.z1.| + |.z2.|; theorem :: SEQ_4:99 |.z1 - z2.| <= |.z1.| + |.z2.|; theorem :: SEQ_4:100 |.z1.| - |.z2.| <= |.z1 + z2.|; theorem :: SEQ_4:101 |.z1.| - |.z2.| <= |.z1 - z2.|; theorem :: SEQ_4:102 |.z1 - z2.| = 0 iff z1 = z2; theorem :: SEQ_4:103 z1 <> z2 implies 0 < |.z1 - z2.|; theorem :: SEQ_4:104 |.z1 - z2.| = |.z2 - z1.|; theorem :: SEQ_4:105 |.z1 - z2.| <= |.z1 - z.| + |.z - z2.|; definition let n; let A be Subset of COMPLEX n; attr A is open means :: SEQ_4:def 14 for x st x in A ex r st 0 < r & for z st |.z.| < r holds x + z in A; end; definition let n; let A be Subset of COMPLEX n; attr A is closed means :: SEQ_4:def 15 for x st for r st r > 0 ex z st |.z.| < r & x + z in A holds x in A; end; theorem :: SEQ_4:106 for A being Subset of COMPLEX n st A = {} holds A is open; theorem :: SEQ_4:107 for A being Subset of COMPLEX n st A = COMPLEX n holds A is open; theorem :: SEQ_4:108 for AA being Subset-Family of COMPLEX n st for A being Subset of COMPLEX n st A in AA holds A is open for A being Subset of COMPLEX n st A = union AA holds A is open; theorem :: SEQ_4:109 for A,B being Subset of COMPLEX n st A is open & B is open for C being Subset of COMPLEX n st C = A /\ B holds C is open; definition let n,x,r; func Ball(x,r) -> Subset of COMPLEX n equals :: SEQ_4:def 16 { z : |.z - x.| < r }; end; theorem :: SEQ_4:110 z in Ball(x,r) iff |.x - z.| < r; theorem :: SEQ_4:111 0 < r implies x in Ball(x,r); theorem :: SEQ_4:112 Ball(z1,r1) is open; definition let n,x,A; func dist(x,A) -> Real means :: SEQ_4:def 17 for X being Subset of REAL st X = {|.x - z.| : z in A} holds it = lower_bound X; end; definition let n,A,r; func Ball(A,r) -> Subset of COMPLEX n equals :: SEQ_4:def 18 { z : dist(z,A) < r }; end; theorem :: SEQ_4:113 for X being Subset of REAL, r st X <> {} & for r9 st r9 in X holds r <= r9 holds lower_bound X >= r; theorem :: SEQ_4:114 A <> {} implies dist(x,A) >= 0; theorem :: SEQ_4:115 A <> {} implies dist(x + z,A) <= dist(x,A) + |.z.|; theorem :: SEQ_4:116 x in A implies dist(x,A) = 0; theorem :: SEQ_4:117 not x in A & A <> {} & A is closed implies dist(x,A) > 0; theorem :: SEQ_4:118 A <> {} implies |.z1 - x.| + dist(x,A) >= dist(z1,A); theorem :: SEQ_4:119 z in Ball(A,r) iff dist(z,A) < r; theorem :: SEQ_4:120 0 < r & x in A implies x in Ball(A,r); theorem :: SEQ_4:121 0 < r implies A c= Ball(A,r); theorem :: SEQ_4:122 A <> {} implies Ball(A,r1) is open; definition let n,A,B; func dist(A,B) -> Real means :: SEQ_4:def 19 for X being Subset of REAL st X = {|.x - z.| : x in A & z in B} holds it = lower_bound X; end; theorem :: SEQ_4:123 for X,Y being Subset of REAL holds X <> {} & Y <> {} implies X ++ Y <> {}; theorem :: SEQ_4:124 for X,Y being Subset of REAL holds X is bounded_below & Y is bounded_below implies X++Y is bounded_below; theorem :: SEQ_4:125 for X,Y being Subset of REAL st X <> {} & X is bounded_below & Y <> {} & Y is bounded_below holds lower_bound (X ++ Y) = lower_bound X + lower_bound Y; theorem :: SEQ_4:126 for X,Y being Subset of REAL st Y is bounded_below & X <> {} & for r st r in X ex r1 st r1 in Y & r1 <= r holds lower_bound X >= lower_bound Y; theorem :: SEQ_4:127 A <> {} & B <> {} implies dist(A,B) >= 0; theorem :: SEQ_4:128 dist(A,B) = dist(B,A); theorem :: SEQ_4:129 A <> {} & B <> {} implies dist(x,A) + dist(x,B) >= dist(A,B); theorem :: SEQ_4:130 A meets B implies dist(A,B) = 0; definition let n; func ComplexOpenSets(n) -> Subset-Family of COMPLEX n equals :: SEQ_4:def 20 {A where A is Subset of COMPLEX n: A is open}; end; theorem :: SEQ_4:131 for A being Subset of COMPLEX n holds A in ComplexOpenSets n iff A is open; theorem :: SEQ_4:132 for A being Subset of COMPLEX n holds A is closed iff A` is open; begin :: moved from GOBOARD2, 2010.03.01, A.T. reserve v,v1,v2 for FinSequence of REAL, n,m,k for Nat, x for set; theorem :: SEQ_4:133 for R being finite Subset of REAL holds R <> {} implies R is bounded_above & upper_bound(R) in R & R is bounded_below & lower_bound(R) in R; theorem :: SEQ_4:134 for n being Nat for f being FinSequence holds 1 <= n & n+1 <= len f iff n in dom f & n+1 in dom f; theorem :: SEQ_4:135 for n being Nat for f being FinSequence holds 1 <= n & n+2 <= len f iff n in dom f & n+1 in dom f & n+2 in dom f; theorem :: SEQ_4:136 for D being non empty set, f1,f2 being FinSequence of D, n st 1 <= n & n <= len f2 holds (f1^f2)/.(n + len f1) = f2/.n; theorem :: SEQ_4:137 v is increasing implies for n,m st n in dom v & m in dom v & n<=m holds v.n <= v.m; theorem :: SEQ_4:138 v is increasing implies for n,m st n in dom v & m in dom v & n<> m holds v.n<>v.m; theorem :: SEQ_4:139 v is increasing & v1 = v|Seg n implies v1 is increasing; theorem :: SEQ_4:140 for v holds ex v1 st rng v1 = rng v & len v1 = card rng v & v1 is increasing; theorem :: SEQ_4:141 for v1,v2 st len v1 = len v2 & rng v1 = rng v2 & v1 is increasing & v2 is increasing holds v1 = v2; definition let v; func Incr(v) ->increasing FinSequence of REAL means :: SEQ_4:def 21 rng it = rng v & len it = card rng v; end; registration let v be non empty FinSequence of REAL; cluster Incr v -> non empty; end; :: from SPRECT_1, 2011.04.24, A.T registration cluster non empty bounded_above bounded_below for Subset of REAL; end; theorem :: SEQ_4:142 for A,B being non empty bounded_below Subset of REAL holds lower_bound(A \/ B) = min(lower_bound A,lower_bound B); theorem :: SEQ_4:143 for A,B being non empty bounded_above Subset of REAL holds upper_bound(A \/ B) = max(upper_bound A,upper_bound B); :: from TOPMETR3, 2011.04.24, A.T theorem :: SEQ_4:144 for R being non empty Subset of REAL,r0 being Real st for r being Real st r in R holds r <= r0 holds upper_bound R <= r0;