 reserve X for RealUnitarySpace;
 reserve x, y, y1, y2 for Point of X;

theorem Th19:
for X being RealHilbertSpace,
    M be Subspace of X,
    x be Point of X
st
the carrier of M is closed Subset of
TopSpaceNorm RUSp2RNSp X
holds
ex m0 be Point of X st m0 in M
&
 for m be Point of X
       st m in M holds ||.x-m0.|| <= ||.x-m.||
proof
let X be RealHilbertSpace,
    M be Subspace of X,
    x be Point of X;
assume A1:
the carrier of M is closed Subset of TopSpaceNorm RUSp2RNSp X;
per cases;
  suppose A3: x in M;
  take m0=x;
  thus m0 in M by A3;
    let m be Point of X;
    assume m in M;
    x-m0 = 0.X by RLVECT_1:15; then
    ||.x-m0.|| = 0 by BHSP_1:26;
    hence ||.x-m0.|| <= ||.x-m.|| by BHSP_1:28;
   end;
  suppose not x in M;
  set B = {||.x-m.|| where m is Point of X : m in M};
  0.X in M by RUSUB_1:11;
  then A4:
  ||.x-0.X.|| in B;
  B c= REAL
  proof let r be object;
     assume r in B; then
     ex m be Point of X st r= ||.x-m.|| & m in M;
     hence r in REAL by XREAL_0:def 1;
  end; then
  reconsider B as real-membered set;
 reconsider r0 = 0 as Real;
A5: now let r be ExtReal;
    assume r in B; then
 ex m be Point of X st r= ||.x-m.|| & m in M;
    hence r0 <= r by BHSP_1:28;
end;
A6: B is bounded_below
   proof
   reconsider r0 = 0 as Real;
   take r0;
   let r be ExtReal;
    assume r in B;
    then ex m be Point of X st r= ||.x-m.|| & m in M;
    hence r0 <= r by BHSP_1:28;
  end;
  set delta = lower_bound B;
reconsider
B as non empty bounded_below real-membered set by A6,A4;
A7:lower_bound B = inf B;
r0 is LowerBound of B by A5,XXREAL_2:def 2;
then
A8: r0 <= delta by A7,XXREAL_2:def 4;
defpred P1[Nat,Real] means
   $2 in B & |.$2 - delta.| < 1/($1+1);
A9: for n being Element of NAT ex y being Element of REAL
    st P1[n,y]
proof
let n be Element of NAT;
consider r being Real such that
A10:  r in B & r < delta + 1/ ( n+1 ) by SEQ_4:def 2;
delta <= r by A10,SEQ_4:def 2; then
delta-1/ ( n+1 ) < r - 0 by XREAL_1:15;
then
r in { r where r is Real :
  delta-1/ ( n+1 ) < r & r < delta+1/ ( n+1 ) } by A10;
then A11:
 r in ]. delta-1/ ( n+1 ),delta+1/ ( n+1 ) .[ by RCOMP_1:def 2;
reconsider r as Element of REAL by XREAL_0:def 1;
take r;
thus r in B & |.r - delta.| < 1/(n+1) by A10,A11,RCOMP_1:1;
end;
consider seq be Function of NAT,REAL such that
 A12:for n being Element of NAT holds P1[n,seq . n]
    from FUNCT_2:sch 3(A9);
reconsider seq as Real_Sequence;
A13: for p being Real st 0 < p holds
       ex n being Nat st
     for m being Nat st n <= m holds
      |.seq . m - delta .| < p
proof
  let p be Real;
  assume A14: 0 < p;
  consider n be Nat such that
    A15: p" < n by SEQ_4:3;
  p" + 0 < n +1 by XREAL_1:8,A15; then
A16: (n+1)" < (p")" by XREAL_1:88,A14;
take n;
 let m be Nat;
    assume n <= m; then
    n+1 <= m+1 by XREAL_1:7; then
    A17: 1/(m+1) <= 1/(n+1) by XREAL_1:118;
    m is Element of NAT by ORDINAL1:def 12; then
    |.seq . m -delta .| < 1/(n+1) by XXREAL_0:2,A17,A12;
    hence thesis by A16,XXREAL_0:2;
end; then
A18:seq is convergent;
then
lim seq = delta by SEQ_2:def 7,A13;
then
A20: seq(#)seq is convergent &
     lim (seq(#)seq)= delta*delta by SEQ_2:15,A18;
defpred P2[Nat,Point of X] means
   $2 in M & seq.$1 = ||.$2-x.||;
A21: for n being Element of NAT ex y being Element of the carrier of X
    st P2[n,y]
proof
let n be Element of NAT;
seq.n in B by A12;
then
consider y be Point of X such that
 A22:  seq.n = ||.x-y.|| & y in M;
 take y;
 thus y in M by A22;
 thus seq.n = ||.-(y-x).|| by A22,RLVECT_1:33
             .= ||.y -x.|| by BHSP_1:31;
end;
consider xseq be Function of NAT,the carrier of X
such that
 A23: for n be Element of NAT holds P2[n,xseq.n]
       from FUNCT_2:sch 3(A21);
reconsider xseq as sequence of X;
for n be Element of NAT holds seq.n = ||.xseq-x.||.n
proof
 let n be Element of NAT;
  thus seq.n = ||.xseq.n-x.|| by A23
             .=||.(xseq-x).n.|| by NORMSP_1:def 4
             .= ||.xseq-x.||.n by BHSP_2:def 3;
end; then
A24:seq = ||.xseq-x.|| by FUNCT_2:63;
A26: rng xseq c= the carrier of M
proof let z be object;
  assume z in rng xseq; then
  consider i be Element of NAT such that
     A25: z= xseq.i by FUNCT_2:113;
  thus z in the carrier of M by A25,STRUCT_0:def 5,A23;
end;
A27:
now let i,j be Nat;
set u = xseq.i-x;
set v = xseq.j-x;
A28:u - v = xseq.i - x -xseq.j + x by RLVECT_1:29
        .= xseq.i -( x + xseq.j) + x by RLVECT_1:27
        .= xseq.i -xseq.j - x + x by RLVECT_1:27
        .= xseq.i -xseq.j by RLVECT_4:1;
u + v = xseq.i +( -x + xseq.j) - x by RLVECT_1:def 3
        .= xseq.i + xseq.j - x - x by RLVECT_1:def 3
      .= xseq.i +xseq.j -1*x -x by RLVECT_1:def 8
      .= xseq.i +xseq.j -1*x -1*x by RLVECT_1:def 8
        .= xseq.i +xseq.j -(1*x+1*x) by RLVECT_1:27
        .= xseq.i +xseq.j -(1+1)*x by RLVECT_1:def 6
        .=1*xseq.i+xseq.j -2*x by RLVECT_1:def 8
        .=1*xseq.i+1*xseq.j -2*x by RLVECT_1:def 8
        .=2*(1/2)*(xseq.i +xseq.j)-2*x by RLVECT_1:def 5
     .=2*((1/2)*(xseq.i +xseq.j))-2*x by RLVECT_1:def 7
   .=2* ((1/2)*(xseq.i +xseq.j)-x) by RLVECT_1:34; then
A29: ||.u + v.|| ^2
  =(  |.2.|* ||.(1/2)*(xseq.i +xseq.j)-x.|| ) ^2 by BHSP_1:27
  .= |.2.| ^2 * ||.(1/2)*(xseq.i +xseq.j)-x.||^2
  .= 2 ^2 *||.(1/2)*(xseq.i +xseq.j)-x.||^2
              by ABSVALUE:def 1
  .= 2*2 *||.(1/2)*(xseq.i +xseq.j)-x.||^2;
A30: i is Element of NAT & j is Element of NAT
 by ORDINAL1:def 12; then
xseq.i in M & xseq.j in M by A23; then
xseq.i +xseq.j in M by RUSUB_1:14; then
(1/2)*(xseq.i +xseq.j) in M by RUSUB_1:15; then
 ||.x-(1/2)*(xseq.i +xseq.j).|| in B; then
 ||.-(x-(1/2)*(xseq.i +xseq.j)).|| in B by BHSP_1:31;
then
 ||.(1/2)*(xseq.i +xseq.j)-x.|| in B by RLVECT_1:33;
then
 delta <= ||.(1/2)*(xseq.i +xseq.j)-x.|| by SEQ_4:def 2;
then
delta ^2 <= ||.(1/2)*(xseq.i +xseq.j)-x.||^2
   by A8,SQUARE_1:15; then
A31: 4*delta ^2 <= ||.u + v.|| ^2 by A29,XREAL_1:64;
 ||.u + v.|| ^2 + ||.u - v.|| ^2
    = 2 * (||.u.|| ^2) + 2 * (||.v.|| ^2) by BHSP_5:5;
then
A32: ||.u + v.|| ^2 + ||.u - v.|| ^2- ||.u + v.|| ^2
    <= 2 * (||.u.|| ^2) + 2 * (||.v.|| ^2)
    - 4*delta ^2 by XREAL_1:13,A31;
A33: ||.u.|| = seq.i & ||.v.|| = seq.j by A23,A30;
then
 ||.u.||^2 = (seq(#)seq).i by SEQ_1:8;
hence ||.xseq.i -xseq.j.||^2 <=
 2 * (seq(#)seq).i + 2 * (seq(#)seq).j - 4*delta ^2
by A28,A32,SEQ_1:8,A33;
end;
 for r being Real st r > 0 holds
ex k being Nat st
for n, m being Nat st n >= k & m >= k holds
 ||.((xseq . n) - (xseq . m)).|| < r
proof
  let r be Real;
  assume A35: r > 0;
   set r1= r/2;
A36: 0 < r1 & r1 < r by A35,XREAL_1:216;
set r2= r1/2;
consider k be Nat such that
A38: for i be Nat
      st k <=i holds |.(seq(#)seq).i -delta^2 .|
       < r2^2 by SEQ_2:def 7,A20,A35;
take k;
  let i,j be Nat;
  assume A39: i >= k & j >= k;
  A40: ||.xseq.i -xseq.j.||^2 <=
    2 * (seq(#)seq).i + 2 * (seq(#)seq).j - 4*delta ^2
   by A27;
   |.(seq(#)seq).i -delta^2 .| < r2^2 by A38,A39; then
   (seq(#)seq).i in ]. delta^2-r2^2,
                        delta^2+r2^2 .[ by RCOMP_1:1; then
   (seq(#)seq).i in
     {r where r is Real: delta^2-r2^2 < r & r < delta^2+r2^2}
    by RCOMP_1:def 2; then
   ex r be Real st r =(seq(#)seq).i
        & delta^2-r2^2 < r & r < delta^2+r2^2;
  then
  A41: 2*(seq(#)seq).i < 2*( delta^2+r2^2 ) by XREAL_1:68;
   |.(seq(#)seq).j -delta^2 .| < r2^2 by A38,A39;
   then
   (seq(#)seq).j in ]. delta^2-r2^2,
                        delta^2+r2^2 .[ by RCOMP_1:1;
   then
   (seq(#)seq).j in
     {r where r is Real: delta^2-r2^2 < r & r < delta^2+r2^2}
    by RCOMP_1:def 2; then
   ex r be Real st r = (seq(#)seq).j
        & delta^2-r2^2 < r & r < delta^2+r2^2; then
 2*(seq(#)seq).j < 2*( delta^2+r2^2 ) by XREAL_1:68; then
 2*(seq(#)seq).i + 2*(seq(#)seq).j < 2*delta^2+2*r2^2
                  + ( 2*delta^2+2*r2^2 ) by A41,XREAL_1:8;
then
 2*(seq(#)seq).i + 2*(seq(#)seq).j - 4*delta ^2
   < 2*delta^2+2*r2^2
     + 2*delta^2+2*r2^2 - 4*delta ^2 by XREAL_1:14; then
 A42: ||.xseq.i -xseq.j.||^2 < (2*r2) ^2 by A40,XXREAL_0:2;
 ||.xseq.i -xseq.j.|| <= 2*r2 by A42,SQUARE_1:16,A35;
hence ||.xseq.i -xseq.j.|| < r by A36,XXREAL_0:2;
end; then
A43: xseq is convergent by BHSP_3:def 4,BHSP_3:2;
A46: ||.x-lim xseq .||
     = ||.-((lim xseq) -x) .|| by RLVECT_1:33
      .= ||.(lim xseq) -x.|| by BHSP_1:31
      .= lim seq by A24,A43,BHSP_2:34
      .= delta by A18,SEQ_2:def 7,A13;
take lim xseq;
thus lim xseq in M by A43,A26,STRUCT_0:def 5,A1,Th12;
  let m be Point of X;
  assume m in M; then
  ||.x-m.|| in B;
  hence ||.x-lim xseq .|| <= ||.x-m.|| by A46,SEQ_4:def 2;
end;
end;
