reserve X for MetrSpace,
  x,y,z for Element of X,
  A for non empty set,
  G for Function of [:A,A:],REAL,
  f for Function,
  k,n,m,m1,m2 for Nat,
  q,r for Real;
reserve X for non empty MetrSpace,
  x,y for Element of X,
  V for Subset of X,
  S,S1,T for sequence of X,
  Nseq for increasing sequence of NAT;

theorem
  S is Cauchy & S1 is subsequence of S implies S1 is Cauchy
proof
  assume that
A1: S is Cauchy and
A2: S1 is subsequence of S;
  consider Nseq such that
A3: S1 = S*Nseq by A2,VALUED_0:def 17;
  for r st 0 < r ex m st for n,k st m <= n & m <= k holds dist(S1.n,S1.k) < r
  proof
    let r;
    assume 0 < r;
    then consider m1 such that
A4: for n,k st m1 <= n & m1 <= k holds dist(S.n,S.k) < r by A1;
    take m = m1;
    for n,k st m <= n & m <= k holds dist(S1.n,S1.k) < r
    proof
      let n,k such that
A5:   m <= n and
A6:   m <= k;
      k <= Nseq.k by SEQM_3:14;
      then
A7:   m1 <= Nseq.k by A6,XXREAL_0:2;
A8:   k in NAT by ORDINAL1:def 12;
A9:   n in NAT by ORDINAL1:def 12;
      dom S = NAT by FUNCT_2:def 1;
      then dom Nseq = NAT & Nseq.k in dom S by FUNCT_2:def 1;
      then k in dom(S*Nseq) by FUNCT_1:11,A8;
      then
A10:   S1.k = S.(Nseq.k) by A3,FUNCT_1:12;
      dom S = NAT by FUNCT_2:def 1;
      then dom Nseq = NAT & Nseq.n in dom S by FUNCT_2:def 1;
      then n in dom(S*Nseq) by FUNCT_1:11,A9;
      then
A11:   S1.n = S.(Nseq.n) by A3,FUNCT_1:12;
      n <= Nseq.n by SEQM_3:14;
      then m1 <= Nseq.n by A5,XXREAL_0:2;
      hence thesis by A4,A11,A7,A10;
    end;
    hence thesis;
  end;
  hence thesis;
end;
