reserve X for RealUnitarySpace,
  x, g, g1, h for Point of X,
  a, p, r, M, M1, M2 for Real,
  seq, seq1, seq2, seq3 for sequence of X,
  Nseq for increasing sequence of NAT,

  k, l, l1, l2, l3, n, m, m1, m2 for Nat;

theorem Th8:
  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 BHSP_1:28,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 BHSP_1:28,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;
