reserve X for ComplexUnitarySpace;
reserve x, y, w, g, g1, g2 for Point of X;
reserve z for Complex;
reserve p, q, r, M, M1, M2 for Real;
reserve seq, seq1, seq2, seq3 for sequence of X;
reserve k,n,m for Nat;
reserve Nseq for increasing sequence of NAT;

theorem Th79:
  for m ex M st ( M > 0 & for n st n <= m holds ||.seq.n.|| < M )
proof
  defpred P[Nat] means
   ex M st ( M > 0 & for n st n <= $1 holds ||.seq.n.|| < M );
A1: for m st P[m] holds P[m+1]
  proof
    let m;
    given M1 such that
A2: M1 > 0 and
A3: for n st n <= m holds ||.seq.n.|| < M1;
A4: now
      assume
A5:   ||.seq.(m+1).|| >= M1;
      take M = ||.seq.(m+1).|| + 1;
      M > 0 + 0 by CSSPACE:44,XREAL_1:8;
      hence M > 0;
      let n such that
A6:   n <= m + 1;
A7:   now
        assume m >= n;
        then ||.seq.n.|| < M1 by A3;
        then ||.seq.n.|| < ||.seq.(m+1).|| by A5,XXREAL_0:2;
        then ||.seq.n.|| + 0 < M by XREAL_1:8;
        hence ||.seq.n.|| < M;
      end;
      now
        assume n = m + 1;
        then ||.seq.n.|| + 0 < M by XREAL_1:8;
        hence ||.seq.n.|| < M;
      end;
      hence ||.seq.n.|| < M by A6,A7,NAT_1:8;
    end;
    now
      assume
A8:   ||.seq.(m+1).|| <= M1;
      take M = M1 + 1;
      thus M > 0 by A2;
      let n such that
A9:   n <= m + 1;
A10:  now
        assume m >= n;
        then
A11:    ||.seq.n.|| < M1 by A3;
        M > M1 + 0 by XREAL_1:8;
        hence ||.seq.n.|| < M by A11,XXREAL_0:2;
      end;
      now
A12:    M > M1 + 0 by XREAL_1:8;
        assume n = m + 1;
        hence ||.seq.n.|| < M by A8,A12,XXREAL_0:2;
      end;
      hence ||.seq.n.|| < M by A9,A10,NAT_1:8;
    end;
    hence thesis by A4;
  end;
A13: P[0]
  proof
    take M = ||.(seq.0).|| + 1;
    ||.(seq.0).|| + 1 > 0 + 0 by CSSPACE:44,XREAL_1:8;
    hence M > 0;
    let n;
    assume n <= 0;
    then n = 0;
    then ||.seq.n.|| + 0 < M by XREAL_1:8;
    hence thesis;
  end;
  thus for m holds P[m] from NAT_1:sch 2(A13,A1);
end;
