:: Segments of Natural Numbers and Finite Sequences :: by Grzegorz Bancerek and Krzysztof Hryniewiecki :: :: Received April 1, 1989 :: Copyright (c) 1990-2019 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, NAT_1, FUNCT_1, SUBSET_1, XXREAL_0, TARSKI, XCMPLX_0, XBOOLE_0, CARD_1, ARYTM_3, RELAT_1, FINSET_1, ZFMISC_1, ORDINAL1, PARTFUN1, FUNCOP_1, ORDINAL4, ARYTM_1, FINSEQ_1, ORDINAL2, VALUED_0, FUNCT_2, UPROOTS; notations TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, XCMPLX_0, RELAT_1, FUNCT_1, FUNCOP_1, WELLORD2, ORDINAL1, NAT_1, CARD_1, NUMBERS, PARTFUN1, FINSET_1, XXREAL_0, FUNCT_2, INT_1, VALUED_0; constructors WELLORD2, FUNCOP_1, FUNCT_4, XXREAL_0, XREAL_0, NAT_1, CARD_1, RELSET_1, XCMPLX_0, INT_1, VALUED_0, NUMBERS; registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, FINSET_1, XXREAL_0, XREAL_0, NAT_1, CARD_1, NUMBERS, VALUED_0; requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM; definitions TARSKI, FINSET_1, FUNCT_1, WELLORD2, XBOOLE_0, RELAT_1, CARD_1; equalities CARD_1, ORDINAL1; expansions TARSKI, FUNCT_1, WELLORD2, XBOOLE_0, CARD_1; theorems TARSKI, AXIOMS, FUNCT_1, NAT_1, ZFMISC_1, RELAT_1, RELSET_1, WELLORD2, ORDINAL1, CARD_1, FINSET_1, XBOOLE_0, XBOOLE_1, FUNCOP_1, XREAL_1, XXREAL_0, SETFAM_1, ORDINAL3, SUBSET_1, VALUED_0, XTUPLE_0, FUNCT_2, CARD_2, ENUMSET1, GRFUNC_1, XREAL_0, NUMBERS; schemes FUNCT_1, SUBSET_1, NAT_1, XBOOLE_0, RELAT_1, CLASSES1; begin reserve a for natural Number, k,l,m,n,k1,b,c,i for Nat, x,y,z,y1,y2 for object, X,Y for set, f,g for Function; :: Segments of Natural Numbers definition let n be natural Number; func Seg n -> set equals { k where k is Nat: 1 <= k & k <= n }; correctness; end; definition let n be Nat; redefine func Seg n -> Subset of NAT; coherence proof set X = Seg n; X c= NAT proof let x be object; assume x in X; then ex k being Nat st x = k & 1 <= k & k <= n; hence thesis by ORDINAL1:def 12; end; hence thesis; end; end; theorem Th1: for a,b being natural Number holds a in Seg b iff 1 <= a & a <= b proof let a,b be natural Number; A1: a is Nat & b is Nat by TARSKI:1; a in { m where m is Nat: 1 <= m & m <= b } iff ex m being Nat st a = m & 1 <= m & m <= b; hence thesis by A1; end; registration let n be zero natural Number; cluster Seg n -> empty; coherence proof assume Seg n is not empty; then consider x being object such that A1: x in Seg n; ex k being Nat st k = x & 1 <= k & k <= 0 by A1; hence contradiction; end; end; theorem Th2: Seg 1 = { 1 } & Seg 2 = { 1,2 } proof now let x be object; thus x in Seg 1 implies x in { 1 } proof assume x in Seg 1; then consider k being Nat such that A1: x = k and A2: 1 <= k & k <= 1; k = 1 by A2,XXREAL_0:1; hence thesis by A1,TARSKI:def 1; end; assume x in { 1 }; then x = 1 by TARSKI:def 1; hence x in Seg 1; end; hence Seg 1 = { 1 } by TARSKI:2; now let x be object; thus x in Seg 2 implies x in { 1,2 } proof assume x in Seg 2; then consider k being Nat such that A3: x = k and A4: 1 <= k and A5: k <= 2; k <= 1 + 1 by A5; then k = 1 or k = 2 by A4,NAT_1:9; hence thesis by A3,TARSKI:def 2; end; assume x in { 1,2 }; then x = 1 or x = 2 by TARSKI:def 2; hence x in Seg 2; end; hence thesis by TARSKI:2; end; theorem Th3: for a being natural Number holds a = 0 or a in Seg a proof let a be natural Number; assume a <> 0; then ex b be Nat st a = b + 1 by NAT_1:6; then a in NAT & 1 <= a by NAT_1:11; hence thesis; end; registration let n be non zero natural Number; cluster Seg n -> non empty; coherence by Th3; end; theorem for a being natural Number holds a+1 in Seg(a+1) by Th3; theorem Th5: for a,b being natural Number holds a <= b iff Seg a c= Seg b proof let a,b be natural Number; thus a <= b implies Seg a c= Seg b proof assume A1: a <= b; let x be object; assume x in Seg a; then consider c being Nat such that A3: x = c & 1 <= c & c <= a; c <= b by A1,A3,XXREAL_0:2; hence thesis by A3; end; assume A4: Seg a c= Seg b; now assume a <> 0; then a in Seg a by Th3; hence thesis by A4,Th1; end; hence thesis; end; theorem Th6: for a,b being natural Number holds Seg a = Seg b implies a = b proof let a,b be natural Number; assume Seg a = Seg b; then a <= b & b <= a by Th5; hence thesis by XXREAL_0:1; end; theorem Th7: for a,b,c being natural Number holds c <= a implies Seg c = Seg a /\ Seg c by Th5,XBOOLE_1:28; theorem for a,c being natural Number holds Seg c = Seg c /\ Seg a implies c <= a by Th6,Th7; theorem Th9: for a being natural Number holds Seg a \/ { a+1 } = Seg (a+1) proof let a be natural Number; thus Seg a \/ { a+1 } c= Seg (a+1) proof a+0<=a+1 by XREAL_1:7; then A1: Seg a c= Seg(a+1) by Th5; let x be object; assume x in Seg a \/ { a+1 }; then x in Seg a or x in { a+1 } by XBOOLE_0:def 3; then x in Seg (a+1) or x = a+1 by A1,TARSKI:def 1; hence thesis by Th3; end; let x be object; assume A2: x in Seg (a+1); then reconsider x as Element of NAT; A3: x<=a+1 by A2,Th1; A4: 1<=x by A2,Th1; x<=a or x=a+1 by A3,NAT_1:8; then x in Seg a or x in {a+1} by A4,TARSKI:def 1; hence thesis by XBOOLE_0:def 3; end; theorem for k being natural Number holds Seg k = Seg(k + 1) \ {k + 1} proof let k be natural Number; A1: Seg(k + 1) = Seg k \/ {k + 1} by Th9; Seg k misses {k + 1} proof assume not thesis; then A2: Seg k /\ {k + 1} <> {}; set x = the Element of Seg k /\ {k + 1}; A3: x in Seg k by A2,XBOOLE_0:def 4; x in {k + 1} by A2,XBOOLE_0:def 4; then x = k + 1 by TARSKI:def 1; hence thesis by A3,Th1,XREAL_1:29; end; hence thesis by A1,XBOOLE_1:88; end; :: Finite Sequences definition let IT be Relation; attr IT is FinSequence-like means :Def2: ex n st dom IT = Seg n; end; registration cluster empty -> FinSequence-like for Relation; coherence proof let R be Relation; assume A1: R is empty; take 0; thus thesis by A1; end; end; definition mode FinSequence is FinSequence-like Function; end; reserve p,q,r,s,t for FinSequence; defpred P[object,object] means ex k st $1 = k & $2 = k+1; registration let n be natural Number; cluster Seg n -> finite; coherence proof reconsider n as Nat by TARSKI:1; Seg n is finite proof A1: n = { k where k is Nat: k < n } by AXIOMS:4; A2: for x being object st x in n ex y being object st P[x,y] proof let x be object; assume x in n; then ex k being Nat st x = k & k < n by A1; then reconsider k = x as Nat; take k+1; thus thesis; end; consider f such that A3: dom f = n and A4: for x being object st x in n holds P[x,f.x] from CLASSES1:sch 1(A2); take f; thus rng f = Seg n proof thus rng f c= Seg n proof let x be object; assume x in rng f; then consider y being object such that A5: y in dom f and A6: x = f.y by FUNCT_1:def 3; consider k such that A7: y = k and A8: x = k+1 by A3,A4,A5,A6; ex m being Nat st m = y & m < n by A1,A3,A5; then 1 <= k+1 & k+1 <= n by A7,NAT_1:11,13; hence thesis by A8; end; let x be object; assume x in Seg n; then consider k being Nat such that A9: x = k and A10: 1 <= k and A11: k <= n; consider i being Nat such that A12: 1+i = k by A10,NAT_1:10; i in NAT & i < n by A11,A12,NAT_1:13,ORDINAL1:def 12; then A13: i in n by A1; then P[i,f.i] by A4; hence thesis by A3,A9,A12,A13,FUNCT_1:def 3; end; thus thesis by A3,ORDINAL1:def 12; end; hence thesis; end; end; registration cluster FinSequence-like -> finite for Function; coherence proof let f be Function; given n such that A1: dom f = Seg n; rng f is finite by A1,FINSET_1:8; then [:dom f, rng f:] is finite by A1; hence thesis by FINSET_1:1,RELAT_1:7; end; end; Lm1: Seg n,n are_equipotent proof defpred P[Nat] means Seg $1,$1 are_equipotent; A1: P[0]; A2: for n st P[n] holds P[n+1] proof let n such that A3: Seg n,n are_equipotent; A4: Segm(n+1) = succ Segm n by NAT_1:38 .= n \/ { n }; A5: Seg(n+1) = Seg n \/ { n+1 } & { n+1 },{ n } are_equipotent by Th9, CARD_1:28; A6: now assume n meets { n }; then consider x being object such that A7: x in n and A8: x in { n } by XBOOLE_0:3; A: x = n by A8,TARSKI:def 1; reconsider xx = x as set by TARSKI:1; not xx in xx; hence contradiction by A7,A; end; now assume Seg n meets { n+1 }; then consider x being object such that A9: x in Seg n and A10: x in { n+1 } by XBOOLE_0:3; A11: x = n+1 by A10,TARSKI:def 1; not n+1 <= n by NAT_1:13; hence contradiction by A9,A11,Th1; end; hence thesis by A3,A4,A5,A6,CARD_1:31; end; for n holds P[n] from NAT_1:sch 2(A1,A2); hence thesis; end; registration let n be natural Number; cluster Seg n -> n-element; coherence proof n is Nat by TARSKI:1; hence thesis by Lm1,CARD_1:def 2; end; end; notation let p; synonym len p for card p; end; definition let p; redefine func len p -> Element of NAT means :Def3: Seg it = dom p; coherence proof card p = card p; hence thesis; end; compatibility proof let k be Element of NAT; consider n such that A1: dom p = Seg n by Def2; dom p,p are_equipotent proof deffunc F(object) = [$1,p.$1]; consider g being Function such that A2: dom g = dom p and A3: for x being object st x in dom p holds g.x = F(x) from FUNCT_1:sch 3; take g; thus g is one-to-one proof let x,y be object; assume that A4: x in dom g and A5: y in dom g; assume g.x = g.y; then [x,p.x] = g.y by A2,A3,A4 .= [y,p.y] by A2,A3,A5; hence thesis by XTUPLE_0:1; end; thus dom g = dom p by A2; thus rng g c= p proof let i be object; assume i in rng g; then consider x being object such that A6: x in dom g and A7: g.x = i by FUNCT_1:def 3; g.x = [x,p.x] by A2,A3,A6; hence thesis by A2,A6,A7,FUNCT_1:1; end; let x,y be object; assume A8: [x,y] in p; then A9: x in dom p by FUNCT_1:1; y = p.x by A8,FUNCT_1:1; then g.x = [x,y] by A3,A8,FUNCT_1:1; hence thesis by A2,A9,FUNCT_1:def 3; end; then A10: card p = card dom p by CARD_1:5; thus k = card p implies Seg k = dom p by A1,A10,Lm1,CARD_1:def 2; assume Seg k = dom p; hence k = card p by A10,Lm1,CARD_1:def 2; end; end; definition let p; redefine func dom p -> Subset of NAT; coherence proof dom p = Seg len p by Def3; hence thesis; end; end; theorem (ex k st dom f c= Seg k) implies ex p st f c= p proof given k such that A1: dom f c= Seg k; deffunc F(object) = f.$1; consider g such that A2: dom g = Seg k & for x being object st x in Seg k holds g.x = F(x) from FUNCT_1:sch 3; reconsider g as FinSequence by A2,Def2; take g; let y,z be object; assume A3: [y,z] in f; then A4: y in dom f by XTUPLE_0:def 12; reconsider z as set by TARSKI:1; A5: f.y = z by A3,FUNCT_1:def 2,A4; [y,g.y] in g by A1,A2,A4,FUNCT_1:1; hence thesis by A1,A2,A4,A5; end; scheme SeqEx{A()->Nat,P[object,object]}: ex p st dom p = Seg A() & for k st k in Seg A() holds P[k,p.k] provided A1: for k st k in Seg A() ex x st P[k,x] proof A2: for x being object st x in Seg A() ex y being object st P[x,y] by A1; consider f being Function such that A3: dom f = Seg A() & for x being object st x in Seg A() holds P[x,f.x] from CLASSES1:sch 1(A2); reconsider p=f as FinSequence by A3,Def2; take p; thus thesis by A3; end; scheme SeqLambda{A()->Nat,F(object) -> object}: ex p being FinSequence st len p = A() & for k st k in dom p holds p.k=F(k) proof consider f being Function such that A1: dom f = Seg A() & for x being object st x in Seg A() holds f.x=F(x) from FUNCT_1:sch 3; A2: A() in NAT by ORDINAL1:def 12; reconsider p=f as FinSequence by A1,Def2; take p; thus thesis by A1,A2,Def3; end; theorem z in p implies ex k st k in dom p & z=[k,p.k] proof assume A1: z in p; then consider x,y being object such that A2: z=[x,y] by RELAT_1:def 1; x in dom p by A1,A2,FUNCT_1:1; then reconsider k = x as Nat; take k; thus thesis by A1,A2,FUNCT_1:1; end; theorem dom p = dom q & (for k st k in dom p holds p.k = q.k) implies p=q; theorem Th14: len p = len q & (for k st 1 <= k & k <= len p holds p.k = q.k) implies p=q proof assume that A1: len p = len q and A2: for k st 1<=k & k<=len p holds p.k = q.k; A3: dom p = Seg len p by Def3; A4: dom q = Seg len q by Def3; now let x be object; assume A5: x in dom p; then reconsider k=x as Nat; 1 <= k & k <= len p by A3,A5,Th1; hence p.x = q.x by A2; end; hence thesis by A1,A3,A4; end; theorem Th15: p|(Seg a) is FinSequence proof A0: a is Nat by TARSKI:1; A1: dom(p|Seg a) = dom p /\ Seg a by RELAT_1:61 .=Seg len p /\ Seg a by Def3; len p <= a or a <= len p; then dom(p|Seg a) = Seg len p or dom(p|Seg a) = Seg a by A1,Th5,XBOOLE_1:28; hence thesis by A0,Def2; end; theorem rng p c= dom f implies f*p is FinSequence proof assume rng p c= dom f; then dom(f*p) = dom p by RELAT_1:27 .= Seg len p by Def3; hence thesis by Def2; end; theorem Th17: a <= len p & q = p|(Seg a) implies len q = a & dom q = Seg a proof assume that A1: a <= len p and A2: q = p|(Seg a); Seg a c= Seg len p by A1,Th5; then Seg a c= dom p by Def3; then a in NAT & dom q = Seg a by A2,ORDINAL1:def 12,RELAT_1:62; hence thesis by Def3; end; :: :: :: FinSequences of D :: :: :: definition let D be set; mode FinSequence of D -> FinSequence means :Def4: rng it c= D; existence proof rng {} c= D; hence thesis; end; end; registration let D be set; cluster -> D-valued for FinSequence of D; coherence proof let f be FinSequence of D; thus rng f c= D by Def4; end; end; Lm2: for D being set, f being FinSequence of D holds f is PartFunc of NAT,D proof let D be set, f be FinSequence of D; dom f c= NAT & rng f c= D by Def4; hence thesis by RELSET_1:4; end; registration cluster empty -> FinSequence-like for Relation; coherence; end; registration let D be set; cluster FinSequence-like for PartFunc of NAT,D; existence proof {} is PartFunc of NAT,D by RELSET_1:12; hence thesis; end; end; definition let D be set; redefine mode FinSequence of D -> FinSequence-like PartFunc of NAT,D; coherence by Lm2; end; reserve D for set; theorem Th18: for p being FinSequence of D holds p|(Seg a) is FinSequence of D proof let p be FinSequence of D; A1: p|(Seg a) is FinSequence by Th15; rng(p|(Seg a)) c= rng p & rng p c= D by Def4,RELAT_1:70; hence thesis by A1,Def4,XBOOLE_1:1; end; theorem for D being non empty set ex p being FinSequence of D st len p = a proof let D be non empty set; reconsider a as Element of NAT by ORDINAL1:def 12; set y = the Element of D; set p = Seg a --> y; A1: dom p = Seg a by FUNCOP_1:13; then reconsider p as FinSequence by Def2; rng p c= {y} & {y} c= D by FUNCOP_1:13,ZFMISC_1:31; then reconsider q=p as FinSequence of D by Def4,XBOOLE_1:1; take q; thus thesis by A1,Def3; end; :: :: :: The Empty FinSequence :: :: :: Lm3: q = {} iff len q = 0; theorem p <> {} iff len p >= 1 proof hereby assume p <> {}; then len p+1 > 0+1 by XREAL_1:8; hence len p >=1 by NAT_1:13; end; assume len p >= 1; hence thesis; end; definition let x be object; func <*x*> -> set equals { [1,x] }; coherence; end; definition let D be set; func <*>D -> FinSequence of D equals {}; coherence proof rng {} c= D; hence thesis by Def4; end; end; registration let D be set; cluster <*>D -> empty; coherence; end; registration let D be set; cluster empty for FinSequence of D; existence proof take <*>D; thus thesis; end; end; definition let p,q; func p^q -> FinSequence means :Def7: dom it = Seg (len p + len q) & (for k st k in dom p holds it.k=p.k) & for k st k in dom q holds it.(len p + k) = q.k; existence proof defpred P[object,object] means (for k st k=$1 & 1 <= k & k <= len p holds $2=p.k) & (for k st k=$1 & len p + 1 <= k & k <= len p + len q holds $2=q.(k-len p)); A1: for x being object st x in Seg(len p + len q) ex y being object st P[x,y] proof let x be object; assume x in Seg(len p + len q); then reconsider m=x as Element of NAT; A2: now assume A3: len p + 1 <= m; set y = q.(m-len p); A4: for k st k=x & 1 <= k & k <= len p holds y=p.k proof let k; assume that A5: k=x and 1 <= k and A6: k <= len p; m + (len p + 1) <= m + len p by A3,A5,A6,XREAL_1:7; then m + len p + 1 <= m + len p + 0; hence thesis by XREAL_1:6; end; for k st k=x & len p + 1 <= k & k <= len p + len q holds y=q.(k-len p); hence thesis by A4; end; now assume A7: not len p + 1 <= m; set y=p.m; ( for k st k=x & 1 <= k & k <= len p holds y=p.k)& for k st k=x & len p + 1 <= k & k <= len p + len q holds y=q.(k-len p) by A7; hence thesis; end; hence thesis by A2; end; consider f such that A8: dom f=Seg(len p + len q) & for x being object st x in Seg(len p + len q) holds P[x,f.x] from CLASSES1:sch 1 (A1); A9: for k st k in dom p holds f.k=p.k proof let k; assume k in dom p; then A10: k in Seg len p by Def3; then A11: 1 <= k & k <= len p by Th1; Seg len p c= Seg(len p + len q) by Th5,NAT_1:11; hence thesis by A8,A10,A11; end; A12: for n st n in dom q holds f.(len p+n)=q.n proof let n; assume n in dom q; then A13: n in Seg len q by Def3; then A14: 1 <= n by Th1; A15: n <= len q by A13,Th1; A16: len p + 1 <= len p + n by A14,XREAL_1:7; A17: len p + n <= len p + len q by A15,XREAL_1:7; len p + n <= len p + n + len p by NAT_1:11; then len p + 1 <= len p + n + len p by A16,XXREAL_0:2; then 1 <= len p + n by XREAL_1:6; then (len p + n) in Seg(len p + len q) by A17; then f.(len p + n)=q.(n + len p - len p) by A8,A16,A17; hence thesis; end; reconsider r=f as FinSequence by A8,Def2; take r; thus thesis by A8,A9,A12; end; uniqueness proof let f,g be FinSequence such that A18: dom f = Seg(len p + len q) and A19: for k st k in dom p holds f.k=p.k and A20: for k st k in dom q holds f.(len p + k)=q.k and A21: dom g = Seg(len p + len q) and A22: for k st k in dom p holds g.k=p.k and A23: for k st k in dom q holds g.(len p + k)=q.k; for x being object st x in Seg(len p + len q) holds f.x=g.x proof let x be object; assume A24: x in Seg(len p + len q); then reconsider k=x as Element of NAT; A25: 1 <= k by A24,Th1; A26: now assume len p + 1 <= k; then consider m be Nat such that A27: len p + 1 + m = k by NAT_1:10; len p + (1 + m) <= len p + len q by A24,A27,Th1; then 1+0<=1+m & 1 + m <= len q by XREAL_1:6; then (1+m) in Seg len q; then A28: (1+m) in dom q by Def3; then g.(len p +(1+m)) = q.(1+m) by A23; hence thesis by A20,A27,A28; end; now assume not len p + 1 <= k; then k <= len p by NAT_1:8; then k in Seg len p by A25; then A29: k in dom p by Def3; then f.k=p.k by A19; hence thesis by A22,A29; end; hence thesis by A26; end; hence thesis by A18,A21; end; end; theorem Th21: p = (p ^ q) | (dom p) proof A1: dom(p ^ q) = Seg(len p + len q) by Def7; A2: dom p = Seg len p by Def3; then A3: dom p = dom(p ^ q) /\ Seg len p by A1,Th7,NAT_1:12; for x being object st x in dom p holds p.x = (p ^ q).x by Def7; hence thesis by A2,A3,FUNCT_1:46; end; theorem Th22: len(p^q) = len p + len q proof dom(p^q) = Seg(len p + len q) by Def7; hence thesis by Def3; end; theorem Th23: for k being Nat st len p + 1 <= k & k <= len p + len q holds (p^q).k=q.(k-len p) proof let k be Nat; assume that A1: len p + 1 <= k and A2: k <= len p + len q; consider m be Nat such that A3: (len p + 1)+m=k by A1,NAT_1:10; A4: len p+(1+m) = k by A3; 1+m = k - len p by A3; then A5: 1 <= 1+m by A1,XREAL_1:19; k-len p <= len q by A2,XREAL_1:20; then 1+m in Seg len q by A3,A5; then 1+m in dom q by Def3; hence thesis by A4,Def7; end; theorem Th24: for k being Nat st len p < k & k <= len(p^q) holds (p^q).k = q.(k - len p) proof let k be Nat; assume len p < k & k <= len(p^q); then len p + 1 <= k & k <= len p + len q by Th22,NAT_1:13; hence thesis by Th23; end; theorem Th25: for k being Nat st k in dom (p^q) holds (k in dom p or ex n st n in dom q & k=len p + n ) proof let k be Nat; assume k in dom(p^q); then A1: k in Seg len (p^q) by Def3; then A2: k in Seg(len p + len q) by Th22; A3: k in NAT & 1 <= k by A1,Th1; A4: now assume not len p+1 <= k; then k <= len p by NAT_1:8; then k in Seg len p by A3; hence thesis by Def3; end; now assume len p + 1 <= k; then consider n be Nat such that A5: k=len p + 1 + n by NAT_1:10; len p + (1 + n) <= len p + len q by A2,A5,Th1; then A6: 1+n <= len q by XREAL_1:6; 1 <= 1+n by NAT_1:11; then 1+n in Seg len q by A6; then A7: 1+n in dom q by Def3; k=len p + (1+n) by A5; hence thesis by A7; end; hence thesis by A4; end; theorem Th26: dom p c= dom(p^q) proof Seg len p c= Seg(len p + len q) by Th5,NAT_1:11; then Seg len p c= dom(p^q) by Def7; hence thesis by Def3; end; theorem Th27: x in dom q implies ex k st k=x & len p + k in dom(p^q) proof assume A1: x in dom q; then A2: x in Seg len q by Def3; reconsider k=x as Element of NAT by A1; take k; A3: 1 <= k by A2,Th1; A4: k <= len q by A2,Th1; k <= len p + k by NAT_1:11; then A5: 1 <= len p + k by A3,XXREAL_0:2; len p + k <= len p + len q by A4,XREAL_1:7; then len p + k in Seg(len p + len q) by A5; hence thesis by Def7; end; theorem Th28: k in dom q implies len p + k in dom(p^q) proof assume k in dom q; then ex n st n=k & len p + n in dom(p^q) by Th27; hence thesis; end; theorem Th29: rng p c= rng(p^q) proof let x be object; assume x in rng p; then consider y being object such that A1: y in dom p and A2: x=p.y by FUNCT_1:def 3; reconsider k=y as Element of NAT by A1; A3: dom p c= dom(p^q) by Th26; (p^q).k=p.k by A1,Def7; hence x in rng(p^q) by A1,A2,A3,FUNCT_1:def 3; end; theorem Th30: rng q c= rng(p^q) proof let x be object; assume x in rng q; then consider y being object such that A1: y in dom q and A2: x=q.y by FUNCT_1:def 3; reconsider k=y as Element of NAT by A1; len p + k in dom(p^q) & (p^q).(len p + k) = q.k by A1,Def7,Th28; hence x in rng(p^q) by A2,FUNCT_1:def 3; end; theorem Th31: rng(p^q) = rng p \/ rng q proof now let x be object; assume x in rng(p^q); then consider y being object such that A1: y in dom(p^q) and A2: x=(p^q).y by FUNCT_1:def 3; A3: y in Seg(len p + len q) by A1,Def7; reconsider k=y as Element of NAT by A1; A4: 1 <= k by A3,Th1; A5: k <= len p + len q by A3,Th1; A6: now assume A7: len p + 1 <= k; then A8: q.(k-len p) = x by A2,A5,Th23; consider m be Nat such that A9: (len p+1)+m = k by A7,NAT_1:10; len p +(1+m) = k by A9; then 1+0<=1+m & 1+m <= len q by A3,Th1,XREAL_1:6; then 1+m in Seg len q; then k-len p in dom q by A9,Def3; hence x in rng q by A8,FUNCT_1:def 3; end; now assume not len p + 1 <= k; then k <= len p by NAT_1:8; then k in Seg len p by A4; then A10: k in dom p by Def3; then p.k = x by A2,Def7; hence x in rng p by A10,FUNCT_1:def 3; end; hence x in rng p \/ rng q by A6,XBOOLE_0:def 3; end; then A11: rng(p^q) c= rng p \/ rng q; rng p c= rng(p^q) & rng q c= rng(p^q) by Th29,Th30; then (rng p \/ rng q) c= rng(p^q) by XBOOLE_1:8; hence thesis by A11; end; theorem Th32: p^q^r = p^(q^r) proof A1: dom ((p^q)^r) = Seg(len (p^q) + len r) by Def7 .= Seg(len p + len q + len r) by Th22 .= Seg(len p + (len q + len r)) .= Seg(len p + len(q^r)) by Th22; A2: for k st k in dom p holds ((p^q)^r).k=p.k proof let k; assume A3: k in dom p; dom p c= dom(p^q) by Th26; hence (p^q^r).k=(p^q).k by A3,Def7 .=p.k by A3,Def7; end; for k st k in dom(q^r) holds ((p^q)^r).(len p + k)=(q^r).k proof let k; assume A4: k in dom(q^r); A5: now assume A6: k in dom q; then (len p + k) in dom(p^q) by Th28; hence (p^q^r).(len p + k) = (p^q).(len p + k) by Def7 .=q.k by A6,Def7 .=(q^r).k by A6,Def7; end; now assume not k in dom q; then consider n such that A7: n in dom r and A8: k=len q + n by A4,Th25; thus (p^q^r).(len p + k) =(p^q^r).(len p + len q + n) by A8 .=(p^q^r).(len(p^q) + n) by Th22 .=r.n by A7,Def7 .=(q^r).k by A7,A8,Def7; end; hence thesis by A5; end; hence thesis by A1,A2,Def7; end; theorem p^r = q^r or r^p = r^q implies p = q proof assume A1: p^r = q^r or r^p = r^q; A2: now assume A3: p^r = q^r; then len p + len r = len(q^r) by Th22; then len p + len r = len q + len r by Th22; then A4: dom p = Seg len q by Def3 .= dom q by Def3; for k st k in dom p holds p.k=q.k proof let k; assume A5: k in dom p; hence p.k=(q^r).k by A3,Def7 .=q.k by A4,A5,Def7; end; hence thesis by A4; end; now assume A6: r^p=r^q; then len r + len p = len(r^q) by Th22 .=len r + len q by Th22; then A7: dom p = Seg len q by Def3 .= dom q by Def3; for k st k in dom p holds p.k=q.k proof let k; assume A8: k in dom p; hence p.k = (r^q).(len r + k) by A6,Def7 .= q.k by A7,A8,Def7; end; hence thesis by A7; end; hence thesis by A1,A2; end; theorem Th34: p^{} = p & {}^p = p proof A1: dom(p^{}) = Seg len (p^{}) by Def3 .= Seg (len p + len {}) by Th22 .= dom p by Def3; for k st k in dom p holds p.k=(p^{}).k by Def7; hence p^{} = p by A1; A2: dom({}^p) = Seg len ({}^p) by Def3 .= Seg (len {} + len p) by Th22 .= dom p by Def3; for k st k in dom p holds p.k = ({}^p).k proof let k; assume A3: k in dom p; thus ({}^p).k =({}^p).(len {} + k) .=p.k by A3,Def7; end; hence {}^p=p by A2; end; theorem Th35: p^q = {} implies p={} & q={} proof assume p^q={}; then 0 = len (p^q) .= len p + len q by Th22; hence thesis; end; definition let D be set; let p,q be FinSequence of D; redefine func p^q -> FinSequence of D; coherence proof A1: rng(p^q) = rng p \/ rng q & rng p c= D by Def4,Th31; rng q c= D by Def4; hence rng(p^q) c= D by A1,XBOOLE_1:8; end; end; Lm4: for x1, y1 being object holds [x,y] in {[x1,y1]} implies x = x1 & y = y1 proof let x1, y1 be object; assume [x,y] in {[x1,y1]}; then [x,y] = [x1,y1] by TARSKI:def 1; hence thesis by XTUPLE_0:1; end; definition let x be object; redefine func <*x*> -> Function means :Def8: dom it = Seg 1 & it.1 = x; coherence; compatibility proof let f be Function; hereby assume A1: f = <*x*>; hence dom f = Seg 1 by Th2,RELAT_1:9; [1,x] in f by A1,TARSKI:def 1; hence f.1 = x by FUNCT_1:1; end; assume that A2: dom f = Seg 1 and A3: f.1 = x; reconsider g = { [1,f.1] } as Function; for y,z being object holds [y,z] in f iff [y,z] in g proof let y,z be object; hereby assume A4: [y,z] in f; then A5: y in {1} by A2,Th2,XTUPLE_0:def 12; A6: z in rng f by A4,XTUPLE_0:def 13; A7: rng f = {f.1} by A2,Th2,FUNCT_1:4; A8: y = 1 by A5,TARSKI:def 1; z = f.1 by A6,A7,TARSKI:def 1; hence [y,z] in g by A8,TARSKI:def 1; end; assume [y,z] in g; then A9: y = 1 & z = f.1 by Lm4; 1 in dom f by A2; hence thesis by A9,FUNCT_1:def 2; end; hence thesis by A3,RELAT_1:def 2; end; end; registration let x be object; cluster <*x*> -> Function-like Relation-like; coherence; end; registration let x be object; cluster <*x*> -> FinSequence-like; coherence by Def8; end; theorem Th36: p^q is FinSequence of D implies p is FinSequence of D & q is FinSequence of D proof assume p^q is FinSequence of D; then rng(p^q) c= D by Def4; then A1: rng p \/ rng q c= D by Th31; rng p c= rng p \/ rng q by XBOOLE_1:7; hence p is FinSequence of D by Def4,A1,XBOOLE_1:1; rng q c= rng p \/ rng q by XBOOLE_1:7; hence thesis by Def4,A1,XBOOLE_1:1; end; definition let x,y be object; func <*x,y*> -> set equals <*x*>^<*y*>; correctness; let z be object; func <*x,y,z*> -> set equals <*x*>^<*y*>^<*z*>; correctness; end; registration let x,y be object; cluster <*x,y*> -> Function-like Relation-like; coherence; let z be object; cluster <*x,y,z*> -> Function-like Relation-like; coherence; end; registration let x,y be object; cluster <*x,y*> -> FinSequence-like; coherence; let z be object; cluster <*x,y,z*> -> FinSequence-like; coherence; end; theorem for x being object holds <*x*> = { [1,x] }; theorem Th38: for x being object holds p=<*x*> iff dom p = Seg 1 & rng p = {x} proof let x be object; thus p = <*x*> implies dom p = Seg 1 & rng p = {x} proof assume A1: p = <*x*>; hence dom p = Seg 1 by Def8; dom p = {1} by A1,Def8,Th2; then rng p = {p.1} by FUNCT_1:4; hence thesis by A1,Def8; end; assume that A2: dom p = Seg 1 and A3: rng p = {x}; 1 in dom p by A2; then p.1 in {x} by A3,FUNCT_1:def 3; then p.1 = x by TARSKI:def 1; hence thesis by A2,Def8; end; theorem Th39: for x being object holds p=<*x*> iff len p = 1 & rng p = {x} proof let x be object; len p = 1 iff dom p = Seg 1 by Def3; hence thesis by Th38; end; theorem Th40: for x being object holds p = <*x*> iff len p = 1 & p.1 = x proof let x be object; len p = 1 iff dom p = Seg 1 by Def3; hence thesis by Def8; end; theorem for x being object holds (<*x*>^p).1 = x proof let x be object; 1 in Seg 1; then 1 in dom <*x*> by Def8; then (<*x*>^p).1 = <*x*>.1 by Def7; hence thesis by Def8; end; theorem Th42: for x being object holds (p^<*x*>).(len p + 1)=x proof let x be object; dom <*x*> = Seg 1 by Def8; then 1 in dom <*x*>; hence (p^<*x*>).(len p + 1) = <*x*>.1 by Def7 .=x by Def8; end; theorem for x,y,z being object holds <*x,y,z*>=<*x*>^<*y,z*> & <*x,y,z*>=<*x,y*>^<*z*> by Th32; theorem Th44: for x,y being object holds p = <*x,y*> iff len p = 2 & p.1=x & p.2=y proof let x,y be object; thus p = <*x,y*> implies len p = 2 & p.1=x & p.2=y proof assume A1: p=<*x,y*>; hence len p = len <*x*> + len <*y*> by Th22 .= 1 + len <*y*> by Th39 .= 1 + 1 by Th39 .=2; A2: 1 in {1} by TARSKI:def 1; then 1 in dom <*x*> by Def8,Th2; hence p.1 = <*x*>.1 by A1,Def7 .= x by Def8; A3: 1 in dom <*y*> by A2,Def8,Th2; thus p.2 = (<*x*>^<*y*>).(1+1) by A1 .= (<*x*>^<*y*>).(len <*x*> + 1) by Th39 .= <*y*>.1 by A3,Def7 .= y by Def8; end; assume that A4: len p = 2 and A5: p.1=x and A6: p.2=y; A7: dom p = Seg(1+1) by A4,Def3 .= Seg(len <*x*> + 1) by Th39 .= Seg(len <*x*> + len <*y*>) by Th39; A8: for k st k in dom <*x*> holds p.k=<*x*>.k proof let k; assume k in dom <*x*>; then k in {1} by Def8,Th2; then k=1 by TARSKI:def 1; hence thesis by A5,Def8; end; for k st k in dom <*y*> holds p.((len <*x*>)+k)=<*y*>.k proof let k; assume k in dom <*y*>; then A9: k in {1} by Def8,Th2; thus p.((len <*x*>) + k) = p.(1+k) by Th39 .=p.(1+1) by A9,TARSKI:def 1 .=<*y*>.1 by A6,Def8 .= <*y*>.k by A9,TARSKI:def 1; end; hence thesis by A7,A8,Def7; end; theorem Th45: for x,y,z being object holds p = <*x,y,z*> iff len p = 3 & p.1 = x & p.2 = y & p.3 = z proof let x,y,z be object; thus p = <*x,y,z*> implies len p = 3 & p.1 = x & p.2 = y & p.3 = z proof assume A1: p =<*x,y,z*>; hence len p =len <*x,y*> + len <*z*> by Th22 .=2 + len <*z*> by Th44 .=2+1 by Th39 .=3; A2: 1 in {1} by TARSKI:def 1; then A3: 1 in dom <*x*> by Def8,Th2; thus p.1 = (<*x*>^<*y,z*>).1 by A1,Th32 .=<*x*>.1 by A3,Def7 .=x by Def8; 2 in Seg 2 & len <*x,y*> = 2 by Th44; then 2 in dom <*x,y*> by Def3; hence p.2 =<*x,y*>.2 by A1,Def7 .=y by Th44; A4: 1 in dom <*z*> by A2,Def8,Th2; thus p.3 = (<*x,y*>^<*z*>).(2+1) by A1 .=(<*x,y*>^<*z*>).(len (<*x,y*>) + 1) by Th44 .= <*z*>.1 by A4,Def7 .= z by Def8; end; assume that A5: len p = 3 and A6: p.1 = x and A7: p.2 = y and A8: p.3 = z; A9: dom p = Seg(2+1) by A5,Def3 .= Seg((len <*x,y*>) + 1) by Th44 .= Seg((len <*x,y*>) + len <*z*>) by Th39; A10: for k st k in dom <*x,y*> holds p.k=<*x,y*>.k proof let k such that A11: k in dom <*x,y*>; len <*x,y*> = 2 by Th44; then A12: k in Seg 2 by A11,Def3; A13: k=1 implies p.k=<*x,y*>.k by A6,Th44; k=2 implies p.k=<*x,y*>.k by A7,Th44; hence thesis by A12,A13,Th2,TARSKI:def 2; end; for k st k in dom <*z*> holds p.( (len <*x,y*>) + k) = <*z*>.k proof let k; assume k in dom <*z*>; then k in {1} by Def8,Th2; then A14: k = 1 by TARSKI:def 1; hence p.( (len <*x,y*>) + k) = p.(2+1) by Th44 .=<*z*>.k by A8,A14,Def8; end; hence thesis by A9,A10,Def7; end; theorem Th46: for x being object holds p <> {} implies ex q,x st p=q^<*x*> proof let x be object; assume p <> {}; then consider n be Nat such that A1: len p = n + 1 by NAT_1:6; reconsider n as Element of NAT by ORDINAL1:def 12; reconsider q=p|Seg n as FinSequence by Th15; take q; take p.(len p); A2: dom q = dom p /\ Seg n by RELAT_1:61 .= Seg len p /\ Seg n by Def3; Seg n c= Seg len p by Th5,A1,NAT_1:11; then A3: dom q = Seg n by A2,XBOOLE_1:28; A4: dom(q^<*p.(len p)*>) = Seg len (q^<*p.(len p)*>) by Def3 .= Seg(len q + len <*p.(len p)*>) by Th22 .= Seg(len q + 1) by Th39 .= Seg len p by A1,A3,Def3 .= dom p by Def3; for x being object st x in dom p holds p.x = (q^<*p.(len p)*>).x proof let x be object; assume A5: x in dom p; then reconsider k = x as Element of NAT; k in Seg(n+1) by A1,A5,Def3; then A6: k in Seg n \/ {n+1} by Th9; A7: now assume A8: k in Seg n; hence p.k=q.k by A3,FUNCT_1:47 .=(q^<*p.(len p)*>).k by A3,A8,Def7; end; now assume A9: k in {n+1}; 1 in Seg 1; then A10: 1 in dom <*p.(len p)*> by Def8; thus (q^<*p.(len p)*>).k =(q^<*p.(len p)*>).(n+1) by A9,TARSKI:def 1 .=(q^<*p.(len p)*>).(len q + 1) by A3,Def3 .=<*p.(len p)*>.1 by A10,Def7 .=p.(n+1) by A1,Def8 .=p.k by A9,TARSKI:def 1; end; hence thesis by A6,A7,XBOOLE_0:def 3; end; hence q^<*p.(len p)*>=p by A4; end; definition let D be non empty set; let x be Element of D; redefine func <*x*> -> FinSequence of D; coherence proof let y be object; assume y in rng <*x*>; then y in {x} by Th39; then y = x by TARSKI:def 1; hence thesis; end; end; :: scheme of induction for finite sequences :: scheme IndSeq{P[FinSequence]}: for p holds P[p] provided A1: P[{}] and A2: for p,x st P[p] holds P[p^<*x*>] proof let p; defpred R[set] means for p st len p = $1 holds P[p]; consider X being Subset of REAL such that A3: for x being Element of REAL holds x in X iff R[x] from SUBSET_1:sch 3; for k holds k in X proof A4: 0 in REAL by XREAL_0:def 1; defpred S[Nat] means $1 in X; for q st len q = 0 holds P[q] by A1,Lm3; then A5: S[0] by A3,A4; now let n such that A6: n in X; A7: n+1 in REAL by NUMBERS:19; now let q; assume A8: len q = n+1; then q <> {}; then consider r,x such that A9: q=r^<*x*> by Th46; len q = len r + len <*x*> by A9,Th22 .= len r + 1 by Th39; hence P[q] by A2,A9,A3,A6,A8; end; hence n+1 in X by A3,A7; end; then A10: for n st S[n] holds S[n+1]; thus for n holds S[n] from NAT_1:sch 2(A5,A10); end; then len p in X; hence thesis by A3; end; theorem for p,q,r,s being FinSequence st p^q = r^s & len p <= len r ex t being FinSequence st p^t = r proof defpred S[FinSequence] means for p,q,s st p^q=$1^s & len p <= len $1 holds ex t st p^t=$1; A1: S[{}] proof let p,q,s; assume that p^q={}^s and A2: len p <= len {}; take {}; thus p^{} = p by Th34 .= {} by A2; end; A3: for r,x st S[r] holds S[r^<*x*>] proof let r,x; assume A4: for p,q,s st p^q=r^s & len p <= len r ex t st p^t=r; let p,q,s; assume that A5: p^q=(r^<*x*>)^s and A6: len p <= len (r^<*x*>); A7: now assume len p = len(r^<*x*>); then A8: dom p = Seg len(r^<*x*>) by Def3 .= dom(r^<*x*>) by Def3; A9: for k st k in dom p holds p.k=(r^<*x*>).k proof let k; assume A10: k in dom p; hence p.k = (r^<*x*>^s).k by A5,Def7 .=(r^<*x*>).k by A8,A10,Def7; end; p^{} = p by Th34 .=r^<*x*> by A8,A9; hence thesis; end; now assume len p <> len(r^<*x*>); then len p <> len r + len <*x*> by Th22; then A11: len p <> len r + 1 by Th39; len p <= len r + len <*x*> by A6,Th22; then A12: len p <= len r + 1 by Th39; p^q=r^(<*x*>^s) by A5,Th32; then consider t being FinSequence such that A13: p^t = r by A4,A11,A12,NAT_1:8; p^(t^<*x*>) = r^<*x*> by A13,Th32; hence thesis; end; hence thesis by A7; end; for r holds S[r] from IndSeq(A1,A3); hence thesis; end; registration cluster -> NAT-defined for FinSequence; coherence proof let f be FinSequence; thus dom f c= NAT; end; end; definition let D be set; func D* -> set means :Def11: x in it iff x is FinSequence of D; existence proof defpred P[object] means $1 is FinSequence of D; consider X such that A1: for x being object holds x in X iff x in bool [:NAT,D:] & P[x] from XBOOLE_0:sch 1; take X; let x; thus x in X implies x is FinSequence of D by A1; assume x is FinSequence of D; then reconsider p = x as FinSequence of D; p c= [:NAT,D:]; hence thesis by A1; end; uniqueness proof let D1,D2 be set such that A2: x in D1 iff x is FinSequence of D and A3: x in D2 iff x is FinSequence of D; now let x be object; thus x in D1 implies x in D2 proof assume x in D1; then x is FinSequence of D by A2; hence thesis by A3; end; assume x in D2; then x is FinSequence of D by A3; hence x in D1 by A2; end; hence thesis by TARSKI:2; end; end; registration let D be set; cluster D* -> non empty; coherence proof set f = the FinSequence of D; f in D* by Def11; hence thesis; end; end; theorem rng p = rng q & p is one-to-one & q is one-to-one implies len p = len q proof defpred P[FinSequence] means $1 is one-to-one implies for q st rng $1 = rng q & q is one-to-one holds len $1 = len q; A1: P[{}] by RELAT_1:41; now let p,x; assume A2: p is one-to-one implies for q st rng p = rng q & q is one-to-one holds len p = len q; assume A3: p ^ <* x *> is one-to-one; let q; assume that A4: rng(p ^ <* x *>) = rng q and A5: q is one-to-one; A6: rng(p ^ <* x *>) = rng p \/ rng<* x *> by Th31 .= rng p \/ {x} by Th38; x in {x} by TARSKI:def 1; then x in rng q by A4,A6,XBOOLE_0:def 3; then consider y being object such that A7: y in dom q and A8: x = q.y by FUNCT_1:def 3; A9: y in Seg(len q) by A7,Def3; reconsider y as Element of NAT by A7; A10: 1 <= y by A9,Th1; then consider k be Nat such that A11: 1 + k = y by NAT_1:10; A12: y <= len q by A9,Th1; then consider n be Nat such that A13: y + n = len q by NAT_1:10; reconsider k,n as Element of NAT by ORDINAL1:def 12; reconsider q1 = q | (Seg k) as FinSequence by Th15; defpred P[Nat,object] means $2 = q.(y + $1); A14: for j being Nat st j in Seg n ex x st P[j,x]; consider q2 being FinSequence such that A15: dom q2 = Seg n and A16: for j being Nat st j in Seg n holds P[j,q2.j] from SeqEx(A14); A17: k <= y by A11,NAT_1:12; then A18: k <= len q by A12,XXREAL_0:2; then A19: len q1 = k by Th17; len(q1 ^ <* x *>) + len q2 = len q1 + len<* x *> + len q2 by Th22 .= k + 1 + len q2 by A19,Th39 .= len q by A11,A13,A15,Def3; then A20: dom q = Seg(len(q1 ^ <* x *>) + len q2) by Def3; A21: rng(q1 ^ q2) = rng q \ {x} proof thus rng(q1 ^ q2) c= rng q \ {x} proof let z be object; assume z in rng(q1 ^ q2); then A22: z in rng q1 \/ rng q2 by Th31; A23: now assume A24: z in rng q1; A25: rng q1 = q .: (Seg k) & q .: (Seg k) c= rng q by RELAT_1:111,115; consider y1 being object such that A26: y1 in dom q1 and A27: q1.y1 = z by A24,FUNCT_1:def 3; A28: q1.y1 = q.y1 by A26,FUNCT_1:47; A29: y1 in Seg(len q1) by A26,Def3; reconsider y1 as Element of NAT by A26; A30: y1 <= k by A19,A29,Th1; A31: k < y by A11,XREAL_1:29; Seg k c= Seg(len q) by A17,Th5,A12,XXREAL_0:2; then dom q1 c= Seg(len q) by A18,Th17; then dom q1 c= dom q by Def3; then x <> z by A5,A7,A8,A26,A27,A28,A30,A31; then not z in {x} by TARSKI:def 1; hence thesis by A24,A25,XBOOLE_0:def 5; end; now assume z in rng q2; then consider y1 being object such that A32: y1 in dom q2 and A33: q2.y1 = z by FUNCT_1:def 3; reconsider y1 as Element of NAT by A32; A34: q2.y1 = q.(y + y1) by A15,A16,A32; A35: 1 <= y + y1 by A10,NAT_1:12; y1 <= n by A15,A32,Th1; then y + y1 <= len q by A13,XREAL_1:7; then y + y1 in Seg(len q) by A35; then A36: y + y1 in dom q by Def3; then A37: z in rng q by A33,A34,FUNCT_1:def 3; y1 <> 0 by A15,A32,Th1; then y <> y + y1; then x <> z by A5,A7,A8,A33,A34,A36; then not z in {x} by TARSKI:def 1; hence thesis by A37,XBOOLE_0:def 5; end; hence thesis by A22,A23,XBOOLE_0:def 3; end; let z be object; assume A38: z in rng q \ {x}; then consider y1 being object such that A39: y1 in dom q and A40: z = q.y1 by FUNCT_1:def 3; A41: y1 in Seg(len q) by A39,Def3; reconsider y1 as Element of NAT by A39; not z in {x} by A38,XBOOLE_0:def 5; then A42: y <> y1 by A8,A40,TARSKI:def 1; A43: now assume A44: y < y1; then consider j being Nat such that A45: y1 = y + j by NAT_1:10; A46: 1 <= j by A44,A45,NAT_1:19; j <= n by A13,A41,A45,Th1,XREAL_1:6; then A47: j in Seg n by A46; then z = q2.j by A16,A40,A45; hence z in rng q2 by A15,A47,FUNCT_1:def 3; end; now assume A48: y1 < y; A49: 1 <= y1 by A41,Th1; y1 <= k by A11,A48,NAT_1:13; then y1 in Seg k by A49; then A50: y1 in dom q1 by A18,Th17; then q1.y1 = z by A40,FUNCT_1:47; hence z in rng q1 by A50,FUNCT_1:def 3; end; then z in rng q1 \/ rng q2 by A42,A43,XBOOLE_0:def 3,XXREAL_0:1; hence thesis by Th31; end; A51: p = (p ^ <* x *>) | (dom p) by Th21; A52: rng p = rng(p ^ <* x *>) \ {x} proof thus rng p c= rng(p ^ <* x *>) \ {x} proof let z be object; assume A53: z in rng p; A54: rng p c= rng(p ^ <* x *>) by A51,RELAT_1:70; consider y1 being object such that A55: y1 in dom p and A56: p.y1 = z by A53,FUNCT_1:def 3; A57: y1 in Seg(len p) by A55,Def3; reconsider y1 as Element of NAT by A55; A58: (p ^ <* x *>).(len p + 1) = x by Th42; A59: (p ^ <* x *>).y1 = p.y1 by A51,A55,FUNCT_1:47; A60: y1 <= len p by A57,Th1; A61: len p < len p +1 by XREAL_1:29; A62: 1 <= y1 by A57,Th1; y1 <= len p + 1 by A60,A61,XXREAL_0:2; then A63: y1 in Seg(len p + 1) by A62; A64: len p + 1 in Seg(len p + 1) by Th3; A65: y1 in Seg(len p + len<* x *>) by A63,Th40; A66: len p + 1 in Seg(len p + len<* x *>) by A64,Th40; A67: y1 in dom(p ^ <* x *>) by A65,Def7; len p + 1 in dom(p ^ <* x *>) by A66,Def7; then x <> z by A3,A56,A58,A59,A60,A61,A67; then not z in {x} by TARSKI:def 1; hence thesis by A53,A54,XBOOLE_0:def 5; end; let z be object; assume A68: z in rng(p ^ <* x *>) \ {x}; then A69: z in rng(p ^ <* x *>); A70: not z in {x} by A68,XBOOLE_0:def 5; z in rng p \/ rng<* x *> by A69,Th31; then z in rng p or z in rng<* x *> by XBOOLE_0:def 3; hence thesis by A70,Th38; end; A71: q1 ^ q2 is one-to-one proof let y1,y2 be object; assume that A72: y1 in dom(q1 ^ q2) & y2 in dom(q1 ^ q2) and A73: (q1 ^ q2).y1 = (q1 ^ q2).y2; reconsider m1 = y1, m2 = y2 as Element of NAT by A72; A74: q1 is one-to-one by A5,FUNCT_1:52; A75: now assume A76: m1 in dom q1 & m2 in dom q1; then (q1 ^ q2).m1 = q1.m1 & (q1 ^ q2).m2 = q1.m2 by Def7; hence thesis by A73,A74,A76; end; A77: now assume A78: m1 in dom q1; given j being Nat such that A79: j in dom q2 and A80: m2 = len q1 + j; A81: (q1 ^ q2).m2 = q2.j by A79,A80,Def7; (q1 ^ q2).m1 = q1.m1 & q1.m1 = q.m1 by A78,Def7,FUNCT_1:47; then A82: q.m1 = q.(y + j) by A15,A16,A73,A79,A81; 1 <= j by A15,A79,Th1; then A83: 1 <= y + j by NAT_1:12; j <= n by A15,A79,Th1; then y + j <= len q by A13,XREAL_1:7; then y + j in Seg(len q) by A83; then A84: y + j in dom q by Def3; m1 in Seg k by A18,A78,Th17; then A85: m1 <= k by Th1; k < y by A11,XREAL_1:29; then A86: m1 < y by A85,XXREAL_0:2; dom q1 c= dom q & y <= y + j by NAT_1:12,RELAT_1:60; hence thesis by A5,A78,A82,A84,A86; end; A87: now assume A88: m2 in dom q1; given j be Nat such that A89: j in dom q2 and A90: m1 = len q1 + j; A91: (q1 ^ q2).m1 = q2.j by A89,A90,Def7; (q1 ^ q2).m2 = q1.m2 & q1.m2 = q.m2 by A88,Def7,FUNCT_1:47; then A92: q.m2 = q.(y + j) by A15,A16,A73,A89,A91; 1 <= j by A15,A89,Th1; then A93: 1 <= y + j by NAT_1:12; j <= n by A15,A89,Th1; then y + j <= len q by A13,XREAL_1:7; then y + j in Seg(len q) by A93; then A94: y + j in dom q by Def3; m2 in Seg k by A18,A88,Th17; then A95: m2 <= k by Th1; k < y by A11,XREAL_1:29; then A96: m2 < y by A95,XXREAL_0:2; dom q1 c= dom q & y <= y + j by NAT_1:12,RELAT_1:60; hence thesis by A5,A88,A92,A94,A96; end; now given j1 being Nat such that A97: j1 in dom q2 and A98: m1 = len q1 + j1; given j2 being Nat such that A99: j2 in dom q2 and A100: m2 = len q1 + j2; A101: (q1 ^ q2).m1 = q2.j1 by A97,A98,Def7; A102: (q1 ^ q2).m2 = q2.j2 by A99,A100,Def7; A103: (q1 ^ q2).m1 = q.(y + j1) by A15,A16,A97,A101; A104: (q1 ^ q2).m2 = q.(y + j2) by A15,A16,A99,A102; A105: 1 <= j1 by A15,A97,Th1; A106: 1 <= j2 by A15,A99,Th1; A107: 1 <= y + j1 by A105,NAT_1:12; A108: 1 <= y + j2 by A106,NAT_1:12; A109: j1 <= n by A15,A97,Th1; A110: j2 <= n by A15,A99,Th1; A111: y + j1 <= len q by A13,A109,XREAL_1:7; A112: y + j2 <= len q by A13,A110,XREAL_1:7; A113: y + j1 in Seg(len q) by A107,A111; A114: y + j2 in Seg(len q) by A108,A112; A115: y + j1 in dom q by A113,Def3; y + j2 in dom q by A114,Def3; then y + j1 = y + j2 by A5,A73,A103,A104,A115; hence thesis by A98,A100; end; hence thesis by A72,A75,A77,A87,Th25; end; A116: now let j be Nat; assume A117: j in dom(q1 ^ <* x *>); A118: now assume A119: j in dom q1; then (q1 ^ <* x *>).j = q1.j by Def7; hence q.j = (q1 ^ <* x *>).j by A119,FUNCT_1:47; end; now given i be Nat such that A120: i in dom<* x *> and A121: j = len q1 + i; i in {1} by A120,Th2,Th38; then i = 1 by TARSKI:def 1; hence q.j = (q1 ^ <* x *>).j by A8,A11,A19,A121,Th42; end; hence q.j = (q1 ^ <* x *>).j by A117,A118,Th25; end; now let j be Nat; assume j in dom q2; hence q2.j = q.(len q1 + 1 + j) by A11,A15,A16,A19 .= q.(len q1 + len<* x *> + j) by Th39 .= q.(len(q1 ^ <* x *>) + j) by Th22; end; then q1 ^ <* x *> ^ q2 = q by A20,A116,Def7; then A122: len q = len(q1 ^ <* x *>) + len q2 by Th22 .= len <* x *> + len q1 + len q2 by Th22 .= 1 + len q1 + len q2 by Th40 .= 1 + (len q1 + len q2) .= len(q1 ^ q2) + 1 by Th22; len(p ^ <* x *>) = len p + len<* x *> by Th22 .= len p + 1 by Th40; hence len(p ^ <* x *>) = len q by A2,A3,A4,A21,A51,A52,A71,A122,FUNCT_1:52; end; then A123: for p,x st P[p] holds P[p^<*x*>]; for p holds P[p] from IndSeq(A1,A123); hence thesis; end; theorem {} in D* proof {} = <*>D; hence thesis by Def11; end; scheme SepSeq{D()->non empty set, P[FinSequence]}: ex X st for x holds x in X iff ex p st p in D()* & P[p] & x=p proof defpred R[object] means ex p st P[p] & $1=p; consider Y such that A1: for x being object holds x in Y iff x in D()* & R[x] from XBOOLE_0:sch 1; take Y; x in Y iff ex p st p in D()* & P[p] & x=p proof now assume x in Y; then x in D()* & ex p st P[p] & x=p by A1; hence ex p st p in D()* & P[p] & x=p; end; hence thesis by A1; end; hence thesis; end; :: :: :: Subsequences :: :: :: definition let IT be Function; attr IT is FinSubsequence-like means :Def12: ex k st dom IT c= Seg k; end; registration cluster FinSubsequence-like for Function; existence proof take {},len {}; thus thesis; end; end; definition mode FinSubsequence is FinSubsequence-like Function; end; registration cluster FinSequence-like -> FinSubsequence-like for Function; coherence; let p be FinSubsequence, X be set; cluster p|X -> FinSubsequence-like; coherence proof consider k such that A1: dom p c= Seg k by Def12; dom(p|X) c= dom p by RELAT_1:60; hence thesis by A1,XBOOLE_1:1; end; cluster X|`p -> FinSubsequence-like; coherence proof consider k such that A2: dom p c= Seg k by Def12; dom(X|`p) c= dom p by FUNCT_1:56; hence thesis by A2,XBOOLE_1:1; end; end; registration cluster -> NAT-defined for FinSubsequence; coherence proof let f be FinSubsequence; ex n st dom f c= Seg n by Def12; hence dom f c= NAT by XBOOLE_1:1; end; end; reserve p9 for FinSubsequence; definition let X; given k being Nat such that A1: X c= Seg k; func Sgm X -> FinSequence of NAT means :Def13: rng it = X & for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len it & k1=it.l & k2=it.m holds k1 < k2; existence proof defpred P[Nat] means for X st X c= Seg $1 ex p being FinSequence of NAT st rng p = X & for l,m,k1,k2 being Nat st ( 1 <= l & l < m & m <= len p & k1=p.l & k2=p.m) holds k1 < k2; A2: P[0] proof let X; assume A3: X c= Seg 0; take <*>(NAT); thus rng <*>(NAT) = X by A3; thus thesis; end; A4: for k being Nat st P[k] holds P[k+1] proof let k be Nat such that A5: for X st X c= Seg k holds ex p being FinSequence of NAT st rng p = X & for l,m,k1,k2 be Nat st 1 <= l & l < m & m <= len p & k1=p.l & k2=p.m holds k1 < k2; let X; assume A6: X c= Seg(k+1); now assume not X c= Seg k; then consider x being object such that A7: x in X and A8: not x in Seg k; x in Seg(k+1) by A6,A7; then reconsider n=x as Element of NAT; A9: n=k+1 proof assume A10: n <> k+1; A11: n <= k+1 by A6,A7,Th1; A12: 1 <= n by A6,A7,Th1; n <= k by A10,A11,NAT_1:8; hence contradiction by A8,A12; end; set Y=X\{k+1}; A13: Y c= Seg k proof let x be object; assume A14: x in Y; then A15: x in X; A16: not x in {k+1} by A14,XBOOLE_0:def 5; A17: x in Seg(k+1) by A6,A15; A18: x<>k+1 by A16,TARSKI:def 1; reconsider m=x as Element of NAT by A17; A19: m <= k+1 by A6,A15,Th1; A20: 1 <= m by A6,A15,Th1; m <= k by A18,A19,NAT_1:8; hence thesis by A20; end; then consider p being FinSequence of NAT such that A21: rng p = Y and A22: for l,m,k1,k2 be Nat st 1 <= l & l < m & m <= len p & k1=p.l & k2 =p.m holds k1 < k2 by A5; consider q such that A23: q=p^<*k+1*>; reconsider q as FinSequence of NAT by A23; A24: rng q = rng p \/ rng <*k+1*> by A23,Th31 .= Y \/ {k+1} by A21,Th38 .= X \/ {k+1} by XBOOLE_1:39 .= X by A7,A9,XBOOLE_1:12,ZFMISC_1:31; for l,m,k1,k2 be Nat st 1 <= l & l < m & m <= len q & k1=q.l & k2=q.m holds k1 < k2 proof let l,m,k1,k2 be Nat; assume that A25: 1 <= l and A26: l < m and A27: m <= len q and A28: k1=q.l and A29: k2=q.m; l < len (p^<*k+1*>) by A23,A26,A27,XXREAL_0:2; then l < len p + len <*k+1*> by Th22; then l < len p + 1 by Th39; then l <= len p by NAT_1:13; then l in Seg len p by A25; then A30: l in dom p by Def3; A31: 1 <= m by A25,A26,XXREAL_0:2; A32: now assume A33: m=len q; k1 = p.l by A23,A28,A30,Def7; then k1 in Y by A21,A30,FUNCT_1:def 3; then A34: k1 <= k by A13,Th1; q.m = (p^<*k+1*>).(len p + len <*k+1*>) by A23,A33,Th22 .=(p^<*k+1*>).(len p + 1) by Th39 .= k+1 by Th42; hence thesis by A29,A34,NAT_1:13; end; now assume m <> len q; then m < len (p^<*k+1*>) by A23,A27,XXREAL_0:1; then m < len p + len <*k+1*> by Th22; then m < len p + 1 by Th39; then A35: m <= len p by NAT_1:13; then m in Seg len p by A31; then m in dom p by Def3; then A36: k2 = p.m by A23,A29,Def7; k1 = p.l by A23,A28,A30,Def7; hence thesis by A22,A25,A26,A35,A36; end; hence thesis by A32; end; hence thesis by A24; end; hence thesis by A5; end; for k being Nat holds P[k] from NAT_1:sch 2(A2,A4); hence thesis by A1; end; uniqueness proof let p,q be FinSequence of NAT such that A37: ( rng p = X & for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len p & k1=p. l & k2=p.m holds k1 < k2 )&( rng q = X & for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len q & k1=q.l & k2=q.m holds k1 < k2 ); defpred S[FinSequence] means for X st ex k being Nat st X c= Seg k holds ($1 is FinSequence of NAT & rng $1 = X & for l,m,k1,k2 being Nat st ( 1 <= l & l < m & m <= len $1 & k1=$1.l & k2=$1.m) holds k1 < k2) implies for q being FinSequence of NAT st rng q = X & for l,m,k1,k2 being Nat st ( 1 <= l & l < m & m <= len q & k1=q.l & k2=q.m) holds k1 < k2 holds q=$1; A38: S[{}]; A39: for p,x st S[p] holds S[p^<*x*>] proof let p,x; assume A40: S[p]; let X; given k being Nat such that A41: X c= Seg k; assume that A42: p^<*x*> is FinSequence of NAT and A43: rng (p^<*x*>) = X and A44: for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len(p^<*x*>) & k1=(p^<*x*>).l & k2=(p^<*x*>).m holds k1 < k2; let q be FinSequence of NAT; assume that A45: rng q = X and A46: for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len q & k1=q.l & k2=q.m holds k1 < k2; 1 in Seg 1; then A47: 1 in dom <*x*> by Def8; A48: ex m st m=x & for l st l in X & l <> x holds l < m proof <*x*> is FinSequence of NAT by A42,Th36; then rng <*x*> c= NAT by Def4; then {x} c= NAT by Th38; then reconsider m=x as Element of NAT by ZFMISC_1:31; take m; thus m=x; thus for l st l in X & l <> x holds l < m proof let l; assume that A49: l in X and A50: l <> x; consider y being object such that A51: y in dom (p^<*x*>) and A52: l=(p^<*x*>).y by A43,A49,FUNCT_1:def 3; A53: y in Seg len (p^<*x*>) by A51,Def3; reconsider k=y as Element of NAT by A51; k <= len (p^<*x*>) by A53,Th1; then k <= len p + len <*x*> by Th22; then A54: k <= len p + 1 by Th39; A55: k <> len p + 1 proof assume k = len p + 1; then (p^<*x*>).k = <*x*>.1 by A47,Def7 .= x by Def8; hence contradiction by A50,A52; end; A56: 1 <= k by A53,Th1; k < len p + 1 by A54,A55,XXREAL_0:1; then k < len p + len <*x*> by Th39; then A57: k < len(p^<*x*>) by Th22; m=(p^<*x*>).(len p + 1) by Th42 .= (p^<*x*>).(len p + len <*x*>) by Th39 .= (p^<*x*>).(len(p^<*x*>)) by Th22; hence thesis by A44,A52,A56,A57; end; end; then reconsider m = x as Nat; len q <> 0 proof assume len q = 0; then p^<*x*> = {} by A43,A45,Lm3,RELAT_1:38; then 0 = len (p^<*x*>) .= len p + len <*x*> by Th22 .= 1 + len p by Th39; hence contradiction; end; then consider n be Nat such that A58: len q = n+1 by NAT_1:6; deffunc F(Nat) = q.$1; ex q9 being FinSequence st len q9 = n & for m st m in dom q9 holds q9.m = F(m) from SeqLambda; then consider q9 being FinSequence such that A59: len q9 = n and A60: for m st m in dom q9 holds q9.m = q.m; now let x be object; assume x in rng q9; then consider y being object such that A61: y in dom q9 and A62: x=q9.y by FUNCT_1:def 3; A63: y in Seg len q9 by A61,Def3; reconsider y as Element of NAT by A61; A64: y <= n by A59,A63,Th1; A65: n <= n + 1 by NAT_1:11; A66: 1 <= y by A63,Th1; y <= n+1 by A64,A65,XXREAL_0:2; then y in Seg (n+1) by A66; then y in dom q by A58,Def3; then A67: q.y in rng q by FUNCT_1:def 3; rng q c= NAT by Def4; then q.y in NAT by A67; hence x in NAT by A60,A61,A62; end; then reconsider f=q9 as FinSequence of NAT by Def4,TARSKI:def 3; A68: dom q = Seg (n+1) by A58,Def3 .= Seg (len q9 + len <*x*>) by A59,Th39; A69: for m st m in dom <*x*> holds q.(len q9 + m) = <*x*>.m proof let m; assume m in dom <*x*>; then A70: m in {1} by Def8,Th2; then A71: m=1 by TARSKI:def 1; q.(len q9 + m) = x proof assume q.(len q9 + m) <> x; then A72: q.len q <> x by A58,A59,A70,TARSKI:def 1; consider d being Nat such that A73: d=x and A74: for l st l in X & l<>x holds l by Th38; then x in rng p \/ rng <*x*> by XBOOLE_0:def 3; then x in rng q by A43,A45,Th31; then consider y being object such that A75: y in dom q and A76: x=q.y by FUNCT_1:def 3; A77: y in Seg len q by A75,Def3; reconsider y as Element of NAT by A75; A78: 1 <= y by A77,Th1; A79: y <= len q by A77,Th1; then A80: y < len q by A72,A76,XXREAL_0:1; 1 <= len q by A78,A79,XXREAL_0:2; then len q in Seg len q; then A81: len q in dom q by Def3; A82: q.len q in X by A45,A81,FUNCT_1:def 3; reconsider k = q.len q as Nat; k < d by A72,A74,A82; hence contradiction by A46,A73,A76,A78,A80; end; hence thesis by A71,Th40; end; then A83: q9^<*x*> = q by A60,A68,Def7; A84: not x in rng p proof assume x in rng p; then consider y being object such that A85: y in dom p and A86: x=p.y by FUNCT_1:def 3; A87: y in Seg len p by A85,Def3; reconsider y as Element of NAT by A85; A88: y <= len p by A87,Th1; A89: len p + 1 = len p + len <*x*> by Th39 .= len (p^<*x*>) by Th22; A90: 1 <= y by A87,Th1; A91: y < len p + 1 by A88,NAT_1:13; A92: m = (p^<*x*>).y by A85,A86,Def7; m = (p^<*x*>).(len p + 1 ) by Th42; hence contradiction by A44,A89,A90,A91,A92; end; A93: X = rng p \/ rng <*x*> by A43,Th31 .= rng p \/ {x} by Th39; A94: for z being object holds z in rng p \/ {x} \ {x} iff z in rng p proof let z be object; thus z in rng p \/ {x} \ {x} implies z in rng p proof assume A95: z in rng p \/ {x} \ {x}; then not z in {x} by XBOOLE_0:def 5; hence thesis by A95,XBOOLE_0:def 3; end; assume z in rng p; then ( not z in {x})& z in rng p \/ {x} by A84,TARSKI:def 1,XBOOLE_0:def 3; hence thesis by XBOOLE_0:def 5; end; A96: for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len p & k1=p.l & k2=p.m holds k1 < k2 proof let l,m,k1,k2 be Nat; assume that A97: 1 <= l and A98: l < m and A99: m <= len p and A100: k1=p.l and A101: k2=p.m; l <= len p by A98,A99,XXREAL_0:2; then l in Seg len p by A97; then l in dom p by Def3; then A102: k1 = (p^<*x*>).l by A100,Def7; 1 <= m by A97,A98,XXREAL_0:2; then m in Seg len p by A99; then m in dom p by Def3; then A103: k2 = (p^<*x*>).m by A101,Def7; len p <= len p + 1 by NAT_1:11; then m <= len p + 1 by A99,XXREAL_0:2; then m <= len p + len <*x*> by Th39; then m <= len (p^<*x*>) by Th22; hence thesis by A44,A97,A98,A102,A103; end; A104: p is FinSequence of NAT by A42,Th36; A105: rng p = X\{x} by A93,A94,TARSKI:2; A106: not x in rng f proof assume x in rng f; then consider y being object such that A107: y in dom f and A108: x=f.y by FUNCT_1:def 3; A109: y in Seg len f by A107,Def3; reconsider y as Element of NAT by A107; A110: y <= len f by A109,Th1; A111: len f + 1 = len f + len <*x*> by Th39 .= len (f^<*x*>) by Th22; A112: 1 <= y by A109,Th1; A113: y < len f + 1 by A110,NAT_1:13; A114: m = q.y by A60,A107,A108; m = q.(len f + 1) by A83,Th42; hence contradiction by A46,A83,A111,A112,A113,A114; end; A115: X = rng f \/ rng <*x*> by A45,A83,Th31 .= rng f \/ {x} by Th39; A116: for z being object holds z in rng f \/ {x} \ {x} iff z in rng f proof let z be object; thus z in rng f \/ {x} \ {x} implies z in rng f proof assume A117: z in rng f \/ {x} \ {x}; then not z in {x} by XBOOLE_0:def 5; hence thesis by A117,XBOOLE_0:def 3; end; assume z in rng f; then ( not z in {x})& z in rng f \/ {x} by A106,TARSKI:def 1,XBOOLE_0:def 3; hence thesis by XBOOLE_0:def 5; end; A118: for l,m,k1,k2 being Nat st 1 <= l & l < m & m <= len f & k1=f.l & k2=f.m holds k1 < k2 proof let l,m,k1,k2 be Nat; assume that A119: 1 <= l and A120: l < m and A121: m <= len f and A122: k1=f.l and A123: k2=f.m; A124: m <= len q by A58,A59,A121,NAT_1:13; l <= n by A59,A120,A121,XXREAL_0:2; then A125: l in Seg n by A119; 1 <= m by A119,A120,XXREAL_0:2; then A126: m in Seg n by A59,A121; A127: l in dom q9 by A59,A125,Def3; A128: m in dom q9 by A59,A126,Def3; A129: k1 = q.l by A60,A122,A127; k2 = q.m by A60,A123,A128; hence thesis by A46,A119,A120,A124,A129; end; rng f = X\{x} by A115,A116,TARSKI:2; then q9 = p by A40,A41,A96,A104,A105,A118,XBOOLE_1:1; hence thesis by A60,A68,A69,Def7; end; for p holds S[p] from IndSeq(A38,A39); hence thesis by A1,A37; end; end; theorem Th50: rng Sgm dom p9 = dom p9 proof ex k st dom p9 c= Seg k by Def12; hence thesis by Def13; end; definition let p9; func Seq p9 -> Function equals p9* Sgm(dom p9); coherence; end; registration let p9; cluster Seq p9 -> FinSequence-like; coherence proof rng Sgm dom p9 = dom p9 by Th50; then dom(p9*Sgm(dom p9)) = dom Sgm dom p9 by RELAT_1:27 .=Seg len Sgm dom p9 by Def3; hence thesis; end; end; theorem for X st ex k st X c= Seg k holds Sgm X = {} iff X = {} proof let X; given k such that A1: X c= Seg k; thus Sgm X = {} implies X = {} proof assume Sgm X = {}; hence X = rng {} by A1,Def13 .= {}; end; assume X={}; then rng Sgm X = {} by A1,Def13; hence thesis; end; begin :: from FINSET_1, 1998 theorem :: FINSET_1:def 1 D is finite iff ex p st D = rng p proof thus D is finite implies ex p st D = rng p proof given g being Function such that A1: rng g = D and A2: dom g in omega; reconsider n = dom g as Element of NAT by A2; defpred R[object,object] means P[$2,$1]; A3: for x being object st x in Seg n ex y being object st R[x,y] proof let x be object; assume A4: x in Seg n; then reconsider x as Element of NAT; x >= 1 by A4,Th1; then ex k be Nat st x = 1+k by NAT_1:10; hence thesis; end; consider f such that A5: dom f = Seg n and A6: for x being object st x in Seg n holds R[x,f.x] from CLASSES1:sch 1(A3); A7: rng f = dom g proof A8: n = { k where k is Nat: k < n } by AXIOMS:4; thus rng f c= dom g proof let x be object; assume x in rng f; then consider y being object such that A9: y in dom f and A10: x = f.y by FUNCT_1:def 3; consider k such that A11: x = k and A12: y = k+1 by A5,A6,A9,A10; k + 1 <= n by A5,A9,A12,Th1; then k < n by NAT_1:13; hence thesis by A8,A11; end; let x be object; assume x in dom g; then consider k being Nat such that A13: x = k and A14: k < n by A8; 1 <= k+1 & k+1 <= n by A14,NAT_1:11,13; then A15: k+1 in Seg n; then ex k1 st f.(k+1) = k1 & k+1 = k1+1 by A6; hence thesis by A5,A13,A15,FUNCT_1:def 3; end; then dom(g*f) = Seg n by A5,RELAT_1:27; then reconsider p = g*f as FinSequence by Def2; take p; thus thesis by A1,A7,RELAT_1:28; end; given p such that A16: D = rng p; consider n such that A17: dom p = Seg n by Def2; A18: n = { k where k is Nat: k < n } by AXIOMS:4; A19: for x being object st x in n ex y being object st P[x,y] proof let x be object; assume x in n; then ex k being Nat st x = k & k < n by A18; then reconsider k = x as Nat; take k+1; thus thesis; end; consider f such that A20: dom f = n and A21: for x being object st x in n holds P[x,f.x] from CLASSES1:sch 1(A19); take p*f; A22: rng f = dom p proof thus rng f c= dom p proof let x be object; assume x in rng f; then consider y being object such that A23: y in dom f and A24: x = f.y by FUNCT_1:def 3; consider k such that A25: y = k and A26: x = k+1 by A20,A21,A23,A24; ex m being Nat st k = m & m < n by A18,A20,A23,A25; then 1 <= k+1 & k+1 <= n by NAT_1:11,13; hence thesis by A17,A26; end; let x be object; assume A27: x in dom p; then reconsider x as Element of NAT; 1 <= x by A17,A27,Th1; then consider m be Nat such that A28: x = 1+m by NAT_1:10; x <= n by A17,A27,Th1; then m < n by A28,NAT_1:13; then A29: m in n by A18; then ex k st m = k & f.m = k+1 by A21; hence thesis by A20,A28,A29,FUNCT_1:def 3; end; hence rng(p*f) = D by A16,RELAT_1:28; dom(p*f) = dom f by A22,RELAT_1:27; hence thesis by A20,ORDINAL1:def 12; end; begin :: Moved from CARD_1, 1999 theorem Seg n,Seg m are_equipotent implies n = m proof defpred P[Nat] means ex n st Seg n,Seg $1 are_equipotent & n <> $1; assume Seg n,Seg m are_equipotent & n <> m; then A1: ex m being Nat st P[m]; consider m being Nat such that A2: P[m] and A3: for k being Nat st P[k] holds m <= k from NAT_1:sch 5(A1); consider n such that A4: Seg n,Seg m are_equipotent and A5: n <> m by A2; A6: ex f st f is one-to-one & dom f = Seg n & rng f = Seg m by A4; A7: now assume m = 0; then Seg m = {}; then Seg m = Seg n by A6,RELAT_1:42; hence contradiction by A5,Th6; end; then consider m1 being Nat such that A8: m = m1+1 by NAT_1:6; A9: now assume n = 0; then Seg n = {}; then Seg m = Seg n by A6,RELAT_1:42; hence contradiction by A5,Th6; end; then consider n1 being Nat such that A10: n = n1+1 by NAT_1:6; A11: n in Seg n by A9,Th3; A12: m in Seg m by A7,Th3; A13: not n1+1 <= n1 by NAT_1:13; A14: not m1+1 <= m1 by NAT_1:13; A15: not n in Seg n1 by A10,A13,Th1; A16: not m in Seg m1 by A8,A14,Th1; A17: (Seg n1) /\ { n } c= {} proof let x be object; assume x in (Seg n1) /\ { n }; then x in Seg n1 & x in { n } by XBOOLE_0:def 4; hence thesis by A15,TARSKI:def 1; end; A18: (Seg m1) /\ { m } c= {} proof let x be object; assume x in (Seg m1) /\ { m }; then x in Seg m1 & x in { m } by XBOOLE_0:def 4; hence thesis by A16,TARSKI:def 1; end; A19: Seg n = (Seg n1) \/ { n } by A10,Th9; A20: Seg m = (Seg m1) \/ { m } by A8,Th9; A21: (Seg n1) /\ { n } = {} by A17; A22: (Seg m1) /\ { m } = {} by A18; A23: ( Seg n1) \ { n } = ((Seg n1) \/ { n }) \ { n } & (Seg n1) misses { n } by A21, XBOOLE_1:40; A24: ( Seg m1) \ { m } = ((Seg m1) \/ { m }) \ { m } & (Seg m1) misses { m } by A22, XBOOLE_1:40; A25: (Seg n) \ { n } = Seg n1 by A19,A23,XBOOLE_1:83; (Seg m) \ { m } = Seg m1 by A20,A24,XBOOLE_1:83; hence contradiction by A3,A4,A5,A8,A10,A11,A12,A14,A25,CARD_1:34; end; theorem Seg n,n are_equipotent by Lm1; theorem card Seg n = card n by Lm1,CARD_1:5; theorem Th56: X is finite implies ex n st X,Seg n are_equipotent proof assume X is finite; then reconsider n = card X as Nat; A1: X,n are_equipotent by CARD_1:def 2; take n; n,Seg n are_equipotent by Lm1; hence thesis by A1,WELLORD2:15; end; theorem for n being Nat holds card Seg n = n by Lm1,CARD_1:def 2; begin :: Addenda :: from FINSEQ_5 registration let x be object; cluster <*x*> -> non empty; coherence; end; :: From SPRECT_1 registration cluster non empty for FinSequence; existence proof take <* 0 *>; thus thesis; end; end; :: From FUNCT_7, actually from GOBOARD4 registration let f1 be FinSequence, f2 be non empty FinSequence; cluster f1^f2 -> non empty; coherence by Th35; cluster f2^f1 -> non empty; coherence by Th35; end; registration let x,y be object; cluster <*x,y*> -> non empty; coherence; let z be object; cluster <*x,y,z*> -> non empty; coherence; end; :: from MATRIX_2 scheme SeqDEx{D()->non empty set,A()->Nat,P[object,object]}: ex p being FinSequence of D() st dom p = Seg A() & for k st k in Seg A() holds P[k,p.k] provided A1: for k st k in Seg A() ex x being Element of D() st P[k,x] proof A2: for y be object st y in Seg A() ex x being object st x in D() & P[y,x] proof let y be object; assume A3: y in Seg A(); then reconsider k=y as Element of NAT; consider x being Element of D() such that A4: P[k,x] by A1,A3; take x; thus thesis by A4; end; consider f being Function such that A5: dom f = Seg A() and A6: rng f c= D() and A7: for y be object st y in Seg A() holds P[y,f.y] from FUNCT_1:sch 6(A2); reconsider f as FinSequence by A5,Def2; reconsider p=f as FinSequence of D() by A6,Def4; take p; thus thesis by A5,A7; end; :: from TOPREAL1 reserve D for set, p for FinSequence of D, m for Nat; definition let m; let p be FinSequence; func p|m -> FinSequence equals p|Seg m; coherence by Th15; end; definition let D,m,p; redefine func p|m -> FinSequence of D; coherence by Th18; end; registration let f be FinSequence; cluster f|0 -> empty; coherence; end; theorem Th58: len q <= i implies q|i = q proof assume len q <= i; then Seg len q c= Seg i by Th5; then dom q c= Seg i by Def3; hence thesis by RELAT_1:68; end; theorem Th59: i <= len q implies len(q|i) = i proof assume i <= len q; then Seg i c= Seg(len q) by Th5; then Seg i c= dom q by Def3; then i in NAT & Seg i = dom(q|i) by ORDINAL1:def 12,RELAT_1:62; hence thesis by Def3; end; registration let f be non empty FinSequence; reduce len (f|1) to 1; reducibility proof 1 <= len f by NAT_1:14; hence thesis by Th59; end; cluster f|1 -> 1-element; coherence; end; registration let p be non empty FinSequence, n be non zero Nat; cluster p|n -> non empty; coherence proof per cases; suppose n <= len p; then n+1-1 <= len p - 0; then len(p|n) = n by Th59; hence thesis; end; suppose len p <= n; hence thesis by Th58; end; end; end; :: from FSM_1 theorem i in Seg n implies i+m in Seg (n+m) proof assume A1: i in Seg n; then A2: 1 <= i by Th1; A3: i <= n by A1,Th1; i <= i+m by NAT_1:11; then 1 <= i+m by A2,XXREAL_0:2; hence thesis by A3,Th1,XREAL_1:7; end; theorem i>0 & i+m in Seg (n+m) implies i in Seg n & i in Seg (n+m) proof assume that A1: i > 0 and A2: i+m in Seg (n+m); 1 = 0+1; then A3: 1 <= i by A1,NAT_1:13; A4: i+m <= n+m by A2,Th1; i <= n by A2,Th1,XREAL_1:6; hence i in Seg n by A3; i <= i+m by NAT_1:11; then i <= n+m by A4,XXREAL_0:2; hence thesis by A3; end; :: from LANG1 definition let R be Relation; func R[*] -> Relation means for x,y being object holds [x,y] in it iff x in field R & y in field R & ex p being FinSequence st len p >= 1 & p.1 = x & p.(len p) = y & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R; existence proof defpred X[object,object] means ex p being FinSequence st len p >= 1 & p.1 = $1 & p.(len p) = $2 & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R; thus ex S being Relation st for x,y being object holds [x,y] in S iff x in field R & y in field R & X[x,y] from RELAT_1:sch 1; end; uniqueness proof let R1,R2 be Relation such that A1: for x,y being object holds [x,y] in R1 iff x in field R & y in field R & ex p being FinSequence st len p >= 1 & p.1 = x & p.(len p) = y & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R and A2: for x,y being object holds [x,y] in R2 iff x in field R & y in field R & ex p being FinSequence st len p >= 1 & p.1 = x & p.(len p) = y & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R; let x,y be object; thus [x,y] in R1 implies [x,y] in R2 proof assume A3: [x,y] in R1; then A4: x in field R & y in field R by A1; ex p being FinSequence st len p >= 1 & p.1 = x & p.(len p) = y & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R by A1,A3; hence thesis by A2,A4; end; assume A5: [x,y] in R2; then A6: x in field R & y in field R by A2; ex p being FinSequence st len p >= 1 & p.1 = x & p.(len p) = y & for i being Nat st i >= 1 & i < len p holds [p.i,p.(i+1)] in R by A2,A5; hence thesis by A1,A6; end; end; theorem for D1,D2 being set st D1 c= D2 holds D1* c= D2* proof let D1,D2 be set such that A1: D1 c= D2; let x be object; assume x in D1*; then reconsider p = x as FinSequence of D1 by Def11; rng p c= D1 by Def4; then x is FinSequence of D2 by Def4,A1,XBOOLE_1:1; hence thesis by Def11; end; :: 2005.05.13, A.T. registration let D be set; cluster D* -> functional; coherence by Def11; end; :: from SCMFSA_7, 2005.11.21, A.T. theorem for p,q being FinSequence st p c= q holds len p <= len q proof let p,q be FinSequence; assume p c= q; then Segm card p c= Segm card q by CARD_1:11; hence thesis by NAT_1:39; end; theorem for p,q being FinSequence, i being Nat st 1 <= i & i <= len p holds (p ^ q).i = p.i proof let p,q be FinSequence, i be Nat; assume A1: 1 <= i & i <= len p; i in NAT & Seg len p = dom p by Def3,ORDINAL1:def 12; then i in dom p by A1; hence thesis by Def7; end; theorem for p,q being FinSequence, i being Nat st 1 <= i & i <= len q holds (p ^ q).(len p + i) = q.i proof let p,q be FinSequence, i be Nat; assume 1 <= i & i <= len q; then len p + 1 <= len p + i & len p + i <= len p + len q by XREAL_1:6; hence (p ^ q).(len p + i) = q.(len p + i - len p) by Th23 .= q.i; end; :: from GRAPH_2, 2006.01.09, A.T. scheme FinSegRng{n() -> Nat, F(set)->set, P[set]}: {F(i) where i is Nat: i<=n() & P[i]} is finite proof set F = {F(i) where i is Nat: i<=n() & P[i]}; deffunc G(Nat) = F($1-1); consider f being FinSequence such that A1: len f = n()+1 and A2: for k st k in dom f holds f.k = G(k) from SeqLambda; F c= rng f proof let x be object; assume x in F; then consider j being Nat such that A3: x=F(j) and A4: j<=n() and P[j]; 1<=j+1 & j+1<=n()+1 by A4,NAT_1:11,XREAL_1:6; then j+1 in Seg (n()+1); then A5: j+1 in dom f by A1,Def3; then f.(j+1) = F(j+1-1) by A2 .= F(j); hence thesis by A3,A5,FUNCT_1:def 3; end; hence thesis; end; Lm5: x in Seg n implies x = 1 or ... or x = n proof assume A1: x in Seg n; then reconsider k = x as Nat; 1 <= k & k <= n by A1,Th1; hence thesis; end; theorem Th66: for x1, x2, x3, x4 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*> holds len p = 4 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 proof let x1, x2, x3, x4 be set, p be FinSequence; assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>; set p13 = <*x1*>^<*x2*>^<*x3*>; A2: p13 = <*x1, x2, x3*>; then A3: len p13 = 3 by Th45; A4: p13.1 = x1 & p13.2 = x2 by A2,Th45; A5: p13.3 = x3 by A2,Th45; thus len p = len p13 + len <*x4*> by A1,Th22 .= 3 + 1 by A3,Th40 .= 4; A6: dom p13 = Seg 3 by A3,Def3; 1 in Seg 3 & ...& 3 in Seg 3; hence p.1 = x1 & p.2 = x2 & p.3 = x3 by A1,A4,A5,Def7,A6; thus p.4 = p.(len p13 + 1) by A3 .= x4 by A1,Th42; end; theorem Th67: for x1, x2, x3, x4, x5 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*> holds len p = 5 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 proof let x1, x2, x3, x4, x5 be set, p be FinSequence; assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>; set p14 = <*x1*>^<*x2*>^<*x3*>^<*x4*>; A2: len p14 = 4 by Th66; A3: p14.1 = x1 & p14.2 = x2 by Th66; A4: p14.3 = x3 & p14.4 = x4 by Th66; thus len p = len p14 + len <*x5*> by A1,Th22 .= 4 + 1 by A2,Th40 .= 5; A5: dom p14 = Seg 4 by A2,Def3; 1 in Seg 4 & ...& 4 in Seg 4; hence p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 by A1,A3,A4,Def7,A5; thus p.5 = p.(len p14 + 1) by A2 .= x5 by A1,Th42; end; theorem Th68: for x1, x2, x3, x4, x5, x6 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*> holds len p = 6 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 proof let x1, x2, x3, x4, x5, x6 be set, p be FinSequence; assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>; set p15 = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>; A2: len p15 = 5 by Th67; A3: p15.1 = x1 & p15.2 = x2 by Th67; A4: p15.3 = x3 & p15.4 = x4 by Th67; A5: p15.5 = x5 by Th67; thus len p = len p15 + len <*x6*> by A1,Th22 .= 5 + 1 by A2,Th40 .= 6; A6: dom p15 = Seg 5 by A2,Def3; 1 in Seg 5 & ...& 5 in Seg 5; hence p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 by A1,A3,A4,A5,Def7,A6; thus p.6 = p.(len p15 + 1) by A2 .= x6 by A1,Th42; end; theorem Th69: for x1, x2, x3, x4, x5, x6, x7 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*> holds len p = 7 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 proof let x1, x2, x3, x4, x5, x6, x7 be set, p be FinSequence; assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>; set p16 = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>; A2: len p16 = 6 by Th68; A3: p16.1 = x1 & p16.2 = x2 by Th68; A4: p16.3 = x3 & p16.4 = x4 by Th68; A5: p16.5 = x5 & p16.6 = x6 by Th68; thus len p = len p16 + len <*x7*> by A1,Th22 .= 6 + 1 by A2,Th40 .= 7; A6: dom p16 = Seg 6 by A2,Def3; 1 in Seg 6 & ...& 6 in Seg 6; hence p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 by A1,A3,A4,A5,Def7,A6; thus p.7 = p.(len p16 + 1) by A2 .= x7 by A1,Th42; end; theorem Th70: for x1,x2,x3,x4, x5, x6, x7, x8 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*> holds len p = 8 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 & p.8 = x8 proof let x1, x2, x3, x4, x5, x6, x7, x8 be set, p be FinSequence; thus p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*> implies len p = 8 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 & p.8 = x8 proof assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*>; set p17 = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>; A2: len p17 = 7 by Th69; A3: p17.1 = x1 & p17.2 = x2 by Th69; A4: p17.3 = x3 & p17.4 = x4 by Th69; A5: p17.5 = x5 & p17.6 = x6 by Th69; A6: p17.7 = x7 by Th69; thus len p = len p17 + len <*x8*> by A1,Th22 .= 7 + 1 by A2,Th40 .= 8; A7: dom p17 = Seg 7 by A2,Def3; 1 in Seg 7 & ...& 7 in Seg 7; hence p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 by A1,A3,A4,A5,A6,Def7,A7; thus p.8 = p.(len p17 + 1) by A2 .= x8 by A1,Th42; end; end; theorem for x1,x2,x3,x4,x5,x6,x7, x8, x9 being set, p being FinSequence st p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*>^<*x9*> holds len p = 9 & p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 & p.8 = x8 & p.9 = x9 proof let x1, x2, x3, x4, x5, x6, x7, x8, x9 be set, p be FinSequence; thus p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*>^<*x9*> implies len p = 9 & p.1 = x1 & p.2 = x2 & p.3 = x3&p.4 = x4&p.5 = x5 & p.6 = x6 & p.7 = x7 & p.8 = x8 & p.9 = x9 proof assume A1: p = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*>^<*x9*>; set p17 = <*x1*>^<*x2*>^<*x3*>^<*x4*>^<*x5*>^<*x6*>^<*x7*>^<*x8*>; A2: len p17 = 8 by Th70; A3: p17.1 = x1 & p17.2 = x2 by Th70; A4: p17.3 = x3 & p17.4 = x4 by Th70; A5: p17.5 = x5 & p17.6 = x6 by Th70; A6: p17.7 = x7 & p17.8 = x8 by Th70; thus len p = len p17 + len <*x9*> by A1,Th22 .= 8 + 1 by A2,Th40 .= 9; A7: dom p17 = Seg 8 by A2,Def3; 1 in Seg 8 & ...& 8 in Seg 8; hence p.1 = x1 & p.2 = x2 & p.3 = x3 & p.4 = x4 & p.5 = x5 & p.6 = x6 & p.7 = x7 & p.8 = x8 by A1,A3,A4,A5,A6,Def7,A7; thus p.9 = p.(len p17 + 1) by A2 .= x9 by A1,Th42; end; end; :: from SCMFSA_7, 2006.03.14, A.T. theorem for p being FinSequence holds p | Seg 0 = {}; theorem for f,g being FinSequence holds f | Seg 0 = g | Seg 0; theorem for D being non empty set, x being Element of D holds <* x *> is FinSequence of D; theorem for D being set, p,q being FinSequence of D holds p ^ q is FinSequence of D; :: from GROUP_7, 2007.02.10, AK reserve a, b, c, d, e, f for object; theorem <*a*> = <*b*> implies a = b proof assume A1: <*a*> = <*b*>; thus a = <*a*>.1 by Def8 .= b by A1,Def8; end; theorem <*a,b*> = <*c,d*> implies a = c & b = d proof assume A1: <*a,b*> = <*c,d*>; thus a = <*a,b*>.1 by Th44 .= c by A1,Th44; thus b = <*a,b*>.2 by Th44 .= d by A1,Th44; end; theorem <*a,b,c*> = <*d,e,f*> implies a = d & b = e & c = f proof assume A1: <*a,b,c*> = <*d,e,f*>; thus a = <*a,b,c*>.1 by Th45 .= d by A1,Th45; thus b = <*a,b,c*>.2 by Th45 .= e by A1,Th45; thus c = <*a,b,c*>.3 by Th45 .= f by A1,Th45; end; :: from PRVECT_1, 2007.03.09, A.T registration cluster non empty non-empty for FinSequence; existence proof take <*{{}}*>; thus <*{{}}*> is non empty; assume {} in rng <*{{}}*>; then {} in {{{}}} by Th38; hence contradiction by TARSKI:def 1; end; end; theorem Th79: for p,q being FinSequence st q = p|Seg n holds len q <= len p proof let p,q be FinSequence; assume q = p|Seg n; then A1: dom q = dom p /\ Seg n by RELAT_1:61; Seg len q = dom q & Seg len p = dom p by Def3; hence thesis by Th5,A1,XBOOLE_1:17; end; theorem for p,r being FinSequence st r = p|Seg n ex q being FinSequence st p = r^q proof let p,r be FinSequence; assume A1: r = p|Seg n; then consider m be Nat such that A2: len p = len r + m by Th79,NAT_1:10; deffunc U(Nat) = p.(len r + $1); consider q being FinSequence such that A3: len q = m & for k st k in dom q holds q.k = U(k) from SeqLambda; take q; A4: len p = len(r^q) by A2,A3,Th22; now let k such that A5: 1 <= k and A6: k <= len p; A7: now assume k <= len r; then A8: k in Seg len r by A5; A9: dom r = Seg len r by Def3; then (r^q).k = r.k by A8,Def7; hence p.k = (r^q).k by A1,A8,A9,FUNCT_1:47; end; now assume A10: not k <= len r; then consider j being Nat such that A11: k = len r + j by NAT_1:10; k-len r = j by A11; then A12: (r^q).k = q.j by A4,A6,A10,Th24; j <> 0 by A10,A11; then A13: 0+1 <= j by NAT_1:13; j <= len q by A2,A3,A6,A11,XREAL_1:6; then j in Seg m by A3,A13; then j in dom q by A3,Def3; hence p.k = (r^q).k by A3,A11,A12; end; hence p.k = (r^q).k by A7; end; hence thesis by A4,Th14; end; :: from GOBOARD1, PRALG_1, 2007.04.06, A.T registration let D be non empty set; cluster non empty for FinSequence of D; existence proof set x = the Element of D; take <*x*>; thus thesis; end; end; :: Added by AK, 2007.11.07 definition let p,q be FinSequence; redefine pred p = q means len p = len q & for k st 1 <= k & k <= len p holds p.k = q.k; compatibility by Th14; end; :: from GROEB_2, 2008.10.08, A.T. theorem for x,y,z being object holds 1 in dom <*x,y,z*> & 2 in dom <*x,y,z*> & 3 in dom <*x,y,z*> proof let x,y,z be object; len <*x,y,z*> = 3 by Th45; then dom <*x,y,z*> = Seg 3 by Def3; hence thesis; end; theorem for p being FinSequence, n,m being Nat st m <= n holds p|n|m = p|m by Th5,RELAT_1:74; :: from CARD_5, 2008.10.08, A.T. reserve m for Nat; theorem Seg n = (n+1) \ {0} proof A1: n+1 = {m: m < n+1} by AXIOMS:4; thus Seg n c= (n+1) \ {0} proof let x be object; assume x in Seg n; then consider k being Nat such that A2: x = k and A3: 1 <= k and A4: k <= n; k < n+1 by A4,NAT_1:13; then A5: x in n+1 by A1,A2; not x in {0} by A2,A3,TARSKI:def 1; hence thesis by A5,XBOOLE_0:def 5; end; let x be object; assume A6: x in (n+1) \ {0}; then A7: x in n+1; A8: not x in {0} by A6,XBOOLE_0:def 5; consider m such that A9: x = m and A10: m < n+1 by A1,A7; A11: x <> 0 by A8,TARSKI:def 1; 0+1 = 1; then A12: 1 <= m by A9,A11,NAT_1:13; m <= n by A10,NAT_1:13; hence thesis by A9,A12; end; :: from CIRCCOMB, 2009.03.27, A.T. registration let n be natural Number; cluster n-element for FinSequence; existence proof A1: n is Nat by TARSKI:1; set p = Seg n --> {}; dom p = Seg n by FUNCOP_1:13; then reconsider p as FinSequence by A1,Def2; take p; Seg len p = dom p by Def3; hence len p = n by Th6,FUNCOP_1:13; end; end; :: from FACIRC_1, 2009.02.16, A.T. registration let x be object; cluster <*x*> -> 1-element; coherence; let y be object; cluster <*x,y*> -> 2-element; coherence by Th44; let z be object; cluster <*x,y,z*> -> 3-element; coherence by Th45; end; :: new, 2009.08.24, A.T. definition let X be set; attr X is FinSequence-membered means :Def18: x in X implies x is FinSequence; end; registration cluster empty -> FinSequence-membered for set; coherence; end; registration cluster non empty FinSequence-membered for set; existence proof take X = {the FinSequence}; thus X is non empty; let x; thus thesis by TARSKI:def 1; end; end; registration let X be set; cluster X* -> FinSequence-membered; coherence by Def11; end; theorem for f being Function st f in D* & x in dom f holds f.x in D proof let f be Function such that A1: f in D* and A2: x in dom f; f is FinSequence of D by A1,Def11; then A3: rng f c= D by Def4; f.x in rng f by A2,FUNCT_1:3; hence f.x in D by A3; end; registration cluster FinSequence-membered -> functional for set; coherence; end; theorem for X being FinSequence-membered set ex Y being non empty set st X c= Y* proof let X be FinSequence-membered set; set Z = {rng f where f is Element of X: f in X}; take Y = succ union Z; let x be object; assume A1: x in X; then reconsider x as FinSequence by Def18; rng x in {rng f where f is Element of X: f in X} by A1; then rng x c= Y by ORDINAL3:1,SETFAM_1:41; then x is FinSequence of Y by Def4; hence thesis by Def11; end; registration let X be FinSequence-membered set; cluster -> FinSequence-like for Element of X; coherence proof let e be Element of X; X is empty or X is non empty; hence thesis by Def18,SUBSET_1:def 1; end; end; registration let X be FinSequence-membered set; cluster -> FinSequence-membered for Subset of X; coherence; end; :: from TREES_1, 2009.09.09, A.T. theorem for p,q being FinSequence st q = p|Seg n holds len q <= n proof let p,q be FinSequence; assume q = p|Seg n; then A1: dom q = dom p /\ Seg n by RELAT_1:61; Seg len q = dom q by Def3; hence thesis by Th5,A1,XBOOLE_1:17; end; theorem for p,q being FinSequence st p = p^q or p = q^p holds q = {} proof let p,q be FinSequence such that A1: p = p^q or p = q^p; len(p^q) = len p + len q & len(q^p) = len q + len p by Th22; hence thesis by A1; end; theorem for p,q being FinSequence st p^q = <*x*> holds p = <*x*> & q = {} or p = {} & q = <*x*> proof let p,q be FinSequence; assume A1: p^q = <*x*>; then A2: 1 = len(p^q) by Th40 .= len p + len q by Th22; A3: now assume len p = 0; thus then p = {}; hence q = <*x*> by A1,Th34; end; now assume len p <> 0; then A4: 0+1 <= len p by NAT_1:13; len p <= 1 by A2,NAT_1:11; then len p = 1 by A4,XXREAL_0:1; thus then q = {} by A2; hence p = <*x*> by A1,Th34; end; hence thesis by A3; end; :: missing, 2009.09.26, A.T. theorem Th88: for f being n-element FinSequence holds dom f = Seg n proof let f be n-element FinSequence; len f = n by CARD_1:def 7; hence dom f = Seg n by Def3; end; registration let n,m be natural Number; let f be n-element FinSequence, g be m-element FinSequence; cluster f^g -> (n+m)-element; coherence proof len f = n & len g = m by CARD_1:def 7; hence len(f^g) = n+m by Th22; end; end; :: from JORDAN7, 2010.02.26, A.T registration cluster increasing -> one-to-one for real-valued FinSequence; coherence proof let f be real-valued FinSequence; assume A1: f is increasing; let x,y be object; assume that A2: x in dom f & y in dom f and A3: f.x=f.y; reconsider nx=x,ny=y as Element of NAT by A2; nx<=ny & nx>=ny by A1,A2,A3,VALUED_0:def 13; hence thesis by XXREAL_0:1; end; end; :: from AMI_6, 2010.04.07, A.T. theorem for x, y being object st x in dom <*y*> holds x = 1 proof let x, y be object; assume x in dom <*y*>; then x in Seg 1 by Th38; hence thesis by Th2,TARSKI:def 1; end; :: from FOMODEL0, 2011.06.12, A.T. registration let X; cluster X-valued for FinSequence; existence proof take <*>X; thus thesis; end; end; :: new, 2011.10.03, A.K. registration let D be FinSequence-membered set; let f be D-valued Function; let x be object; cluster f.x -> FinSequence-like; coherence proof per cases; suppose x in dom f; then A1: f.x in rng f by FUNCT_1:def 3; rng f c= D by RELAT_1:def 19; hence thesis by A1; end; suppose not x in dom f; hence thesis by FUNCT_1:def 2; end; end; end; theorem x in Seg n implies x = 1 or ... or x = n by Lm5; theorem dom <*x,y*> = { 1,2 } proof thus dom <*x,y*> = Seg len <*x,y*> by Def3 .= {1,2} by Th2,Th44; end; begin :: Fixed ordering of a finite set into a finite sequence registration let A be finite set; cluster onto one-to-one for FinSequence of A; existence proof consider n such that A1: A,Seg n are_equipotent by Th56; consider f being Function such that A2: f is one-to-one and A3: dom f = Seg n and A4: rng f = A by A1,WELLORD2:def 4; f is FinSequence by A3,Def2; then reconsider f as FinSequence of A by A4,Def4; take f; thus thesis by A2,A4,FUNCT_2:def 3; end; end; definition let A be finite set; func canFS A -> FinSequence equals the one-to-one onto FinSequence of A; coherence; end; definition let A be finite set; redefine func canFS A -> FinSequence of A; coherence; end; registration let A be finite set; cluster canFS A -> one-to-one onto for FinSequence of A; coherence; end; theorem Th92: for A being finite set holds len canFS A = card A proof let A be finite set; thus card canFS A = card dom canFS A by CARD_1:62 .= card rng canFS A by CARD_1:70 .= card A by FUNCT_2:def 3; end; registration let A be finite non empty set; cluster canFS A -> non empty; coherence proof len canFS A = card A by Th92; hence thesis; end; end; theorem for a being object holds canFS({a}) = <* a *> proof let a be object; A1: rng canFS({a}) = {a} by FUNCT_2:def 3; len canFS({a}) = card {a} by Th92 .= 1 by CARD_1:30; hence thesis by A1,Th39; end; theorem for A being finite set holds (canFS A)" is Function of A, Seg card A proof let A be finite set; len canFS A = card A by Th92; then dom canFS A = Seg card A by Def3; then A1: rng ((canFS A)") = Seg card A by FUNCT_1:33; rng canFS A = A by FUNCT_2:def 3; then dom ((canFS A)") = A by FUNCT_1:33; hence thesis by A1,FUNCT_2:1; end; :: from PNPROC_1, 2012.02.20, A.T. theorem i > 0 implies {[i,x]} is FinSubsequence proof assume A1: i > 0; A2: dom {[i,x]} = {i} by RELAT_1:9; {i} c= Seg i proof let x be object; assume x in {i}; then x = i by TARSKI:def 1; hence thesis by A1,Th3; end; hence thesis by A2,Def12; end; Lm6: for p being FinSubsequence st Seq p = {} holds p = {} proof let p be FinSubsequence such that A1: Seq p = {}; rng Sgm dom p = dom p by Th50; then dom {} = dom Sgm dom p by A1,RELAT_1:27; then Sgm dom p = {}; then dom p = rng {} by Th50; hence thesis; end; theorem for q being FinSubsequence holds q = {} iff Seq q = {} by Lm6; registration cluster -> finite for FinSubsequence; coherence proof let q be FinSubsequence; ex n being Nat st dom q c= Seg n by Def12; hence thesis by FINSET_1:10; end; end; reserve x1,x2,y1,y2 for set; theorem {[x1,y1], [x2,y2]} is FinSequence implies x1 = 1 & x2 = 1 & y1 = y2 or x1 = 1 & x2 = 2 or x1 = 2 & x2 = 1 proof assume {[x1,y1], [x2,y2]} is FinSequence; then reconsider p = {[x1,y1], [x2,y2]} as FinSequence; A1: dom p = {x1,x2} by RELAT_1:10; then A2: x1 in dom p by TARSKI:def 2; A3: x2 in dom p by A1,TARSKI:def 2; A4: [x1,y1] in p by TARSKI:def 2; A5: [x2,y2] in p by TARSKI:def 2; A6: p.x1 = y1 by A4,FUNCT_1:1; A7: p.x2 = y2 by A5,FUNCT_1:1; A8: dom p = Seg len p by Def3; A9: len p <= 1+1 by CARD_2:50; A10: len p >= 0 qua Nat+1 by NAT_1:13; A11: now assume len p = 1; hence x1 = 1 & x2 = 1 by A2,A3,A8,Th2,TARSKI:def 1; hence y1 = y2 by A5,A6,FUNCT_1:1; end; now assume A12: len p = 2; A13: x1 = x2 implies p = {[x1,y1]} by A6,A7,ENUMSET1:29; x1 = 1 & x2 = 2 or x1 = 2 & x2 = 1 or x1 = 1 & x2 = 1 or x1 = 2 & x2 = 2 by A2,A3,A8,A12,Th2,TARSKI:def 2; hence x1 = 1 & x2 = 2 or x1 = 2 & x2 = 1 by A12,A13,CARD_1:30; end; hence thesis by A9,A10,A11,NAT_1:9; end; theorem <*x1,x2*> = {[1,x1], [2,x2]} proof reconsider f={[1,x1], [2,x2]} as Function by GRFUNC_1:8; A1: dom f = {1,2} by RELAT_1:10; then A2: dom <*x1,x2*> = dom f by Th2,Th88; now let x be object; assume A3: x in {1,2}; per cases by A3,TARSKI:def 2; suppose A4: x = 1; then A5: <*x1,x2*>.x = x1 by Th44; [x,x1] in f by A4,TARSKI:def 2; hence f.x = <*x1,x2*>.x by A5,FUNCT_1:1; end; suppose A6: x = 2; then A7: <*x1,x2*>.x = x2 by Th44; [x,x2] in f by A6,TARSKI:def 2; hence f.x = <*x1,x2*>.x by A7,FUNCT_1:1; end; end; hence thesis by A1,A2,FUNCT_1:2; end; reserve j for Nat; theorem for q being FinSubsequence holds dom Seq q = dom Sgm dom q proof let q be FinSubsequence; rng Sgm dom q = dom q by Th50; hence thesis by RELAT_1:27; end; theorem for q being FinSubsequence holds rng q = rng Seq q proof let q be FinSubsequence; dom q = rng Sgm dom q by Th50; hence thesis by RELAT_1:28; end; registration cluster one-to-one for FinSequence; existence proof take {}; thus thesis; end; end; registration let D; cluster one-to-one for FinSequence of D; existence proof take <*>D; thus thesis; end; end; registration cluster non empty natural-valued for FinSequence; existence proof <*0*> is natural-valued & <*0*> is non empty; hence thesis; end; end;