The Mizar article:

The Sequential Closure Operator in Sequential and Frechet Spaces

by
Bartlomiej Skorulski

Received February 13, 1999

Copyright (c) 1999 Association of Mizar Users

MML identifier: FRECHET2
[ MML identifier index ]


environ

 vocabulary RELAT_1, FUNCT_1, PRE_TOPC, URYSOHN1, NORMSP_1, FUNCOP_1, FRECHET,
      BOOLE, COMPTS_1, ORDINAL2, SEQM_3, SEQ_1, ARYTM_1, SQUARE_1, CANTOR_1,
      CARD_4, SETFAM_1, ORDINAL1, FINSET_1, SEQ_2, METRIC_1, PCOMPS_1,
      METRIC_6, WAYBEL_7, TARSKI, FUNCT_2, FRECHET2, RLVECT_3, SGRAPH1, ARYTM;
 notation TARSKI, XBOOLE_0, SUBSET_1, NUMBERS, XCMPLX_0, XREAL_0, ORDINAL1,
      ORDINAL2, SETFAM_1, FINSET_1, CARD_4, CQC_SIM1, TOPS_2, RELAT_1, FUNCT_1,
      FUNCT_2, NORMSP_1, COMPTS_1, URYSOHN1, REAL_1, NAT_1, PRE_CIRC, LIMFUNC1,
      CANTOR_1, SEQ_1, SEQM_3, METRIC_1, PCOMPS_1, TBSP_1, STRUCT_0, PRE_TOPC,
      FINSOP_1, METRIC_6, YELLOW_8, FRECHET;
 constructors CARD_4, URYSOHN1, WAYBEL_3, COMPTS_1, TOPS_2, CANTOR_1, SEQ_1,
      NAT_1, FINSOP_1, PRE_CIRC, CQC_SIM1, INT_1, LIMFUNC1, TBSP_1, METRIC_6,
      YELLOW_8, FRECHET;
 clusters XREAL_0, STRUCT_0, PRE_TOPC, NORMSP_1, INT_1, FUNCT_1, METRIC_1,
      PCOMPS_1, GROUP_2, WAYBEL12, FRECHET, RELSET_1, SEQM_3, FUNCT_2,
      MEMBERED, NAT_1, ORDINAL2;
 requirements NUMERALS, BOOLE, SUBSET, ARITHM;
 definitions TARSKI, SEQM_3, PRE_TOPC, TOPS_2, METRIC_6, FUNCT_1, FUNCT_2,
      FRECHET, XBOOLE_0;
 theorems FRECHET, URYSOHN1, YELLOW_8, PRE_TOPC, TARSKI, FUNCOP_1, NORMSP_1,
      ZFMISC_1, PCOMPS_1, COMPTS_1, SQUARE_1, WAYBEL12, FUNCT_1, AXIOMS,
      CARD_1, RELAT_1, SETFAM_1, ORDINAL1, FUNCT_2, TOPS_1, TOPS_2, FINSET_1,
      CANTOR_1, SUBSET_1, SEQM_3, NAT_1, REAL_1, INT_1, SEQ_1, TOPMETR,
      METRIC_6, PRE_CIRC, CQC_SIM1, WELLORD2, RELSET_1, XBOOLE_0, XBOOLE_1,
      XREAL_0, XCMPLX_0, XCMPLX_1, ORDINAL2;
 schemes ZFREFLE1, DOMAIN_1, NAT_1, LATTICE5, SEQ_1, COMPTS_1;

begin

Lm1:
for T being non empty TopSpace holds
   T is_T1 iff for p being Point of T holds Cl({p}) = {p}
proof
  let T be non empty TopSpace;
  thus T is_T1 implies for p being Point of T holds Cl({p}) = {p}
                                                           by YELLOW_8:35;
  assume
A1:  for p being Point of T holds Cl({p}) = {p};
    for p being Point of T holds {p} is closed
  proof
    let p be Point of T;
      Cl({p}) = {p} by A1;
    hence {p} is closed by PRE_TOPC:52;
  end;
  hence T is_T1 by URYSOHN1:27;
end;

Lm2:
for T being non empty TopSpace holds
  not T is_T1 implies
    ex x1,x2 being Point of T st x1 <> x2 & x2 in Cl({x1})
proof
  let T be non empty TopSpace;
  assume not T is_T1;
  then consider x1 being Point of T such that
A1:  Cl{x1} <> {x1} by Lm1;

   not ({x1} c= Cl{x1}) or not(Cl{x1} c= {x1}) by A1,XBOOLE_0:def 10;
  then consider x2 being set such that
A2: x2 in Cl{x1} and
A3: not x2 in {x1} by PRE_TOPC:48,TARSKI:def 3;
  reconsider x2 as Point of T by A2;
  take x1,x2;
  thus x1 <> x2 by A3,TARSKI:def 1;
  thus x2 in Cl({x1}) by A2;
end;

Lm3:
for T being non empty TopSpace holds
  not T is_T1 implies
    ex x1,x2 being Point of T, S being sequence of T st
      S = (NAT --> x1) & x1 <> x2 & S is_convergent_to x2
proof
  let T be non empty TopSpace;
  assume not T is_T1;
  then consider x1,x2 being Point of T such that
A1: x1 <> x2 and
A2: x2 in Cl({x1}) by Lm2;
  reconsider S=(NAT --> x1) as sequence of T by NORMSP_1:def 3;
  take x1,x2,S;
  thus S = (NAT --> x1);
  thus x1 <> x2 by A1;
  thus S is_convergent_to x2
  proof
    let U1 be Subset of T;
    assume U1 is open & x2 in U1;
    then {x1} meets U1 by A2,PRE_TOPC:def 13;
    then A3:    x1 in U1 by ZFMISC_1:56;
    take 0;
    thus thesis by A3,FUNCOP_1:13;
  end;
end;

Lm4:
for T being non empty TopSpace holds
  T is_T2 implies T is_T1
proof
  let T be non empty TopSpace;
  assume T is_T2;
  then for p being Point of T holds {p} is closed by PCOMPS_1:10;
  hence T is_T1 by URYSOHN1:27;
end;

Lm5:
for T being non empty 1-sorted, S being sequence of T,
f being Function of NAT,NAT
  holds S*f is sequence of T by NORMSP_1:def 3;

definition
  let T be non empty 1-sorted,f be Function of NAT,NAT, S be sequence of T;
  redefine func S*f -> sequence of T;
  coherence by Lm5;
end;

theorem Th1:
for T being non empty 1-sorted, S being sequence of T,
NS being increasing Seq_of_Nat
  holds S*NS is sequence of T
proof
  let T be non empty 1-sorted,S be sequence of T,NS be increasing Seq_of_Nat;
A1:
  rng NS c= NAT by SEQM_3:def 8;
    dom NS =NAT by SEQ_1:3;
  then reconsider NS'=NS as Function of NAT,NAT by A1,FUNCT_2:4;
    S*NS' is sequence of T;
  hence S*NS is sequence of T;
end;

Lm6:
id NAT is Real_Sequence
proof
A1:dom (id NAT) =NAT by FUNCT_1:34;
    rng (id NAT) c= REAL
  proof
    let x be set;
    assume x in rng (id NAT);
    then consider n being set such that
A2:   n in dom (id NAT) and
A3:   (id NAT).n = x by FUNCT_1:def 5;
      (id NAT).n in dom(id NAT) by A1,A2,FUNCT_1:34;
    hence x in REAL by A1,A3;
  end;
  hence id NAT is Real_Sequence by A1,FUNCT_2:4;
end;

Lm7:
for RS being Real_Sequence st RS=id NAT holds
  RS is natural-yielding
proof
  let RS be Real_Sequence;
  assume RS=id NAT;
  hence rng RS c= NAT by RELAT_1:71;
end;

Lm8:
for RS being Real_Sequence st RS=id NAT holds
  RS is increasing
proof
  let RS be Real_Sequence;
  assume
A1:  RS=id NAT;
  let n be Nat;
  A2:  RS.n = n by A1,FUNCT_1:34;
    (id NAT).(n+1) = n+1 by FUNCT_1:34;
  hence RS.n<RS.(n+1) by A1,A2,NAT_1:38;
end;

theorem
 for RS being Real_Sequence st RS=id NAT holds
  RS is increasing Seq_of_Nat by Lm7,Lm8;

Lm9:
for T being non empty 1-sorted, S being sequence of T holds
  ex NS being increasing Seq_of_Nat st S = S * NS
proof
  let T be non empty 1-sorted, S be sequence of T;
  reconsider NS=id NAT as increasing Seq_of_Nat by Lm6,Lm7,Lm8;
  take NS;
  thus S = S * NS by FUNCT_2:23;
end;

definition
  let T be non empty 1-sorted, S be sequence of T;
  mode subsequence of S -> sequence of T means :Def1:
    ex NS being increasing Seq_of_Nat st it = S * NS;
  existence
  proof
    take S;
    thus ex NS being increasing Seq_of_Nat st S = S * NS by Lm9;
  end;
end;

theorem Th3:
for T being non empty 1-sorted, S being sequence of T holds
  S is subsequence of S
proof
  let T be non empty 1-sorted, S be sequence of T;
    ex NS being increasing Seq_of_Nat st S = S * NS by Lm9;
  hence S is subsequence of S by Def1;
end;

theorem Th4:
for T being non empty 1-sorted, S being sequence of T,
    S1 being subsequence of S
holds rng S1 c= rng S
proof
  let T be non empty 1-sorted, S be sequence of T, S1 be subsequence of S;
  let y be set;
  assume y in rng S1;
  then consider x being set such that
A1: x in dom S1 and
A2: y = S1.x by FUNCT_1:def 5;
  consider NS being increasing Seq_of_Nat such that
A3: S1=S*NS by Def1;
  reconsider x as Nat by A1,NORMSP_1:17;
    NS.x in NAT;
  then A4:  NS.x in dom S by NORMSP_1:17;
    y = S.(NS.x) by A1,A2,A3,FUNCT_1:22;
  hence y in rng S by A4,FUNCT_1:def 5;
end;

Lm10:
for T being non empty 1-sorted, S being sequence of T,
    NS being increasing Seq_of_Nat holds
      S*NS is subsequence of S
proof
  let T be non empty 1-sorted, S be sequence of T,
      NS be increasing Seq_of_Nat;
  reconsider S1=S*NS as sequence of T by Th1;
    S1 is subsequence of S by Def1;
  hence S*NS is subsequence of S;
end;

definition
let T be non empty 1-sorted, NS be increasing Seq_of_Nat, S be sequence of T;
redefine func S*NS -> subsequence of S;
correctness by Lm10;
end;

theorem Th5:
for T being non empty 1-sorted, S1 being sequence of T,
    S2 being subsequence of S1, S3 being subsequence of S2 holds
      S3 is subsequence of S1
proof
  let T be non empty 1-sorted, S1 be sequence of T,
      S2 be subsequence of S1, S3 be subsequence of S2;
  consider NS2 being increasing Seq_of_Nat such that
A1:  S3 = S2 * NS2 by Def1;
  consider NS1 being increasing Seq_of_Nat such that
A2:  S2 = S1 * NS1 by Def1;
    S3 = S1 * (NS1 * NS2) by A1,A2,RELAT_1:55;
  hence S3 is subsequence of S1;
end;

scheme SubSeqChoice
  {T()->non empty 1-sorted,S()->sequence of T(),P[set]} :
  ex S1 being subsequence of S() st for n being Nat holds P[S1.n]
provided A1:
  for n being Nat ex m being Nat,x being Point of T() st
    n <= m & x = S().m & P[x]
proof
A2:
  for n being Nat ex m being Nat st
    n <= m & P[S().m]
  proof
    let n be Nat;
    consider m being Nat such that
A3:   ex x being Point of T() st n <= m & x = S().m & P[x] by A1;
    take m;
    consider x being Point of T() such that
A4:   n <= m & x = S().m & P[S().m] by A3;
    thus n <= m by A4;
    thus P[S().m] by A4;
  end;
  then consider n0 being Nat such that
      0 <= n0 and
A5: P[S().n0];
  defpred R[Nat,set,set] means
    $3 in NAT &
      (for m,k being Nat st m=$2 & k=$3 holds m<k & P[S().k]);
A6: for n being Nat for x being set ex y being set st R[n,x,y]
  proof
    let n be Nat, x be set;
    per cases;
    suppose x in NAT;
    then reconsider mx=x as Nat;
    consider my being Nat such that
A7:    mx + 1 <= my & P[S().my] by A2;
    take my;
    thus my in NAT;
    thus for m,k being Nat st m=x & k=my holds m<k & P[S().k] by A7,NAT_1:38;
    suppose
A8:    not x in NAT;
    set y=0;
    take 0;
    thus y in NAT;
    let m,k be Nat;
    assume m=x & k=y;
    hence m<k & P[S().k] by A8;
  end;
  consider g being Function such that
A9: dom g = NAT and
A10: g.0 = n0 and
A11: for n being Nat holds R[n,g.n,g.(n+1)]
        from RecChoice(A6);
A12:
  rng g c= NAT
  proof
    let y be set;
    assume y in rng g;
    then consider x being set such that
A13:   x in dom g and
A14:   g.x = y by FUNCT_1:def 5;
    reconsider n=x as Nat by A9,A13;
    defpred P[Nat] means g.$1 in NAT;
A15: P[0] by A10;
A16: for k being Nat holds P[k] implies P[k+1] by A11;
      for k being Nat holds P[k] from Ind(A15,A16);
    then g.n in NAT;
    hence y in NAT by A14;
  end;
  then rng g c= REAL by XBOOLE_1:1;
  then reconsider g as Function of NAT,REAL by A9,FUNCT_2:4;
  reconsider g as Real_Sequence;
    for n being Nat holds g.n<g.(n+1)
  proof
    let n be Nat;
      g.(n+1) in rng g by A9,FUNCT_1:def 5;
    then reconsider k=g.(n+1) as Nat by A12;
      g.n in rng g by A9,FUNCT_1:def 5;
    then reconsider m=g.n as Nat by A12;
      m < k by A11;
    hence g.n<g.(n+1);
  end;
  then reconsider g as increasing Seq_of_Nat by A12,SEQM_3:def 8,def 11;
  reconsider S1 = S() * g as sequence of T();
A17: dom S1 = NAT by NORMSP_1:17;
  reconsider S1 as subsequence of S();
  take S1;
  thus for n being Nat holds P[S1.n]
  proof
    let n be Nat;
    per cases;
    suppose n = 0;
    hence P[S1.n] by A5,A10,A17,FUNCT_1:22;
    suppose n <> 0;
    then n > 0 by NAT_1:19;
    then n >= 0 + 1 by NAT_1:38;
    then reconsider n'=n-1 as Nat by INT_1:18;
A18:for m,k being Nat st m=g.(n') & k=g.((n')+1) holds P[S().k] by A11;
    reconsider k=g.((n')+1) as Nat;
A19:  P[S().k] by A18;
      n + (-1)=n' by XCMPLX_0:def 8;
    then n=n'-(-1) by XCMPLX_1:26;
    then n=n'+1 by XCMPLX_1:151;
    hence P[S1.n] by A17,A19,FUNCT_1:22;
  end;
end;

scheme SubSeqChoice1
  {T()->non empty TopStruct,S()->sequence of T(),P[set]} :
  ex S1 being subsequence of S() st
    for n being Nat holds P[S1.n]
provided
A1: for n being Nat ex m being Nat,x being Point of T() st
    n <= m & x = S().m & P[x]
proof
  reconsider T'=T() as non empty 1-sorted;
  reconsider S'=S() as sequence of T';
   defpred R[set] means P[$1];
A2: for n being Nat ex m being Nat,x being Point of T' st
    n <= m & x = S'.m & R[x] by A1;
  consider S1 being subsequence of S' such that
A3: for n being Nat holds R[S1.n] from SubSeqChoice(A2);
  reconsider S1 as subsequence of S();
  take S1;
  thus for n being Nat holds P[S1.n] by A3;
end;

theorem Th6:
for T being non empty 1-sorted, S being sequence of T,
A being Subset of T holds
  (for S1 being subsequence of S holds not rng S1 c= A)
    implies (ex n being Nat st for m being Nat st n <= m holds not S.m in A)
proof
  let T be non empty 1-sorted, S be sequence of T,
  A be Subset of T;
  assume
A1:  for S1 being subsequence of S holds not rng S1 c= A;
  assume
A2: for n being Nat ex m being Nat st n <= m & S.m in A;
  defpred Q[set] means $1 in A;
A3: for n being Nat ex m being Nat, x being Point of T
    st n <= m & x = S.m & Q[x]
  proof
    let n be Nat;
    consider m being Nat such that
A4:   n <= m & S.m in A by A2;
    take m;
    reconsider x=S.m as Point of T;
    take x;
    thus n <= m & x = S.m & x in A by A4;
  end;
  consider S1 being subsequence of S such that
A5: for n being Nat holds Q[S1.n] from SubSeqChoice(A3);
    rng S1 c= A
  proof
    let y be set;
    assume y in rng S1;
    then consider x1 being set such that
A6:   x1 in dom S1 and
A7:   S1.x1 = y by FUNCT_1:def 5;
    reconsider n=x1 as Nat by A6,NORMSP_1:17;
      S1.n in A by A5;
    hence y in A by A7;
  end;
  hence contradiction by A1;
end;

theorem Th7:
for T being non empty 1-sorted,S being sequence of T,
  A,B being Subset of T st rng S c= A \/ B holds
    ex S1 being subsequence of S st rng S1 c= A or rng S1 c= B
proof
  let T be non empty 1-sorted,S be sequence of T,
      A,B be Subset of T;
  assume
A1:  rng S c= A \/ B;
  assume
A2:  for S1 being subsequence of S holds not rng S1 c= A & not rng S1 c= B;
  then consider n1 being Nat such that
A3: for m being Nat st n1 <= m holds not S.m in A by Th6;
  consider n2 being Nat such that
A4: for m being Nat st n2 <= m holds not S.m in B by A2,Th6;
  reconsider n=max(n1,n2) as Nat;
    n1 <= n by SQUARE_1:46;
  then A5:  not S.n in A by A3;
    n2 <= n by SQUARE_1:46;
  then A6: not S.n in B by A4;
    n in NAT;
  then n in dom S by NORMSP_1:17;
  then S.n in rng S by FUNCT_1:def 5;
  hence contradiction by A1,A5,A6,XBOOLE_0:def 2;
end;

Lm11:for T being non empty TopSpace st T is first-countable holds
  for x being Point of T holds
    ex B being Basis of x st
      ex S being Function st
        dom S = NAT &
        rng S = B &
        for n,m being Nat st m >= n holds S.m c= S.n
proof
  let T be non empty TopSpace;
  assume
A1:  T is first-countable;
  let x be Point of T;
  consider B1 being Basis of x such that
A2:  B1 is countable by A1,FRECHET:def 1;
  consider f being Function of NAT,B1 such that
A3:   rng f = B1 by A2,WAYBEL12:4;
  defpred P[set,set] means $2 = meet (f.:succ $1);
A4:
  for n being set st n in NAT ex A being set st P[n,A];
  consider S being Function such that
A5: dom S = NAT and
A6: for n being set st n in NAT holds P[n,S.n]
      from NonUniqFuncEx(A4);
A7:
  for n,m being Nat st m >= n holds S.m c= S.n
  proof
    let n,m be Nat;
    assume
A8:   m >= n;
      n in succ n & dom f = NAT by FUNCT_2:def 1,ORDINAL1:10;
    then A9: f.n in f.:succ n by FUNCT_1:def 12;
      n + 1 <= m + 1 by A8,AXIOMS:24;
    then n + 1 c= m + 1 by CARD_1:56;
    then succ n c= m +1 by CARD_1:52;
    then succ n c= succ m by CARD_1:52;
    then f.:(succ n) c= f.:(succ m) by RELAT_1:156;
    then meet (f.:succ m) c= meet (f.:succ n) by A9,SETFAM_1:7;
    then S.m c= meet (f.:succ n) by A6;
    hence S.m c= S.n by A6;
  end;
A10:
  rng S c= bool the carrier of T
  proof
    let A be set;
    assume A in rng S;
    then consider n being set such that
A11:   n in dom S and
A12:   A = S.n by FUNCT_1:def 5;
      f.:succ n c= bool the carrier of T by XBOOLE_1:1;
    then f.:succ n is Subset-Family of T by SETFAM_1:def 7;
    then reconsider fsuccn = f.:succ n as Subset-Family of T;
      meet fsuccn = meet (f.:succ n);
    then meet (f.:succ n) in bool the carrier of T;
    hence A in bool the carrier of T by A5,A6,A11,A12;
  end;
  then reconsider B = rng S as Subset-Family of T
    by SETFAM_1:def 7;
  reconsider B as Subset-Family of T;
A13:
  B c= the topology of T
  proof
    let A be set;
    assume A in B;
    then consider n being set such that
A14:  n in dom S and
A15:  A = S.n by FUNCT_1:def 5;
A16:A = meet (f.:succ n) by A5,A6,A14,A15;
      f.:succ n c= bool the carrier of T by XBOOLE_1:1;
    then f.:succ n is Subset-Family of T by SETFAM_1:def 7;
    then reconsider C=f.:succ n as Subset-Family of T;
    reconsider n'=n as Nat by A5,A14;
      n' + 1 is finite by CARD_1:69;
    then succ(n') is finite by CARD_1:52;
    then A17: f.:(succ n) is finite by FINSET_1:17;
      C is open
    proof
      let P be Subset of T;
      assume P in C;
      hence P is open by YELLOW_8:21;
    end;
    then meet C is open by A17,TOPS_2:27;
    hence A in the topology of T by A16,PRE_TOPC:def 5;
  end;
  A18: ex A being set st A in B
  proof
    take A = meet(f.:(succ 0));

     A = S.0 by A6;
    hence A in B by A5,FUNCT_1:def 5;
  end;
  then A19:Intersect B = meet B by CANTOR_1:def 3;
    for A being set st A in B holds x in A
  proof
    let A be set;
    assume A in B;
    then consider n being set such that
A20: n in dom S and
A21: A = S.n by FUNCT_1:def 5;
A22:A = meet (f.:(succ n)) by A5,A6,A20,A21;
A23:for A1 being set st A1 in f.:(succ n) holds x in A1
    proof
      let A1 be set;
      assume A1 in f.:(succ n);
      then consider m being set such that
A24:   m in dom f and
          m in succ n and
A25:   A1 = f.m by FUNCT_1:def 12;
        f.m in rng f by A24,FUNCT_1:def 5;
      then reconsider A2=A1 as Subset of T by A3,A25;
      reconsider A2 as Subset of T;
        A2 in B1 by A3,A24,A25,FUNCT_1:def 5;
      hence x in A1 by YELLOW_8:21;
    end;
    A26: dom f = NAT by FUNCT_2:def 1;
      n in succ n by ORDINAL1:10;
    then f.n in f.:succ n by A5,A20,A26,FUNCT_1:def 12;
    hence x in A by A22,A23,SETFAM_1:def 1;
  end;
  then A27: x in meet B by A18,SETFAM_1:def 1;


   for O being Subset of T st O is open & x in O
    ex A being Subset of T st A in B & A c= O
  proof
    let O be Subset of T;
    assume O is open & x in O;
    then consider A1 being Subset of T such that
A28: A1 in B1 and
A29: A1 c= O by YELLOW_8:def 2;
    consider n being set such that
A30: n in dom f and
A31: A1 = f.n by A3,A28,FUNCT_1:def 5;
    A32: dom f = NAT by FUNCT_2:def 1;
 n in NAT by A30,FUNCT_2:def 1;
    then S.n in rng S by A5,FUNCT_1:def 5;
    then reconsider A = S.n as Subset of T by A10;
    reconsider A as Subset of T;
    take A;
    thus A in B by A5,A30,A32,FUNCT_1:def 5;
      n in succ n by ORDINAL1:10;
    then f.n in f.:(succ n) by A30,FUNCT_1:def 12;
    then meet(f.:(succ n)) c= A1 by A31,SETFAM_1:4;
    then S.n c= A1 by A6,A30,A32;
    hence A c= O by A29,XBOOLE_1:1;
  end;
  then reconsider B as Basis of x by A13,A19,A27,YELLOW_8:def 2;
  take B,S;
  thus dom S = NAT by A5;
  thus rng S = B;
  thus thesis by A7;
end;

theorem
  for T being non empty TopSpace holds
  (for S being sequence of T holds
    for x1,x2 being Point of T holds
      (x1 in Lim S & x2 in Lim S implies x1=x2))
   implies T is_T1
proof
  let T be non empty TopSpace;
  assume
A1:  for S being sequence of T holds
      for x1,x2 being Point of T holds
        (x1 in Lim S & x2 in Lim S implies x1=x2);
  assume not T is_T1;
  then consider x1,x2 being Point of T,S being sequence of T such that
A2: S = (NAT --> x1) and
A3: x1 <> x2 and
A4: S is_convergent_to x2 by Lm3;
    S is_convergent_to x1 by A2,FRECHET:23;
then A5: x1 in Lim S by FRECHET:def 4;
    x2 in Lim S by A4,FRECHET:def 4;
  hence contradiction by A1,A3,A5;
end;

theorem Th9:
for T being non empty TopSpace st T is_T2 holds
  for S being sequence of T, x1,x2 being Point of T holds
                   (x1 in Lim S & x2 in Lim S implies x1=x2)
proof
  let T be non empty TopSpace;
  assume
A1: T is_T2;
  assume not(for S being sequence of T, x1,x2 being Point of T holds
                   (x1 in Lim S & x2 in Lim S implies x1=x2));
  then consider S being sequence of T such that
A2:  ex x1,x2 being Point of T st (x1 in Lim S & x2 in Lim S & x1<>x2);
  consider x1,x2 being Point of T such that
A3: x1 in Lim S and
A4: x2 in Lim S and
A5: x1<>x2 by A2;
  consider U1,U2 being Subset of T such that
A6: U1 is open and
A7: U2 is open and
A8: x1 in U1 and
A9: x2 in U2 and
A10: U1 misses U2 by A1,A5,COMPTS_1:def 4;
A11:U1 /\ U2 = {} by A10,XBOOLE_0:def 7;
    S is_convergent_to x1 by A3,FRECHET:def 4;
  then consider n1 being Nat such that
A12: for m being Nat st n1 <= m holds S.m in U1 by A6,A8,FRECHET:def 2;
    S is_convergent_to x2 by A4,FRECHET:def 4;
  then consider n2 being Nat such that
A13: for m being Nat st n2 <= m holds S.m in U2 by A7,A9,FRECHET:def 2;
  reconsider n = max(n1,n2) as Nat;
    n1 <= n by SQUARE_1:46;
  then A14:  S.n in U1 by A12;
    n2 <= n by SQUARE_1:46;
  then S.n in U2 by A13;
  hence contradiction by A11,A14,XBOOLE_0:def 3;
end;

theorem
  for T being non empty TopSpace st T is first-countable holds
  T is_T2 iff
  (for S being sequence of T holds for x1,x2 being Point of T holds
                   (x1 in Lim S & x2 in Lim S implies x1=x2))
proof
  let T be non empty TopSpace;
  assume
A1: T is first-countable;
  thus T is_T2 implies (for S being sequence of T holds
    for x1,x2 being Point of T holds
      (x1 in Lim S & x2 in Lim S implies x1=x2)) by Th9;
  assume
A2: for S being sequence of T holds for x1,x2 being Point of T holds
     (x1 in Lim S & x2 in Lim S implies x1=x2);
  assume not T is_T2;
  then consider x1,x2 being Point of T such that
A3: x1 <> x2 and
A4: for U1,U2 being Subset of T st
    (U1 is open & U2 is open & x1 in U1 & x2 in U2) holds
      U1 meets U2 by COMPTS_1:def 4;
  consider B1 being Basis of x1 such that
A5: ex S being Function st
      dom S = NAT &
      rng S = B1 &
      for n,m being Nat st m >= n holds S.m c= S.n by A1,Lm11;
  consider S1 being Function such that
A6: dom S1 = NAT and
A7: rng S1 = B1 and
A8: for n,m being Nat st m >= n holds S1.m c= S1.n by A5;
  consider B2 being Basis of x2 such that
A9: ex S being Function st
      dom S = NAT &
      rng S = B2 &
      for n,m being Nat st m >= n holds S.m c= S.n by A1,Lm11;
  consider S2 being Function such that
A10:dom S2 = NAT and
A11:rng S2 = B2 and
A12:for n,m being Nat st m >= n holds S2.m c= S2.n by A9;
  defpred P[set,set] means $2 in S1.$1 /\ S2.$1;
A13:
  for n being set st n in NAT ex x being set st
    x in the carrier of T & P[n,x]
  proof
    let n be set;
    assume
A14:   n in NAT;
    then A15:  S1.n in B1 by A6,A7,FUNCT_1:def 5;
    then reconsider U1=S1.n as Subset of T;
    reconsider U1 as Subset of T;
    A16:   U1 is open & x1 in U1 by A15,YELLOW_8:21;
    A17:  S2.n in B2 by A10,A11,A14,FUNCT_1:def 5;
    then reconsider U2=S2.n as Subset of T;
    reconsider U2 as Subset of T;
     U2 is open & x2 in U2 by A17,YELLOW_8:21;
   then U1 meets U2 by A4,A16;
then A18: U1 /\ U2 <> {} by XBOOLE_0:def 7;
    consider x being Element of S1.n /\ S2.n;
    take x;
  x in U1 /\ U2 by A18;
    hence x in the carrier of T;
    thus x in S1.n /\ S2.n by A18;
  end;
  consider S being Function such that
A19: dom S = NAT and
A20: rng S c= the carrier of T and
A21: for n being set st n in NAT holds P[n,S.n]
      from NonUniqBoundFuncEx(A13);
  reconsider S as Function of NAT,the carrier of T by A19,A20,FUNCT_2:def 1,
RELSET_1:11;
  reconsider S as sequence of T by NORMSP_1:def 3;
    S is_convergent_to x1
  proof
    let U1 be Subset of T;
    assume U1 is open & x1 in U1;
    then consider V1 being Subset of T such that
A22:   V1 in B1 and
A23:   V1 c= U1 by YELLOW_8:22;
    consider n being set such that
A24:   n in dom S1 and
A25:   V1 = S1.n by A7,A22,FUNCT_1:def 5;
    reconsider n as Nat by A6,A24;
    take n;
    let m be Nat;
    assume n <= m;
    then A26:   S1.m c= S1.n by A8;
A27:   S.m in S1.m /\ S2.m by A21;
      S1.m /\ S2.m c= S1.m by XBOOLE_1:17;
    then S.m in S1.m by A27;
    then S.m in S1.n by A26;
    hence S.m in U1 by A23,A25;
  end;
  then A28: x1 in Lim S by FRECHET:def 4;
    S is_convergent_to x2
  proof
    let U2 be Subset of T;
    assume U2 is open & x2 in U2;
    then consider V2 being Subset of T such that
A29:   V2 in B2 and
A30:   V2 c= U2 by YELLOW_8:22;
    consider n being set such that
A31:   n in dom S2 and
A32:   V2 = S2.n by A11,A29,FUNCT_1:def 5;
    reconsider n as Nat by A10,A31;
    take n;
    let m be Nat;
    assume n <= m;
    then A33:   S2.m c= S2.n by A12;
A34:   S.m in S1.m /\ S2.m by A21;
      S1.m /\ S2.m c= S2.m by XBOOLE_1:17;
    then S.m in S2.m by A34;
    then S.m in S2.n by A33;
    hence S.m in U2 by A30,A32;
  end;
  then x2 in Lim S by FRECHET:def 4;
  hence contradiction by A2,A3,A28;
end;

theorem Th11:
for T being non empty TopStruct, S being sequence of T st S is not convergent
  holds Lim S = {}
proof
  let T be non empty TopStruct, S be sequence of T;
  assume
A1: S is not convergent;
  assume
A2:  Lim S <> {};
  consider x being Element of Lim S;
 x in Lim S by A2;
  then reconsider x as Point of T;
    S is_convergent_to x by A2,FRECHET:def 4;
  hence contradiction by A1,FRECHET:def 3;
end;

theorem Th12:
for T being non empty TopSpace,A being Subset of T holds
A is closed implies
  (for S being sequence of T st rng S c= A holds Lim S c= A)
proof
  let T be non empty TopSpace,A be Subset of T;
  assume
A1:  A is closed;
  let S be sequence of T;
  assume
A2:  rng S c= A;
  per cases;
  suppose S is convergent;
  hence Lim S c= A by A1,A2,FRECHET:26;
  suppose S is not convergent;
  then Lim S = {} by Th11;
  hence Lim S c= A by XBOOLE_1:2;
end;

theorem
  for T being non empty TopStruct,S being sequence of T, x being Point of T
st not S is_convergent_to x holds
  ex S1 being subsequence of S
     st for S2 being subsequence of S1 holds
    not S2 is_convergent_to x
proof
  let T be non empty TopStruct,S be sequence of T, x be Point of T;
  assume not S is_convergent_to x;
  then consider A being Subset of T such that
A1: A is open and
A2: x in A and
A3: for n being Nat ex m being Nat st n <= m & not S.m in A by FRECHET:def 2;
  defpred P[set] means not $1 in A;
A4:
  for n being Nat ex m being Nat, x being Point of T st
    n <= m & x = S.m & P[x]
  proof
    let n be Nat;
    consider m being Nat such that
A5:   n <= m & not S.m in A by A3;
    take m;
    reconsider x=S.m as Point of T;
    take x;
    thus n <= m & x = S.m & not x in A by A5;
  end;
  consider S1 being subsequence of S such that
A6: for n being Nat holds P[S1.n] from SubSeqChoice1(A4);
  take S1;
  let S2 be subsequence of S1;
    ex U1 being Subset of T st U1 is open & x in U1 &
    for n being Nat ex m being Nat st n <= m & not S2.m in U1
  proof
    take A;
    thus A is open & x in A by A1,A2;
    let n be Nat;
    take n;
    thus n <= n;
    consider NS being increasing Seq_of_Nat such that
A7:    S2=S1*NS by Def1;
      n in NAT;
    then n in dom S2 by NORMSP_1:17;
    then S2.n=S1.(NS.n) by A7,FUNCT_1:22;
    hence not S2.n in A by A6;
  end;
  hence not S2 is_convergent_to x by FRECHET:def 2;
end;

begin ::The Continuous Maps

theorem Th14:
for T1,T2 being non empty TopSpace, f being map of T1,T2 holds
  f is continuous implies
    for S1 being sequence of T1, S2 being sequence of T2 st S2=f*S1 holds
      f.:(Lim S1) c= Lim S2
proof
  let T1,T2 be non empty TopSpace, f be map of T1,T2;
  assume
A1:  f is continuous;
  let S1 be sequence of T1, S2 be sequence of T2;
  assume
A2:  S2=f*S1;
  let y be set;
  assume
A3:  y in f.:(Lim S1);
  then reconsider y'=y as Point of T2;
    S2 is_convergent_to y'
  proof
    let U2 be Subset of T2;
    assume that
A4:   U2 is open and
A5:   y' in U2;
    consider x being set such that
A6:   x in dom f and
A7:   x in Lim S1 and
A8:   y = f.x by A3,FUNCT_1:def 12;
    reconsider U1=f"U2 as Subset of T1;
A9: U1 is open by A1,A4,TOPS_2:55;
    A10:   x in f"U2 by A5,A6,A8,FUNCT_1:def 13;
    then reconsider x as Point of T1;
      S1 is_convergent_to x by A7,FRECHET:def 4;
    then consider n being Nat such that
A11:    for m being Nat st n <= m holds S1.m in f"U2 by A9,A10,FRECHET:def 2;
    take n;
    let m be Nat;
    assume n <= m;
    then S1.m in f"U2 by A11;
then A12:    f.(S1.m) in U2 by FUNCT_1:def 13;
      dom S1 = NAT by FUNCT_2:def 1;
    hence S2.m in U2 by A2,A12,FUNCT_1:23;
  end;
  hence y in Lim S2 by FRECHET:def 4;
end;

theorem
  for T1,T2 being non empty TopSpace, f being map of T1,T2
st T1 is sequential holds
  f is continuous iff
  for S1 being sequence of T1, S2 being sequence of T2 st S2=f*S1 holds
  f.:(Lim S1) c= Lim S2
proof
  let T1,T2 be non empty TopSpace, f be map of T1,T2;
  assume
A1:  T1 is sequential;
  thus f is continuous implies
    for S1 being sequence of T1, S2 being sequence of T2 st S2=f*S1 holds
      f.:(Lim S1) c= Lim S2 by Th14;
  assume
A2: for S1 being sequence of T1, S2 being sequence of T2 st S2=f*S1 holds
      f.:(Lim S1) c= Lim S2;
  let B be Subset of T2;
  assume
A3: B is closed;
  reconsider A=f"B as Subset of T1;
    for S being sequence of T1 st ( S is convergent & rng S c= A ) holds
     Lim S c= A
  proof
    let S be sequence of T1;
    assume that
        S is convergent and
A4:   rng S c= A;
    let x be set;
    assume
A5:    x in Lim S;
    reconsider S2=f*S as sequence of T2 by NORMSP_1:def 3;
    A6: dom f = the carrier of T1 by FUNCT_2:def 1;
    then A7:   f.x in f.:(Lim S) by A5,FUNCT_1:def 12;
      f.:(Lim S) c= Lim S2 by A2;
    then A8:    f.x in Lim S2 by A7;
    reconsider B'=B as Subset of T2;
      rng S2 c= B'
    proof
      let z be set;
      assume z in rng S2;
      then consider n being set such that
A9:     n in dom S2 and
A10:     z = S2.n by FUNCT_1:def 5;
A11:    dom S = NAT by NORMSP_1:17;
        n in NAT by A9,NORMSP_1:17;
      then S.n in rng S by A11,FUNCT_1:def 5;
      then f.(S.n) in B by A4,FUNCT_1:def 13;
      hence z in B' by A9,A10,FUNCT_1:22;
    end;
    then Lim S2 c= B' by A3,Th12;
    hence x in A by A5,A6,A8,FUNCT_1:def 13;
  end;
  hence f"B is closed by A1,FRECHET:def 6;
end;

begin ::The Sequential Closure Operator

definition
let T be non empty TopStruct, A be Subset of T;
func Cl_Seq A -> Subset of T means :Def2:
  for x being Point of T holds x in it iff
    ex S being sequence of T st rng S c= A & x in Lim S;
existence
proof
  defpred P[Point of T] means
    ex S being sequence of T st rng S c=A & $1 in Lim S;
  reconsider X= {x where x is Point of T: P[x]}
  as Subset of T from SubsetD;
  reconsider X as Subset of T;
  take X;
  let x be Point of T;
  thus x in X implies
    (ex S being sequence of T st rng S c= A & x in Lim S)
  proof
    assume x in X;
    then consider x' being Point of T such that
A1:    x=x' & ex S being sequence of T st rng S c= A & x' in Lim S;
    thus ex S being sequence of T st rng S c= A & x in Lim S by A1;
  end;
  assume ex S being sequence of T st rng S c= A & x in Lim S;
  hence x in X;
end;
uniqueness
proof
  let A1,A2 be Subset of T;
  assume that
A2: for x being Point of T holds
      x in A1 iff ex S being sequence of T st rng S c= A & x in Lim S and
A3: for x being Point of T holds
      x in A2 iff ex S being sequence of T st rng S c= A & x in Lim S;
    for x being Point of T holds x in A1 iff x in A2
  proof
    let x be Point of T;
      x in A1 iff ex S being sequence of T st rng S c= A & x in Lim S by A2;
    hence x in A1 iff x in A2 by A3;
  end;
  hence A1 = A2 by SUBSET_1:8;
end;
end;

theorem Th16:
for T being non empty TopStruct, A being Subset of T, S being sequence of T,
  x being Point of T st rng S c= A & x in Lim S holds
    x in Cl(A)
proof
  let T be non empty TopStruct, A be Subset of T, S be sequence of T,
      x be Point of T;
  assume that
A1: rng S c= A and
A2: x in Lim S;
    for O being Subset of T st O is open holds x in O implies A meets O
  proof
    let O be Subset of T;
    assume
A3:    O is open;
    assume
A4:    x in O;
      S is_convergent_to x by A2,FRECHET:def 4;
    then consider n being Nat such that
A5:  for m being Nat st n <= m holds S.m in O by A3,A4,FRECHET:def 2;
A6:    S.n in O by A5;
      n in NAT;
    then n in dom S by NORMSP_1:17;
    then S.n in rng S by FUNCT_1:def 5;
    then S.n in A /\ O by A1,A6,XBOOLE_0:def 3;
    hence A meets O by XBOOLE_0:def 7;
  end;
  hence thesis by PRE_TOPC:def 13;
end;

theorem Th17:
for T being non empty TopStruct, A being Subset of T holds
  Cl_Seq(A) c= Cl(A)
proof
  let T be non empty TopStruct, A be Subset of T;
  let x be set;
  assume
A1:  x in Cl_Seq(A);
  then reconsider x'=x as Point of T;
    ex S being sequence of T st rng S c= A & x' in Lim S by A1,Def2;
  hence x in Cl(A) by Th16;
end;

theorem Th18:
for T being non empty TopStruct, S being sequence of T,
    S1 being subsequence of S, x being Point of T
holds S is_convergent_to x implies S1 is_convergent_to x
proof
  let T be non empty TopStruct, S be sequence of T, S1 be subsequence of S,
      x be Point of T;
  assume
A1:  S is_convergent_to x;
  let U1 be Subset of T;
  assume
    U1 is open & x in U1;
  then consider n being Nat such that
A2:  for m being Nat st n <= m holds S.m in U1 by A1,FRECHET:def 2;
  take n;
  let m be Nat;
  assume
A3:  n <= m;
  consider NS being increasing Seq_of_Nat such that
A4:  S1 = S * NS by Def1;
    m <= NS.m by SEQM_3:33;
  then n <= NS.m by A3,AXIOMS:22;
  then A5:  S.(NS.m) in U1 by A2;
    m in NAT;
    then m in dom S1 by NORMSP_1:17;
  hence S1.m in U1 by A4,A5,FUNCT_1:22;
end;

theorem Th19:
for T being non empty TopStruct, S being sequence of T,
S1 being subsequence of S holds
  Lim S c= Lim S1
proof
  let T be non empty TopStruct, S be sequence of T, S1 be subsequence of S;
  let x be set;
  assume
A1:  x in Lim S;
  then reconsider x'=x as Point of T;
    S is_convergent_to x' by A1,FRECHET:def 4;
  then S1 is_convergent_to x' by Th18;
  hence x in Lim S1 by FRECHET:def 4;
end;

theorem Th20:
for T being non empty TopStruct holds
  Cl_Seq({}T) = {}
proof
  let T be non empty TopStruct;
  consider x being Element of Cl_Seq({}T);
  assume A1: Cl_Seq({}T) <> {};
  then x in Cl_Seq({}T);
  then reconsider x as Point of T;
  consider S being sequence of T such that
A2:  rng S c= {}T & x in Lim S by A1,Def2;
    rng S = {} by A2,XBOOLE_1:3;
  then dom S = {} by RELAT_1:65;
  hence contradiction by NORMSP_1:17;
end;

theorem Th21:
for T being non empty TopStruct, A being Subset of T holds
  A c= Cl_Seq(A)
proof
  let T be non empty TopStruct, A be Subset of T;
  let x be set;
  assume
A1:  x in A;
  then reconsider x'=x as Point of T;
    ex S being sequence of T st rng S c= A & x' in Lim S
  proof
    reconsider S = (NAT --> x') as sequence of T by NORMSP_1:def 3;
    take S;
      {x'} c= A
    proof
      let x'' be set;
      assume x'' in {x'};
      hence x'' in A by A1,TARSKI:def 1;
    end;
    hence rng S c= A by FUNCOP_1:14;
      S is_convergent_to x' by FRECHET:23;
    hence x' in Lim S by FRECHET:def 4;
  end;
  hence x in Cl_Seq(A) by Def2;
end;

theorem Th22:
for T being non empty TopStruct, A,B being Subset of T holds
  Cl_Seq(A) \/ Cl_Seq(B) = Cl_Seq(A \/ B)
proof
  let T be non empty TopStruct, A,B be Subset of T;
  thus Cl_Seq(A) \/ Cl_Seq(B) c= Cl_Seq(A \/ B)
  proof
    let x be set;
    assume A1: x in Cl_Seq(A) \/ Cl_Seq(B);
    per cases by A1,XBOOLE_0:def 2;
    suppose
A2:    x in Cl_Seq(A);
    then reconsider x'=x as Point of T;
    consider S being sequence of T such that
A3:   rng S c= A and
A4:   x' in Lim S by A2,Def2;
      A c= A \/ B by XBOOLE_1:7;
    then rng S c= A \/ B by A3,XBOOLE_1:1;
    hence x in Cl_Seq(A \/ B) by A4,Def2;
    suppose
A5:    x in Cl_Seq(B);
    then reconsider x'=x as Point of T;
    consider S being sequence of T such that
A6:   rng S c= B and
A7:   x' in Lim S by A5,Def2;
      B c= A \/ B by XBOOLE_1:7;
    then rng S c= A \/ B by A6,XBOOLE_1:1;
    hence x in Cl_Seq(A \/ B) by A7,Def2;
  end;
  thus Cl_Seq(A \/ B) c= Cl_Seq(A) \/ Cl_Seq(B)
  proof
    let x be set;
    assume
A8:    x in Cl_Seq(A \/ B);
    then reconsider x' = x as Point of T;
    consider S being sequence of T such that
A9:   rng S c= A \/ B and
A10:   x' in Lim S by A8,Def2;
    consider S1 being subsequence of S such that
A11:   (rng S1 c= A or rng S1 c= B) by A9,Th7;
    A12: Lim S c= Lim S1 by Th19;
    per cases by A11;
    suppose rng S1 c= A;
    then x' in Cl_Seq(A) by A10,A12,Def2;
    hence x in Cl_Seq(A) \/ Cl_Seq(B) by XBOOLE_0:def 2;
    suppose rng S1 c= B;
    then x' in Cl_Seq(B) by A10,A12,Def2;
    hence x in Cl_Seq(A) \/ Cl_Seq(B) by XBOOLE_0:def 2;
  end;
end;

theorem Th23:
for T being non empty TopStruct holds
  T is Frechet iff for A being Subset of T holds
    Cl(A)=Cl_Seq(A)
proof
  let T be non empty TopStruct;
  thus T is Frechet implies for A being Subset of T holds
    Cl(A)=Cl_Seq(A)
  proof
    assume
A1:    T is Frechet;
    let A be Subset of T;
    reconsider A'=A as Subset of T;
    thus Cl(A)c=Cl_Seq(A)
    proof
      let x be set;
      assume
A2:      x in Cl(A);
      then reconsider x'=x as Point of T;
        ex S being sequence of T st (rng S c= A' & x' in Lim S )
         by A1,A2,FRECHET:def 5;
      hence x in Cl_Seq(A) by Def2;
    end;
      Cl_Seq(A') c= Cl(A') by Th17;
    hence Cl_Seq(A) c= Cl(A);
  end;
  assume
A3:  for A being Subset of T holds Cl(A)=Cl_Seq(A);
  let A be Subset of T,x be Point of T;
  assume x in Cl(A);
  then x in Cl_Seq(A) by A3;
  hence ex S being sequence of T st (rng S c= A & x in Lim S ) by Def2;
end;

theorem Th24:
for T being non empty TopSpace st T is Frechet holds
  for A,B being Subset of T holds
    Cl_Seq({}T) = {} &
    A c= Cl_Seq(A) &
    Cl_Seq(A \/ B) = Cl_Seq(A) \/ Cl_Seq(B) &
    Cl_Seq(Cl_Seq(A)) = Cl_Seq(A)
proof
  let T be non empty TopSpace;
  assume
A1:  T is Frechet;
  let A,B be Subset of T;
  thus Cl_Seq({}T) = {} & A c= Cl_Seq(A) & Cl_Seq(A \/ B)=Cl_Seq(A) \/
 Cl_Seq(B)
    by Th20,Th21,Th22;
  thus Cl_Seq(Cl_Seq(A)) = Cl_Seq(Cl(A)) by A1,Th23
                   .= Cl(Cl(A)) by A1,Th23
                   .= Cl(A) by TOPS_1:26
                   .= Cl_Seq(A) by A1,Th23;
end;

theorem Th25:
for T being non empty TopSpace st T is sequential holds
  (for A being Subset of T holds Cl_Seq(Cl_Seq(A)) = Cl_Seq(A)) implies
    T is Frechet
proof
  let T be non empty TopSpace;
  assume
A1: T is sequential;
  assume
A2: for A being Subset of T holds Cl_Seq(Cl_Seq(A)) = Cl_Seq(A);
  assume not T is Frechet;
  then consider A being Subset of T such that
A3:  ex x being Point of T st x in Cl(A) &
      for S being sequence of T holds (rng S c= A implies not x in Lim S )
        by FRECHET:def 5;
  consider x being Point of T such that
A4: x in Cl(A) and
A5: for S being sequence of T holds (rng S c= A implies not x in Lim S ) by A3;
A6:
  A c= Cl_Seq(A) by Th21;
    for Sq being sequence of T st ( Sq is convergent & rng Sq c= Cl_Seq(A) )
    holds Lim Sq c= Cl_Seq(A)
  proof
    let Sq be sequence of T;
    assume that
        Sq is convergent and
A7:   rng Sq c= Cl_Seq(A);
    let y be set;
    assume
A8:    y in Lim Sq;
    then reconsider y'=y as Point of T;
      y' in Cl_Seq(Cl_Seq(A)) by A7,A8,Def2;
    hence y in Cl_Seq(A) by A2;
  end;
  then Cl_Seq(A) is closed by A1,FRECHET:def 6;
  then x in Cl_Seq(A) by A4,A6,PRE_TOPC:45;
  then consider S being sequence of T such that
A9:  rng S c= A & x in Lim S by Def2;
  thus contradiction by A5,A9;
end;

theorem
  for T being non empty TopSpace st T is sequential holds
  T is Frechet iff for A,B being Subset of T holds
    Cl_Seq({}T) = {} &
    A c= Cl_Seq(A) &
    Cl_Seq(A \/ B) = Cl_Seq(A) \/ Cl_Seq(B) &
    Cl_Seq(Cl_Seq(A)) = Cl_Seq(A) by Th24,Th25;

begin ::The Limit

definition
let T be non empty TopSpace, S be sequence of T;
assume that
A1: ex x being Point of T st Lim S = {x};
func lim S -> Point of T means :Def3:
  S is_convergent_to it;
existence
proof
  consider x being Point of T such that
A2:  Lim S = {x} by A1;
  take x;
    x in {x} by TARSKI:def 1;
  hence S is_convergent_to x by A2,FRECHET:def 4;
end;
uniqueness
proof
  let x1,x2 be Point of T;
  assume that
A3: S is_convergent_to x1 and
A4: S is_convergent_to x2;
  consider x being Point of T such that
A5:  Lim S = {x} by A1;
    x1 in Lim S by A3,FRECHET:def 4;
  then A6:  x1=x by A5,TARSKI:def 1;
    x2 in {x} by A4,A5,FRECHET:def 4;
  hence x1 = x2 by A6,TARSKI:def 1;
end;
end;

theorem Th27:
for T being non empty TopSpace st T is_T2
for S being sequence of T st S is convergent holds
  ex x being Point of T st Lim S = {x}
proof
  let T be non empty TopSpace;
  assume
A1:  T is_T2;
  let S be sequence of T;
  assume S is convergent;
  then consider x being Point of T such that
A2:  S is_convergent_to x by FRECHET:def 3;
  take x;
A3:
  x in Lim S by A2,FRECHET:def 4;
  thus Lim S c= {x}
  proof
    let y be set;
    assume
A4:    y in Lim S;
    then reconsider y'=y as Point of T;
      y'=x by A1,A3,A4,Th9;
    hence y in {x} by TARSKI:def 1;
  end;
  let y be set;
  assume y in {x};
  hence y in Lim S by A3,TARSKI:def 1;
end;

theorem Th28:
for T being non empty TopSpace st T is_T2
for S being sequence of T,x being Point of T holds
  S is_convergent_to x iff S is convergent & x = lim S
proof
  let T be non empty TopSpace;
  assume
A1:  T is_T2;
  let S be sequence of T, x be Point of T;
  thus S is_convergent_to x implies (S is convergent & x = lim S)
  proof
    assume
A2:    S is_convergent_to x;
    hence S is convergent by FRECHET:def 3;
    then ex y being Point of T st Lim S = {y} by A1,Th27;
    hence x = lim S by A2,Def3;
  end;
  assume
A3:  S is convergent & x = lim S;
  then ex x being Point of T st Lim S = {x} by A1,Th27;
  hence S is_convergent_to x by A3,Def3;
end;

theorem
  for M being MetrStruct,S being sequence of M holds
  S is sequence of TopSpaceMetr(M)
proof
  let M be MetrStruct,S be sequence of M;
A1:S is Function of NAT,the carrier of M by NORMSP_1:def 3;
    the carrier of M = the carrier of TopSpaceMetr M by TOPMETR:16;
  hence S is sequence of TopSpaceMetr(M) by A1,NORMSP_1:def 3;
end;

theorem
  for M being non empty MetrStruct,S being sequence of TopSpaceMetr(M) holds
  S is sequence of M
proof
  let M be non empty MetrStruct,S be sequence of TopSpaceMetr(M);
    the carrier of M = the carrier of TopSpaceMetr M by TOPMETR:16;
  hence S is sequence of M by NORMSP_1:def 3;
end;

theorem Th31:
for M being non empty MetrSpace,S being sequence of M, x being Point of M,
  S' being sequence of TopSpaceMetr(M), x' being Point of TopSpaceMetr(M)
    st S = S' & x = x' holds
  S is_convergent_in_metrspace_to x iff S' is_convergent_to x'
proof
  let M be non empty MetrSpace,S be sequence of M, x be Point of M,
      S' be sequence of TopSpaceMetr(M), x' be Point of TopSpaceMetr(M);
  assume
A1:  S = S' & x=x';
  thus S is_convergent_in_metrspace_to x implies S' is_convergent_to x'
  proof
    assume
A2:   S is_convergent_in_metrspace_to x;
    let U1 be Subset of TopSpaceMetr(M);
    assume
     U1 is open & x' in U1;
    then consider r being real number such that
A3:   r>0 and
A4:   Ball(x,r) c= U1 by A1,TOPMETR:22;
    reconsider r as Real by XREAL_0:def 1;
      Ball(x,r) contains_almost_all_sequence S by A2,A3,METRIC_6:30;
    then consider n being Nat such that
A5:    for m being Nat st n <= m holds S.m in Ball(x,r) by METRIC_6:def 12;
    take n;
    let m be Nat;
    assume n <= m;
    then S.m in Ball(x,r) by A5;
    hence S'.m in U1 by A1,A4;
  end;
  assume
A6:  S' is_convergent_to x';
    for V being Subset of M
    st x in V & V in Family_open_set M holds
      V contains_almost_all_sequence S
  proof
    let V be Subset of M;
    assume that
A7:   x in V and
A8:   V in Family_open_set M;
    reconsider V'=V as Subset of TopSpaceMetr(M) by TOPMETR:16;
    reconsider V' as Subset of TopSpaceMetr(M);
      V' in the topology of TopSpaceMetr(M) by A8,TOPMETR:16;
    then V' is open by PRE_TOPC:def 5;
    then consider n being Nat such that
A9:    for m being Nat st n <= m holds S'.m in V' by A1,A6,A7,FRECHET:def 2;
    take n;
    let m be Nat;
    assume n <= m;
    hence S.m in V by A1,A9;
  end;
  hence S is_convergent_in_metrspace_to x by METRIC_6:32;
end;

theorem
  for M being non empty MetrSpace,Sm being sequence of M,
    St being sequence of TopSpaceMetr(M) st Sm=St holds
  Sm is convergent iff St is convergent
proof
  let M be non empty MetrSpace,Sm be sequence of M,
    St be sequence of TopSpaceMetr(M);
  assume
A1:  Sm=St;
  thus Sm is convergent implies St is convergent
  proof
    assume Sm is convergent;
    then consider x being Point of M such that
A2:    Sm is_convergent_in_metrspace_to x by METRIC_6:22;
    reconsider x'=x as Point of TopSpaceMetr(M) by TOPMETR:16;
      St is_convergent_to x' by A1,A2,Th31;
    hence St is convergent by FRECHET:def 3;
  end;
  assume St is convergent;
  then consider x' being Point of TopSpaceMetr(M) such that
A3:  St is_convergent_to x' by FRECHET:def 3;
  reconsider x=x' as Point of M by TOPMETR:16;
    Sm is_convergent_in_metrspace_to x by A1,A3,Th31;
  hence Sm is convergent by METRIC_6:21;
end;

theorem
  for M being non empty MetrSpace,Sm being sequence of M,
    St being sequence of TopSpaceMetr(M) st Sm=St & Sm is convergent holds
  lim Sm = lim St
proof
  let M be non empty MetrSpace,Sm be sequence of M,
      St be sequence of TopSpaceMetr(M);
  assume that
A1: Sm=St and
A2: Sm is convergent;
A3: TopSpaceMetr(M) is_T2 by PCOMPS_1:38;
  set x=lim Sm;
  reconsider x'=x as Point of TopSpaceMetr(M) by TOPMETR:16;
    Sm is_convergent_in_metrspace_to x by A2,METRIC_6:27;
  then St is_convergent_to x' by A1,Th31;
  hence lim Sm=lim St by A3,Th28;
end;

begin ::The Cluster Points

definition
let T be TopStruct, S be sequence of T, x be Point of T;
pred x is_a_cluster_point_of S means :Def4:
  for O being Subset of T, n being Nat st O is open & x in O
    ex m being Nat st n <= m & S.m in O;
end;

theorem Th34:
for T being non empty TopStruct, S being sequence of T, x being Point of T
st ex S1 being subsequence of S st S1 is_convergent_to x holds
      x is_a_cluster_point_of S
proof
  let T be non empty TopStruct, S be sequence of T, x be Point of T;
  given S1 being subsequence of S such that
A1:  S1 is_convergent_to x;
  let O be Subset of T, n be Nat;
  assume that
A2: O is open and
A3: x in O;
  consider n1 being Nat such that
A4:  for m being Nat st n1 <= m holds S1.m in O by A1,A2,A3,FRECHET:def 2;
  set n2=max(n1,n);
  consider NS being increasing Seq_of_Nat such that
A5:  S1 = S * NS by Def1;
  take NS.n2;
A6:
  n1 <= n2 by SQUARE_1:46;
A7:
  n <= n2 by SQUARE_1:46;
    n2 <= NS.n2 by SEQM_3:33;
  hence n <= NS.n2 by A7,AXIOMS:22;
A8:
  S1.n2 in O by A4,A6;
    n2 in NAT;
  then n2 in dom NS by SEQ_1:3;
  hence S.(NS.n2) in O by A5,A8,FUNCT_1:23;
end;

theorem
  for T being non empty TopStruct, S being sequence of T, x being Point of T
  st S is_convergent_to x
  holds x is_a_cluster_point_of S
proof
  let T be non empty TopStruct, S be sequence of T, x be Point of T;
  assume
A1:  S is_convergent_to x;
    ex S1 being subsequence of S st S1 is_convergent_to x
  proof
    reconsider S1=S as subsequence of S by Th3;
    take S1;
    thus S1 is_convergent_to x by A1;
  end;
  hence x is_a_cluster_point_of S by Th34;
end;

theorem Th36:
for T being non empty TopStruct, S being sequence of T, x being Point of T,
    Y being Subset of T st
      Y = {y where y is Point of T : x in Cl({y}) } &
      rng S c= Y
  holds S is_convergent_to x
proof
  let T be non empty TopStruct, S be sequence of T, x be Point of T,
      Y be Subset of T;
  assume that
A1: Y = {y where y is Point of T : x in Cl({y}) } and
A2: rng S c= Y;
  let U1 be Subset of T;
  assume that
A3: U1 is open and
A4: x in U1;
  take 0;
  let m be Nat;
  assume 0 <= m;
    m in NAT;
  then m in dom S by NORMSP_1:17;
  then S.m in rng S by FUNCT_1:def 5;
  then S.m in Y by A2;
  then consider y being Point of T such that
A5: y=S.m and
A6: x in Cl({y}) by A1;
    {y} meets U1 by A3,A4,A6,PRE_TOPC:def 13;
  hence S.m in U1 by A5,ZFMISC_1:56;
end;

theorem Th37:
for T being non empty TopStruct, S being sequence of T, x,y being Point of T
  st for n being Nat holds S.n = y & S is_convergent_to x holds
    x in Cl({y})
proof
  let T be non empty TopStruct, S be sequence of T, x,y be Point of T;
  assume
A1: for n being Nat holds S.n = y &
  S is_convergent_to x;
    for G being Subset of T st G is open holds
                        x in G implies {y} meets G
  proof
    let G be Subset of T;
    assume
A2:   G is open;
    assume x in G;
    then consider n being Nat such that
A3:    for m being Nat st n <= m holds S.m in G by A1,A2,FRECHET:def 2;
      S.n in G by A3;
then A4:    y in G by A1;
      y in {y} by TARSKI:def 1;
    then y in {y} /\ G by A4,XBOOLE_0:def 3;
    hence {y} meets G by XBOOLE_0:def 7;
  end;
  hence thesis by PRE_TOPC:def 13;
end;

theorem Th38:
for T being non empty TopStruct, x being Point of T,
    Y being Subset of T, S being sequence of T st
      Y = { y where y is Point of T : x in Cl({y}) } &
      rng S misses Y &
      S is_convergent_to x
  ex S1 being subsequence of S st S1 is one-to-one
proof
  let T be non empty TopStruct, x be Point of T,
      Y be Subset of T, S be sequence of T;
  assume that
A1: Y = { y where y is Point of T : x in Cl({y}) } and
A2: rng S /\ Y = {} and
A3: S is_convergent_to x;
A4:
  for z being set st z in rng S ex n0 being Nat st for m being Nat st n0 <= m
    holds z <> S.m
  proof
    let z be set;
    assume
A5:   z in rng S;
    assume
A6:   for n0 being Nat ex m being Nat st n0 <= m & z = S.m;
    reconsider z'=z as Point of T by A5;
    defpred P[set] means $1 = z;
A7: for n being Nat ex m being Nat,z' being Point of T st
      n <= m & z' = S.m & P[z']
    proof
      let n be Nat;
      consider m being Nat such that
A8:    n <= m and
A9:    z = S.m by A6;
      take m;
      take z';
      thus n <= m by A8;
      thus z' = S.m by A9;
      thus z'=z;
    end;
    consider S1 being subsequence of S such that
A10:   for n being Nat holds P[S1.n] from SubSeqChoice1(A7);
      S1 is_convergent_to x by A3,Th18;
    then x in Cl({z'}) by A10,Th37;
    then z' in Y by A1;
    hence contradiction by A2,A5,XBOOLE_0:def 3;
  end;
  defpred P[Nat,set,set] means
   $3 in NAT &
    for n1,n2,m being Nat st n1=$2 & n2=$3 & n2 <= m holds S.m <> S.n1;
A11:
  for n being Nat for z1 being set ex z2 being set st P[n,z1,z2]
  proof
    let n be Nat, z1 be set;
    per cases;
    suppose
A12:    not z1 in NAT;
    take 0;
    thus 0 in NAT;
    let n1,n2,m be Nat;
    assume that
A13:    n1=z1 and
        n2=0 & n2 <= m;
    thus S.m <> S.n1 by A12,A13;
    suppose z1 in NAT;
    then z1 in dom S by NORMSP_1:17;
    then S.z1 in rng S by FUNCT_1:def 5;
    then consider n0 being Nat such that
A14:    for m being Nat st n0 <= m holds S.z1 <> S.m by A4;
    take n0;
    thus n0 in NAT;
    let n1,n2,m be Nat;
    assume that
A15:   n1=z1 and
A16:   n2=n0 and
A17:   n2 <= m;
    thus S.m <> S.n1 by A14,A15,A16,A17;
  end;
  consider f being Function such that
A18: dom f = NAT and
A19: f.0 = 0 and
A20: for n being Element of NAT holds P[n,f.n,f.(n+1)]
        from RecChoice(A11);
A21:
  for n being Nat holds f.n is Nat
  proof
    let n be Nat;
    per cases;
    suppose n = 0;
    hence f.n is Nat by A19;
    suppose n <> 0;
    then 0 < n by NAT_1:19;
    then 0 + 1 < n + 1 by REAL_1:53;
    then 1 <= n by NAT_1:38;
    then reconsider n1=n-1 as Nat by INT_1:18;
      n1 + 1 = n + -1 + 1 by XCMPLX_0:def 8
          .= n + (-1 + 1) by XCMPLX_1:1
          .= n;
    hence f.n is Nat by A20;
  end;
  then for n be Nat holds f.n is real;
  then reconsider f as Real_Sequence by A18,SEQ_1:4;
    f is increasing
  proof
    let n be Nat;
    assume
A22:    f.n >= f.(n+1);
    reconsider n1=f.n as Nat by A21;
    reconsider n2=f.(n+1) as Nat by A21;
      n2 <= n1 by A22;
    then S.n1 <> S.n1 by A20;
    hence contradiction;
  end;
  then reconsider f as increasing Seq_of_Nat by A21,SEQM_3:29;
  take S1=S*f;
  let x1,x2 be set;
  assume that
A23: x1 in dom S1 and
A24: x2 in dom S1 and
A25: S1.x1 = S1.x2;
  assume
A26: x1 <> x2;
A27:
  for n1,n2 being Nat st n1 < n2 holds S1.n1 <> S1.n2
  proof
    let n1,n2 be Nat;
    assume
A28:   n1 < n2;
    reconsider n1'=f.n1 as Nat;
    reconsider n3'=f.(n1+1) as Nat;
      n3' <= f.n2
    proof
      A29:     n1 + 1 <= n2 by A28,NAT_1:38;
        f.(n1+1) <= f.n2
      proof
        per cases;
        suppose n1+1 = n2;
        hence f.(n1+1) <= f.n2;
        suppose n1 + 1 <> n2;
        then n1 + 1 < n2 by A29,REAL_1:def 5;
        hence f.(n1+1) <= f.n2 by SEQM_3:7;
      end;
      hence n3' <= f.n2;
    end;
    then A30:    S.(f.n2) <> S.n1' by A20;
      n2 in NAT;
    then n2 in dom S1 by NORMSP_1:17;
    then A31:   S.(f.n2) = S1.n2 by FUNCT_1:22;
      n1 in NAT;
    then n1 in dom S1 by NORMSP_1:17;
    hence S1.n1 <> S1.n2 by A30,A31,FUNCT_1:22;
  end;
  reconsider n1=x1 as Nat by A23,NORMSP_1:17;
  reconsider n2=x2 as Nat by A24,NORMSP_1:17;
  per cases by A26,REAL_1:def 5;
  suppose n1 < n2;
  hence contradiction by A25,A27;
  suppose n2 < n1;
  hence contradiction by A25,A27;
end;

Lm12:
for f being Function st dom f is infinite & f is one-to-one holds
  rng f is infinite
proof
  let f be Function;
  assume
A1:  dom f is infinite & f is one-to-one;
  then dom f,rng f are_equipotent by WELLORD2:def 4;
  hence rng f is infinite by A1,CARD_1:68;
end;

theorem Th39:
for T being non empty TopStruct, S1,S2 being sequence of T st
      rng S2 c= rng S1 &
      S2 is one-to-one
ex P being Permutation of NAT st S2*P is subsequence of S1
proof
  let T be non empty TopStruct, S1,S2 be sequence of T;
  assume that
A1: rng S2 c= rng S1 and
A2: S2 is one-to-one;
  defpred P[set,set] means S2.$1=S1.$2;
A3:
  for n being set st n in NAT ex u being set st u in NAT & P[n,u]
  proof
    let n be set;
    assume n in NAT;
    then n in dom S2 by NORMSP_1:17;
    then S2.n in rng S2 by FUNCT_1:def 5;
    then consider m being set such that
A4:   m in dom S1 and
A5:    S2.n = S1.m by A1,FUNCT_1:def 5;
    take m;
    thus m in NAT by A4,NORMSP_1:17;
    thus S2.n=S1.m by A5;
  end;
  consider f being Function such that
A6: dom f = NAT and
A7: rng f c= NAT and
A8: for n being set st n in NAT holds P[n,f.n] from NonUniqBoundFuncEx(A3);
  reconsider A=rng f as non empty Subset of NAT by A6,A7,RELAT_1:65;
A9:
  f is one-to-one
  proof
    let x1,x2 be set;
    assume that
A10:   x1 in dom f and
A11:   x2 in dom f and
A12:   f.x1 = f.x2;
        S2.x2 = S1.(f.x2) by A6,A8,A11;
    then A13:   S2.x1 = S2.x2 by A6,A8,A10,A12;
A14: x1 in dom S2 by A6,A10,NORMSP_1:17;
      x2 in dom S2 by A6,A11,NORMSP_1:17;
    hence x1 = x2 by A2,A13,A14,FUNCT_1:def 8;
  end;
A15:
  for m being Nat holds
    {k where k is Nat : k in rng f & k>m} <> {}
  proof
    let m be Nat;
    assume
A16:   {k where k is Nat : k in rng f & k>m} = {};
A17:
    m+1 is finite by CARD_1:69;
      rng f c= m + 1
    proof
      let x be set;
      assume
A18:      x in rng f;
      then reconsider x'=x as Nat by A7;
        x' < m + 1
      proof
        assume x'>= m + 1;
        then x' > m by NAT_1:38;
        then x' in {k where k is Nat : k in rng f & k>m} by A18;
        hence contradiction by A16;
      end;
      then x' in {x'' where x'' is Nat:x''< m+1};
      hence x in m+1 by AXIOMS:30;
    end;
    then rng f is finite by A17,FINSET_1:13;
    hence contradiction by A6,A9,Lm12;
  end;
A19:
  for m being Nat holds
    {k where k is Nat : k in rng f & k>m} c= NAT
  proof
    let m be Nat;
    let z be set;
    assume z in {k where k is Nat : k in rng f & k>m};
    then consider k being Nat such that
A20:   k = z and
        k in rng f & k>m;
    thus z in NAT by A20;
  end;
  defpred P[Nat,set,set] means
   for B being non empty Subset of NAT, m being Nat st
      m=$2 & B={k where k is Nat:k in rng f & k>m}
       holds $3=min B;
A21:
  for n being Nat for x being set ex y being set st P[n,x,y]
  proof
    let n be Nat, x be set;
    per cases;
    suppose x in NAT;
    then reconsider x'=x as Nat;
    set B={k where k is Nat:k in rng f & k>x'};
    reconsider B as Subset of NAT by A19;
    reconsider B as non empty Subset of NAT by A15;
    take min B;
    let B' be non empty Subset of NAT, m be Nat;
    assume that
A22:  m=x and
A23:  B'={k where k is Nat:k in rng f & k>m};
    thus min B=min B' by A22,A23;
    suppose
A24:  not x in NAT;
    take 0;
    let B be non empty Subset of NAT, m be Nat;
    assume that
A25:  m=x and
        B={k where k is Nat:k in rng f & k>m};
    thus 0=min B by A24,A25;
  end;
  consider g being Function such that
A26: dom g = NAT and
A27: g.0 = min A and
A28: for n being Element of NAT holds P[n,g.n,g.(n+1)]
     from RecChoice(A21);
  defpred P[Nat] means g.$1 in NAT;
A29: P[0] by A27;
A30: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat;
    assume g.k in NAT;
    then reconsider m=g.k as Nat;
    set B={l where l is Nat:l in rng f & l>m};
    reconsider B as Subset of NAT by A19;
    reconsider B as non empty Subset of NAT by A15;
      g.(k+1)= min B by A28;
    hence g.(k+1) in NAT;
  end;
A31:for k being Nat holds P[k] from Ind(A29,A30);
A32:rng g c= NAT
  proof
    let y be set;
    assume y in rng g;
    then consider x being set such that
A33:  x in dom g and
A34:  y = g.x by FUNCT_1:def 5;
    reconsider x as Nat by A26,A33;
      g.x in NAT by A31;
    hence y in NAT by A34;
  end;
    for n being Nat holds g.n is real
  proof
    let n be Nat;
      g.n in NAT by A31;
    then reconsider w = g.n as Element of REAL;
      w is real;
    hence g.n is real;
  end;
  then reconsider g1=g as Real_Sequence by A26,SEQ_1:4;
    g1 is increasing
  proof
    let n be Nat;
    reconsider m=g.n as Nat by A31;
    reconsider B={k where k is Nat : k in rng f & k>m}
     as non empty Subset of NAT by A15,A19;
      g1.(n+1)=min B by A28;
    then g1.(n+1) in B by CQC_SIM1:def 8;
    then consider k being Nat such that
A35: k = g1.(n+1) and
        k in rng f and
A36: k>m;
    thus g1.n<g1.(n+1) by A35,A36;
  end;
  then reconsider g1 as increasing Seq_of_Nat by A32,SEQM_3:def 8;
A37:
  g1 is one-to-one
  proof
    let x1,x2 be set;
    assume that
A38:  x1 in dom g1 and
A39:  x2 in dom g1 and
A40:  g1.x1 = g1.x2;
    reconsider n1=x1 as Nat by A26,A38;
    reconsider n2=x2 as Nat by A26,A39;
    assume A41: x1 <> x2;
    per cases by A41,REAL_1:def 5;
    suppose n1 < n2;
    hence contradiction by A40,SEQM_3:7;
    suppose n2 < n1;
    hence contradiction by A40,SEQM_3:7;
  end;
  then A42: g" is one-to-one by FUNCT_1:62;
A43:
  rng f = rng g
  proof
    thus for y being set holds y in rng f implies y in rng g
    proof
      let y be set;
      assume
A44:  y in rng f;
      then reconsider y'=y as Nat by A7;
      assume
A45:  not y in rng g;
      defpred P[Nat] means g1.$1 < y';
A46:  P[0]
      proof
        assume A47: not g1.0 < y';
        A48: min A <= y' by A44,CQC_SIM1:def 8;
          g.0 in rng g by A26,FUNCT_1:def 5;
        hence contradiction by A27,A45,A47,A48,AXIOMS:21;
      end;
A49:  for n being Nat st P[n] holds P[n+1]
      proof
        let n be Nat;
        assume
A50:     g1.n < y';
        assume A51: not g1.(n+1) < y';
        reconsider m = g.n as Nat by A31;
        reconsider B={k where k is Nat:k in rng f & k>m}
          as non empty Subset of NAT by A15,A19;
A52:    g.(n+1)=min B by A28;
          y' in {k where k is Nat:k in rng f & k>m} by A44,A50;
        then A53: min B <= y' by CQC_SIM1:def 8;
          g.(n+1) in rng g by A26,FUNCT_1:def 5;
        hence contradiction by A45,A51,A52,A53,AXIOMS:21;
      end;
A54:   y' is finite by CARD_1:69;
A55:   for n being Nat holds P[n] from Ind(A46,A49);
        rng g c= y'
      proof
        let y be set;
        assume y in rng g;
        then consider x being set such that
A56:      x in dom g and
A57:      y = g.x by FUNCT_1:def 5;
        reconsider x as Nat by A26,A56;
          g1.x < y' by A55;
        then g1.x in {i where i is Nat:i<y'};
        hence y in y' by A57,AXIOMS:30;
      end;
      then rng g is finite by A54,FINSET_1:13;
      hence contradiction by A26,A37,Lm12;
    end;
    let y be set;
    assume y in rng g;
    then consider x being set such that
A58:   x in dom g and
A59:   y = g.x by FUNCT_1:def 5;
    reconsider n=x as Nat by A26,A58;
    per cases;
    suppose n=0;
    hence y in rng f by A27,A59,CQC_SIM1:def 8;
    suppose n<>0;
    then n > 0 by NAT_1:19;
    then n + 1 > 0 + 1 by REAL_1:53;
    then 1 <= n by NAT_1:38;
    then reconsider m=n-1 as Nat by INT_1:18;
A60:m+1 = (n + -1) + 1 by XCMPLX_0:def 8
       .= n + (-1 + 1) by XCMPLX_1:1
       .= n;
    reconsider l = g.m as Nat by A31;
    reconsider B={k where k is Nat:k in rng f & k>l}
      as non empty Subset of NAT by A15,A19;
      g.n = min B by A28,A60;
    then y in B by A59,CQC_SIM1:def 8;
    then consider k being Nat such that
A61:  k = y and
A62:  k in rng f and
        k>l;
    thus y in rng f by A61,A62;
  end;
  then A63: rng f = dom(g") by A37,FUNCT_1:55;
  then A64: dom(g"*f) = dom f & rng(g"*f) = rng(g") by RELAT_1:46,47;
  A65: rng(g") = dom g by A37,FUNCT_1:55;
    rng(g") = NAT by A26,A37,FUNCT_1:55;
  then reconsider P=g"*f as Function of NAT,NAT by A6,A64,FUNCT_2:def 1,
RELSET_1:11;
    P is bijective
  proof
    thus P is one-to-one by A9,A42,FUNCT_1:46;
    thus rng P = NAT by A26,A63,A65,RELAT_1:47;
  end;
  then reconsider P as Permutation of NAT;
  take P";
    NAT = dom (S2*P") & NAT = dom (S1*g) &
    for x being set st x in NAT holds (S2*P").x = (S1*g).x
  proof
A66:  dom (P") = NAT & rng (P") c= NAT by FUNCT_2:def 1,RELSET_1:12;
    thus NAT = dom (S2*(P")) by FUNCT_2:def 1;
      rng g c= dom S1 by A32,NORMSP_1:17;
    hence NAT = dom (S1*g) by A26,RELAT_1:46;
    let x be set;
    assume
A67:    x in NAT;
    then A68: g. x in rng g by A26,FUNCT_1:def 5;
    then A69: f".(g.x) in dom f by A9,A43,FUNCT_1:54;
    thus (S2*(P")).x = S2.(((g"*f)").x) by A66,A67,FUNCT_1:23
                     .= S2.((f"*(g")").x) by A9,A42,FUNCT_1:66
                     .= S2.((f"*g).x) by A37,FUNCT_1:65
                     .= S2.(f".(g.x)) by A26,A67,FUNCT_1:23
                     .= S1.(f.(f".(g.x))) by A6,A8,A69
                     .= S1.(g.x) by A9,A43,A68,FUNCT_1:57
                     .= (S1*g).x by A26,A67,FUNCT_1:23;
  end;
  then S2*(P")=S1*g1 by FUNCT_1:9;
  hence S2*(P") is subsequence of S1;
end;

Lm13:
for X being non empty finite Subset of NAT, x being Nat holds
  x in X implies x <= max X by PRE_CIRC:def 1;

scheme PermSeq
  {T()->non empty 1-sorted,S()->sequence of T(),p()->Permutation of NAT,
   P[set]} :
  ex n being Nat st for m being Nat st n<=m holds P[(S()*p()).m]
provided A1:
  ex n being Nat st for m being Nat, x being Point of T()
    st n<=m & x=S().m holds P[x]
proof
  consider n being Nat such that
A2:  for m being Nat, x being Point of T() st n<=m & x=S().m holds P[x] by A1;
    n + 1 is finite by CARD_1:69;
  then A3: succ n is finite by CARD_1:52;
  n in succ n & dom (p()") = NAT by FUNCT_2:def 1,ORDINAL1:10;
  then (p()").n in (p()").:(succ n) by FUNCT_1:def 12;
  then reconsider X=(p()").:(succ n) as finite non empty Subset of NAT
      by A3,FINSET_1:17;
  max X in X by PRE_CIRC:def 1; then
A4:max X in NAT; then
  reconsider mm = max X as natural number by ORDINAL2:def 21;
  mm + 1 is natural; then
  reconsider mX = (max X) + 1 as Nat by ORDINAL2:def 21;
  take mX;
  let m be Nat;
  assume
A5: mX<=m;
    m in NAT;
then A6: m in dom p() by FUNCT_2:67;
    n<=p().m
  proof
    assume p().m<n;
    then p().m in {p1 where p1 is Nat : p1 < n};
    then p().m in n by AXIOMS:30;
    then p().m in succ n by ORDINAL1:13;
    then m in p()"(succ n) by A6,FUNCT_1:def 13;
    then m in (p()").:(succ n) by FUNCT_1:155;
    then A7: m <=max X by Lm13;
    max X is Nat by A4; then
    max X < mX by NAT_1:38; then
    m < mX by A7,AXIOMS:22;
    hence contradiction by A5;
  end;
  then A8:  P[S().(p().m)] by A2;
  m in NAT;
  then m in dom p() by FUNCT_2:def 1;
  hence P[(S()*p()).m] by A8,FUNCT_1:23;
end;

scheme PermSeq2
  {T()->non empty TopStruct,S()->sequence of T(),p()->Permutation of NAT,
   P[set]} :
  ex n being Nat st for m being Nat st n<=m holds P[(S()*p()).m]
provided A1:
  ex n being Nat st for m being Nat, x being Point of T()
    st n<=m & x=S().m holds P[x]
proof
  reconsider T1=T() as non empty 1-sorted;
  reconsider S1=S() as sequence of T1;
  defpred R[set] means P[$1];
A2:
  ex n being Nat st for m being Nat, x being Point of T1
    st n<=m & x=S1.m holds R[x] by A1;
    ex n being Nat st for m being Nat st n<=m holds R[(S1*p()).m]
      from PermSeq(A2);
  hence ex n being Nat st for m being Nat st n<=m holds P[(S()*p()).m];
end;

theorem Th40:
for T being non empty TopStruct, S being sequence of T,
    P being Permutation of NAT, x being Point of T st
      S is_convergent_to x
holds S*P is_convergent_to x
proof
  let T be non empty TopStruct, S be sequence of T, P be Permutation of NAT,
    x be Point of T;
  assume
A1:  S is_convergent_to x;
    for U1 being Subset of T st (U1 is open & x in U1)
    ex n being Nat st for m being Nat st n <= m holds (S*P).m in U1
  proof
    let U1 be Subset of T;
    assume that
A2:   U1 is open and
A3:   x in U1;
    defpred P[set] means $1 in U1;
A4: ex n being Nat st for m being Nat, x being Point of T
      st n<=m & x=S.m holds P[x]
    proof
      consider n being Nat such that
A5:      for m being Nat st n<=m holds S.m in U1 by A1,A2,A3,FRECHET:def 2;
      take n;
      let m be Nat, x be Point of T;
      assume that
A6:     n<=m and
A7:     x=S.m;
      thus x in U1 by A5,A6,A7;
    end;
    thus ex n being Nat st for m being Nat st n <= m holds P[(S*P).m]
      from PermSeq2(A4);
  end;
  hence S*P is_convergent_to x by FRECHET:def 2;
end;

theorem Th41:
for n0 being Nat ex NS being increasing Seq_of_Nat st
  for n being Nat holds NS.n=n+n0
proof
  let n0 be Nat;
  deffunc F(Nat) = $1 + n0;
  consider NS being Real_Sequence such that
A1: for n being Nat holds NS.n=F(n) from ExRealSeq;
A2:
  NS is increasing
  proof
    let n be Nat;
      n < n + 1 by NAT_1:38;
    then n + n0 < (n+1) + n0 by REAL_1:53;
    then NS.n < (n+1) + n0 by A1;
    hence NS.n < NS.(n+1) by A1;
  end;
    for n being Nat holds NS.n is Nat
  proof
    let n be Nat;
      n + n0 in NAT;
    hence NS.n is Nat by A1;
  end;
  then reconsider NS as increasing Seq_of_Nat by A2,SEQM_3:29;
  take NS;
  thus for n being Nat holds NS.n=n+n0 by A1;
end;

theorem Th42:
for T being non empty 1-sorted, S being sequence of T, n0 being Nat
ex S1 being subsequence of S st
  for n being Nat holds S1.n=S.(n+n0)
proof
  let T be non empty 1-sorted, S be sequence of T, n0 be Nat;
  consider NS being increasing Seq_of_Nat such that
A1:  for n being Nat holds NS.n=n+n0 by Th41;
  reconsider S1 = S*NS as subsequence of S;
  take S1;
  let n be Nat;
    n in NAT;
  then n in dom S1 by NORMSP_1:17;
  hence S1.n = S.(NS.n) by FUNCT_1:22
            .=S.(n+n0) by A1;
end;

theorem Th43:
for T being non empty TopStruct, S being sequence of T, x being Point of T,
    S1 being subsequence of S st
      x is_a_cluster_point_of S &
      ex n0 being Nat st for n being Nat holds S1.n=S.(n+n0)
holds x is_a_cluster_point_of S1
proof
  let T be non empty TopStruct, S be sequence of T, x be Point of T,
      S1 be subsequence of S;
  assume that
A1: x is_a_cluster_point_of S and
A2: ex n0 being Nat st for n being Nat holds S1.n=S.(n+n0);
  consider n0 being Nat such that
A3:  for n being Nat holds S1.n=S.(n+n0) by A2;
  let O be Subset of T, n be Nat;
  assume that
A4: O is open and
A5: x in O;
  consider m0 being Nat such that
A6: n + n0 <= m0 and
A7: S.m0 in O by A1,A4,A5,Def4;
    n0 <= n + n0 by NAT_1:29;
  then n0 <= m0 by A6,AXIOMS:22;
  then reconsider m=m0-n0 as Nat by INT_1:18;
  take m;
  thus n <= m by A6,REAL_1:84;
    S1.m = S.(m0-n0+n0) by A3
      .= S.(m0-(n0-n0)) by XCMPLX_1:37
      .= S.(m0-0) by XCMPLX_1:14
      .= S.m0;
  hence S1.m in O by A7;
end;

theorem Th44:
for T being non empty TopStruct, S being sequence of T, x being Point of T
    st x is_a_cluster_point_of S
holds x in Cl(rng S)
proof
  let T be non empty TopStruct, S be sequence of T, x be Point of T;
  assume
A1:  x is_a_cluster_point_of S;
    for G being Subset of T st G is open holds
                        x in G implies rng S meets G
  proof
    let G be Subset of T;
    assume
A2:    G is open;
    assume
      x in G;
    then consider m being Nat such that
        0 <= m and
A3:    S.m in G by A1,A2,Def4;
      m in NAT;
    then m in dom S by NORMSP_1:17;
    then S.m in rng S by FUNCT_1:def 5;
    then S.m in rng S /\ G by A3,XBOOLE_0:def 3;
    hence rng S meets G by XBOOLE_0:def 7;
  end;
  hence x in Cl(rng S) by PRE_TOPC:def 13;
end;

theorem
  for T being non empty TopStruct st T is Frechet
for S being sequence of T, x being Point of T
st x is_a_cluster_point_of S holds
  ex S1 being subsequence of S st S1 is_convergent_to x
proof
  let T be non empty TopStruct;
  assume
A1:  T is Frechet;
  let S be sequence of T, x be Point of T;
  assume
A2:  x is_a_cluster_point_of S;
  defpred P[Point of T] means x in Cl{$1};
  reconsider Y={y where y is Point of T : P[y]}
   as Subset of T from SubsetD;
  per cases;
  suppose
A3:  for n being Nat ex m being Nat st m >= n & S.m in Y;
  defpred P[set] means $1 in Y;
A4:
  for n being Nat ex m being Nat,y being Point of T st
    n <= m & y = S.m & P[y]
  proof
    let n be Nat;
    consider m being Nat such that
A5:   m >= n and
A6:   S.m in Y by A3;
    take m;
    reconsider y=S.m as Point of T;
    take y;
    thus n <= m & y = S.m & y in Y by A5,A6;
  end;
  consider S1 being subsequence of S such that
A7:  for n being Nat holds P[S1.n] from SubSeqChoice1(A4);
A8:
  rng S1 c= Y
  proof
    let y be set;
    assume y in rng S1;
    then consider n being set such that
A9:   n in dom S1 and
A10:   y = S1.n by FUNCT_1:def 5;
    reconsider n as Nat by A9,NORMSP_1:17;
      S1.n in Y by A7;
    hence y in Y by A10;
  end;
  take S1;
  thus S1 is_convergent_to x by A8,Th36;
  suppose ex n being Nat st for m being Nat st m >= n holds not S.m in Y;
  then consider n0 being Nat such that
A11:  for m being Nat st m >= n0 holds not S.m in Y;
  consider S' being subsequence of S such that
A12:  for n being Nat holds S'.n=S.(n+n0) by Th42;
A13:
  for n being Nat holds not S'.n in Y
  proof
    let n be Nat;
      n+n0 >= n0 by NAT_1:29;
    then not S.(n+n0) in Y by A11;
    hence not S'.n in Y by A12;
  end;
    rng S' /\ Y = {}
  proof
    assume
A14:   rng S' /\ Y <> {};
    consider y being Element of rng S' /\ Y;
        y in rng S' & y in Y by A14,XBOOLE_0:def 3;
    then consider n being set such that
A15:   n in dom S' and
A16:   y = S'.n by FUNCT_1:def 5;
    reconsider n as Nat by A15,NORMSP_1:17;
      not S'.n in Y by A13;
    hence contradiction by A14,A16,XBOOLE_0:def 3;
  end;
then A17: rng S' misses Y by XBOOLE_0:def 7;
    x is_a_cluster_point_of S' by A2,A12,Th43;
  then x in Cl(rng S') by Th44;
  then consider S2 being sequence of T such that
A18: rng S2 c= rng S' and
A19: x in Lim S2 by A1,FRECHET:def 5;
A20: S2 is_convergent_to x by A19,FRECHET:def 4;
::  rng S2 /\ Y = {} by A14,A19,BOOLE:55;then
    rng S2 misses Y by A17,A18,XBOOLE_1:63;
  then consider S2' being subsequence of S2 such that
A21:  S2' is one-to-one by A20,Th38;
    rng S2' c= rng S2 by Th4;
  then rng S2' c= rng S' by A18,XBOOLE_1:1;
  then consider P being Permutation of NAT such that
A22:  S2'*P is subsequence of S' by A21,Th39;
  reconsider S1=S2'*P as subsequence of S' by A22;
  reconsider S1 as subsequence of S by Th5;
  take S1;
    S2' is_convergent_to x by A20,Th18;
  hence S1 is_convergent_to x by Th40;
end;

begin :: Auxiliary theorems

theorem
  for T being non empty TopSpace st T is first-countable holds
  for x being Point of T holds
    ex B being Basis of x st
      ex S being Function st
        dom S = NAT &
        rng S = B &
        for n,m being Nat st m >= n holds S.m c= S.n by Lm11;

theorem
  for T being non empty TopSpace holds
  T is_T1 iff for p being Point of T holds Cl({p}) = {p} by Lm1;

theorem
  for T being non empty TopSpace holds
  T is_T2 implies T is_T1 by Lm4;

theorem
  for T being non empty TopSpace st not T is_T1 holds
  ex x1,x2 being Point of T, S being sequence of T st
     S = (NAT --> x1) & x1 <> x2 & S is_convergent_to x2 by Lm3;

theorem
  for f being Function st dom f is infinite & f is one-to-one holds
  rng f is infinite by Lm12;

theorem
  for X being non empty finite Subset of NAT, x being Nat holds
  x in X implies x <= max X by Lm13;

Back to top