The Mizar article:

The Hahn Banach Theorem in the Vector Space over the Field of Complex Numbers

by
Anna Justyna Milewska

Received May 23, 2000

Copyright (c) 2000 Association of Mizar Users

MML identifier: HAHNBAN1
[ MML identifier index ]


environ

 vocabulary RLVECT_1, VECTSP_1, ARYTM_1, COMPLEX1, ABSVALUE, ARYTM_3, SQUARE_1,
      COMPLFLD, HAHNBAN, FUNCT_1, SUBSET_1, FUNCOP_1, GRCAT_1, UNIALG_1,
      BINOP_1, LATTICES, ALGSTR_2, RLSUB_1, RELAT_1, BOOLE, HAHNBAN1, XCMPLX_0;
 notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NUMBERS, ARYTM_0, XREAL_0,
      STRUCT_0, REAL_1, ABSVALUE, SQUARE_1, PRE_TOPC, RLVECT_1, VECTSP_1,
      RLSUB_1, VECTSP_4, FUNCT_1, FUNCT_2, BINOP_1, RELSET_1, NATTRA_1,
      BORSUK_1, COMPLEX1, HAHNBAN, COMPLFLD;
 constructors REAL_1, SQUARE_1, RLSUB_1, VECTSP_4, NATTRA_1, BORSUK_1, HAHNBAN,
      COMPLFLD, DOMAIN_1, COMPLSP1, MONOID_0, COMPLEX1, MEMBERED, ARYTM_0,
      ARYTM_3, FUNCT_4;
 clusters STRUCT_0, VECTSP_1, RELSET_1, FUNCT_1, SUBSET_1, COMPLFLD, RLVECT_1,
      HAHNBAN, MEMBERED;
 requirements NUMERALS, SUBSET, BOOLE, ARITHM;
 definitions TARSKI, RLVECT_1, VECTSP_1, RLSUB_1, HAHNBAN;
 theorems TARSKI, AXIOMS, ZFMISC_1, SQUARE_1, ABSVALUE, FUNCT_1, FUNCT_2,
      COMPLEX1, COMPLFLD, STRUCT_0, PRE_TOPC, VECTSP_1, FUNCOP_1, RLVECT_1,
      BINOP_1, HAHNBAN, VECTSP_4, XBOOLE_0, RELAT_1, XCMPLX_0, XCMPLX_1,
      ARYTM_0;
 schemes FUNCT_2;

begin :: Preliminaries

  Lm1:
   for F be add-associative right_zeroed right_complementable Abelian
            right-distributive (non empty doubleLoopStr)
   for x,y be Element of F holds x*(-y) = -x*y
   proof
    let F be add-associative right_zeroed right_complementable Abelian
             right-distributive (non empty doubleLoopStr);
    let x,y be Element of F;
      x*y +x*(-y) = x*(y+(-y)) by VECTSP_1:def 11
               .= x*(0.F) by RLVECT_1:def 10
               .= 0.F by VECTSP_1:36;
    hence x*(-y) = -x*y by RLVECT_1:def 10;
   end;

  theorem Th1:
   for z be Element of COMPLEX holds
    abs |.z.| = |.z.|
   proof
    let z be Element of COMPLEX;
      |.z.| >= 0 by COMPLEX1:132;
    hence thesis by ABSVALUE:def 1;
   end;

  theorem Th2:
   for x1,y1,x2,y2 be Real holds
    [*x1,y1*] * [*x2,y2*] = [*x1*x2 - y1*y2,x1*y2+x2*y1*]
   proof
    let x1,y1,x2,y2 be Real;
    set z1 = [*x1,y1*];
    set z2 = [*x2,y2*];
      Re z1 = x1 & Re z2 = x2 & Im z1 = y1 & Im z2 = y2 by COMPLEX1:7;
    hence thesis by COMPLEX1:def 10;
   end;

  theorem Th3:
   for r be Real holds [*r,0*]*<i> = [*0,r*]
   proof
    let r be Real;
    A1: Re [*0,1*] = 0 & Im [*0,1*] = 1 by COMPLEX1:7;
      [*0,r*] = [*0,r*]*--1r by COMPLEX1:29
       .= [*0,r*]*((-<i>)*<i>) by COMPLEX1:37,XCMPLX_1:175
       .= [*0,r*]*(-[*0,1*])*<i> by COMPLEX1:def 8,XCMPLX_1:4
       .= [*0,r*]*[*-0,-1*]*<i> by A1,COMPLEX1:def 11
       .= [*0*0-r*-1,0*(-1)+r*0*]*<i> by Th2
       .= [*0+(-r*-1),0*]*<i> by XCMPLX_0:def 8
       .= [*r*1,0*]*<i> by XCMPLX_1:179;
    hence thesis;
   end;

  theorem Th4:
   for r be Real holds |.[*r,0*].| = abs r
   proof
    let r be Real;
      Re [*r,0*] = r & Im [*r,0*] = 0 by COMPLEX1:7;
    hence thesis by COMPLEX1:136;
   end;

  theorem Th5:
   for z be Element of COMPLEX st |.z.| <> 0 holds
    [*|.z.|,0*] = (z*'/[*|.z.|,0*])*z
   proof
    let z be Element of COMPLEX;
    assume A1: |.z.| <> 0;
    A2: (z*'/[*|.z.|,0*])*z = z*z*'/[*|.z.|,0*] by XCMPLX_1:75;
    A3: Re(z*z*') = (Re z)^2 + (Im z)^2 & Im(z*z*') = 0 by COMPLEX1:126;
    A4: Re [*|.z.|,0*] = |.z.| & Im [*|.z.|,0*] = 0 by COMPLEX1:7;
    then A5: Re((z*'/[*|.z.|,0*])*z) = (((Re z)^2+(Im z)^2)*|.z.| + 0*0) / (|.z
.|^2 +0)
                                          by A2,A3,COMPLEX1:82,SQUARE_1:60
       .= |.z*z.|*|.z.| / |.z.|^2 by COMPLEX1:154
       .= |.z*z.|*|.z.| / (|.z.|*|.z.|) by SQUARE_1:def 3
       .= |.z*z.| / |.z.| by A1,XCMPLX_1:92
       .= |.z.|*|.z.| / |.z.| by COMPLEX1:151
       .= |.z.| by A1,XCMPLX_1:90;
      Im((z*'/[*|.z.|,0*])*z) = (|.z.|*0 - ((Re z)^2+(Im z)^2)*0) / (|.z.|^2 +
0
)
                                         by A2,A3,A4,COMPLEX1:82,SQUARE_1:60;
    hence thesis by A5,COMPLEX1:8;
   end;

begin :: Some Facts on the Field of Complex Numbers

  definition
   let x,y be Real;
   func [**x,y**] -> Element of F_Complex equals :Def1:
    [*x,y*];
   coherence by COMPLFLD:def 1;
  end;

  definition
   func i_FC -> Element of F_Complex equals :Def2:
    <i>;
   coherence
   proof
      <i> = [**0,1**] by Def1,COMPLEX1:def 8;
    hence thesis;
   end;
  end;

  theorem
     i_FC = [*0,1*] & i_FC = [**0,1**] by Def1,Def2,COMPLEX1:def 8;

  theorem
     |.i_FC.| = 1 by Def2,COMPLEX1:135,COMPLFLD:def 3;

  theorem Th8:
   i_FC * i_FC = -1_ F_Complex
   proof
    thus i_FC * i_FC = -1r by Def2,COMPLEX1:37,COMPLFLD:6
       .= -1_ F_Complex by COMPLFLD:4,10;
   end;

  theorem Th9:
   (-1_ F_Complex) * (-1_ F_Complex) = 1_ F_Complex
   proof
      -1r = -1_ F_Complex by COMPLFLD:4,10;
    hence (-1_ F_Complex) * (-1_ F_Complex) = (-1r) * -1r by COMPLFLD:6
       .= --1r by COMPLEX1:46
       .= 1_ F_Complex by COMPLFLD:10;
   end;

  theorem Th10:
   for x1,y1,x2,y2 be Real holds
    [**x1,y1**] + [**x2,y2**] = [**x1 + x2,y1 + y2**]
   proof
    let x1,y1,x2,y2 be Real;
      [**x1,y1**] = [*x1,y1*] & [**x2,y2**] = [*x2,y2*] by Def1;
    hence [**x1,y1**] + [**x2,y2**] = [*x1,y1*] + [*x2,y2*] by COMPLFLD:3
       .= [*x1 + x2,y1 + y2*] by COMPLFLD:2
       .= [**x1 + x2,y1 + y2**] by Def1;
   end;

  theorem Th11:
   for x1,y1,x2,y2 be Real holds
    [**x1,y1**] * [**x2,y2**] = [**x1*x2 - y1*y2,x1*y2+x2*y1**]
   proof
    let x1,y1,x2,y2 be Real;
      [**x1,y1**] = [*x1,y1*] & [**x2,y2**] = [*x2,y2*] by Def1;
    hence [**x1,y1**] * [**x2,y2**] = [*x1,y1*] * [*x2,y2*] by COMPLFLD:6
       .= [*x1*x2 - y1*y2,x1*y2+x2*y1*] by Th2
       .= [**x1*x2 - y1*y2,x1*y2+x2*y1**] by Def1;
   end;

  theorem
     for z be Element of F_Complex holds
    abs(|.z.|) = |.z.|
   proof
    let z be Element of F_Complex;
      |.z.| >= 0 by COMPLFLD:95;
    hence thesis by ABSVALUE:def 1;
   end;

  theorem Th13:
   for r be Real holds |.[**r,0**].| = abs r
   proof
    let r be Real;
    consider r1 be Element of COMPLEX such that
     A1: [**r,0**] = r1 and
     A2: |.[**r,0**].| = |.r1.| by COMPLFLD:def 3;
    A3: r1 = [*r,0*] by A1,Def1;
    then Im r1 = 0 by COMPLEX1:7;
    then |.r1.| = abs Re r1 by COMPLEX1:136;
    hence thesis by A2,A3,COMPLEX1:7;
   end;

  theorem Th14:
   for r be Real holds [**r,0**]*i_FC = [**0,r**]
   proof
    let r be Real;
      [**r,0**] = [*r,0*] by Def1;
    hence [**r,0**]*i_FC = [*r,0*]*<i> by Def2,COMPLFLD:6
       .= [*0,r*] by Th3
       .= [**0,r**] by Def1;
   end;

  definition
   let z be Element of F_Complex;
   func Re z -> Real means :Def3:
    ex z' be Element of COMPLEX st z = z' & it = Re z';
    existence
    proof
     reconsider z'=z as Element of COMPLEX by COMPLFLD:def 1;
     take z1=Re z';
     take z';
     thus z = z' & z1 = Re z';
    end;
    uniqueness;
  end;

  definition
   let z be Element of F_Complex;
   func Im z -> Real means :Def4:
    ex z' be Element of COMPLEX st z = z' & it = Im z';
    existence
    proof
     reconsider z'=z as Element of COMPLEX by COMPLFLD:def 1;
     take z1 = Im z';
     take z';
     thus z = z' & z1 = Im z';
    end;
    uniqueness;
  end;

  theorem Th15:
   for x,y be Real holds
    Re [**x,y**] = x & Im [**x,y**] = y
   proof
    let x,y be Real;
    consider z be Element of COMPLEX such that
     A1: [**x,y**] = z and
     A2: Re [**x,y**] = Re z by Def3;
      z = [*x,y*] by A1,Def1;
    hence Re [**x,y**] = x by A2,COMPLEX1:7;
    consider z be Element of COMPLEX such that
     A3: [**x,y**] = z and
     A4: Im [**x,y**] = Im z by Def4;
      z = [*x,y*] by A3,Def1;
    hence thesis by A4,COMPLEX1:7;
   end;

  theorem Th16:
   for x,y be Element of F_Complex holds
    Re (x+y) = Re x + Re y &
    Im (x+y) = Im x + Im y
   proof
    let x,y be Element of F_Complex;
    consider x1 be Element of COMPLEX such that
     A1: x = x1 and
     A2: Re x = Re x1 by Def3;
    consider y1 be Element of COMPLEX such that
     A3: y = y1 and
     A4: Re y = Re y1 by Def3;
    consider xy1 be Element of COMPLEX such that
     A5: x+y = xy1 and
     A6: Re (x+y) = Re xy1 by Def3;
      x+y = x1+y1 by A1,A3,COMPLFLD:3;
    hence Re (x+y) = Re x + Re y by A2,A4,A5,A6,COMPLEX1:19;
    consider x1 be Element of COMPLEX such that
     A7: x = x1 and
     A8: Im x = Im x1 by Def4;
    consider y1 be Element of COMPLEX such that
     A9: y = y1 and
     A10: Im y = Im y1 by Def4;
    consider xy1 be Element of COMPLEX such that
     A11: x+y = xy1 and
     A12: Im (x+y) = Im xy1 by Def4;
      x+y = x1+y1 by A7,A9,COMPLFLD:3;
    hence thesis by A8,A10,A11,A12,COMPLEX1:19;
   end;

  theorem Th17:
   for x,y be Element of F_Complex holds
    Re (x*y) = Re x * Re y - Im x * Im y &
    Im (x*y) = Re x * Im y + Re y * Im x
   proof
    let x,y be Element of F_Complex;
    consider x1 be Element of COMPLEX such that
     A1: x = x1 and
     A2: Re x = Re x1 by Def3;
    consider y1 be Element of COMPLEX such that
     A3: y = y1 and
     A4: Re y = Re y1 by Def3;
    consider xy1 be Element of COMPLEX such that
     A5: x*y = xy1 and
     A6: Re (x*y) = Re xy1 by Def3;
    consider x2 be Element of COMPLEX such that
     A7: x = x2 and
     A8: Im x = Im x2 by Def4;
    consider y2 be Element of COMPLEX such that
     A9: y = y2 and
     A10: Im y = Im y2 by Def4;
    consider xy2 be Element of COMPLEX such that
     A11: x*y = xy2 and
     A12: Im (x*y) = Im xy2 by Def4;
    thus Re (x*y) = Re (x1*y1) by A1,A3,A5,A6,COMPLFLD:6
       .= Re x * Re y - Im x * Im y by A1,A2,A3,A4,A7,A8,A9,A10,COMPLEX1:24;
    thus Im (x*y) = Im (x1*y1) by A1,A3,A11,A12,COMPLFLD:6
       .= Re x * Im y + Re y * Im x by A1,A2,A3,A4,A7,A8,A9,A10,COMPLEX1:24;
   end;

  theorem Th18:
   for z be Element of F_Complex holds
    Re z <= |.z.|
   proof
    let z be Element of F_Complex;
    consider z1 be Element of COMPLEX such that
     A1: z = z1 and
     A2: Re z = Re z1 by Def3;
    consider z2 be Element of COMPLEX such that
     A3: z = z2 and
     A4: |.z.| = |.z2.| by COMPLFLD:def 3;
    thus thesis by A1,A2,A3,A4,COMPLEX1:140;
   end;

  theorem
     for z be Element of F_Complex holds
    Im z <= |.z.|
   proof
    let z be Element of F_Complex;
    consider z1 be Element of COMPLEX such that
     A1: z = z1 and
     A2: Im z = Im z1 by Def4;
    consider z2 be Element of COMPLEX such that
     A3: z = z2 and
     A4: |.z.| = |.z2.| by COMPLFLD:def 3;
    thus thesis by A1,A2,A3,A4,COMPLEX1:141;
   end;

begin :: Functionals of Vector Space

  definition
   let K be 1-sorted;
   let V be VectSpStr over K;
   mode Functional of V is Function of the carrier of V, the carrier of K;
   canceled;
  end;

  definition
   let K be non empty LoopStr;
   let V be non empty VectSpStr over K;
   let f,g be Functional of V;
   func f+g -> Functional of V means :Def6:
    for x be Element of V holds it.x = f.x + g.x;
   existence
   proof
    deffunc G(Element of V) = f.$1 + g.$1;
    consider F be Function of the carrier of V,the carrier of K such that
     A1: for x be Element of V holds F.x = G(x)from LambdaD;
    reconsider F as Functional of V;
    take F;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of V such that
     A2: for x be Element of V holds a.x = f.x + g.x and
     A3: for x be Element of V holds b.x = f.x + g.x;
       now
      let x be Element of V;
      thus a.x = f.x + g.x by A2
              .= b.x by A3;
     end;
     hence a = b by FUNCT_2:113;
   end;
  end;

  definition
   let K be non empty LoopStr;
   let V be non empty VectSpStr over K;
   let f be Functional of V;
   func -f -> Functional of V means :Def7:
    for x be Element of V holds it.x = -(f.x);
   existence
   proof
    deffunc G(Element of V) = -(f.$1);
    consider F be Function of the carrier of V,the carrier of K such that
     A1: for x be Element of V holds F.x = G(x) from LambdaD;
    reconsider F as Functional of V;
    take F;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of V such that
     A2: for x be Element of V holds a.x = -(f.x) and
     A3: for x be Element of V holds b.x = -(f.x);
      now
     let x be Element of V;
      thus a.x = -(f.x) by A2
              .= b.x by A3;
    end;
    hence a = b by FUNCT_2:113;
   end;
  end;

  definition
   let K be non empty LoopStr;
   let V be non empty VectSpStr over K;
   let f,g be Functional of V;
   func f-g -> Functional of V equals :Def8:
    f+-g;
   coherence;
  end;

  definition
   let K be non empty HGrStr;
   let V be non empty VectSpStr over K;
   let v be Element of K;
   let f be Functional of V;
   func v*f -> Functional of V means :Def9:
    for x be Element of V holds it.x = v*(f.x);
   existence
   proof
    deffunc G(Element of V) = v *(f.$1);
    consider F be Function of the carrier of V,the carrier of K such that
     A1: for x be Element of V holds
                                              F.x = G(x) from LambdaD;
    reconsider F as Functional of V;
    take F;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of V such that
     A2: for x be Element of V holds a.x = v*(f.x) and
     A3: for x be Element of V holds b.x = v*(f.x);
       now
      let x be Element of V;
      thus a.x = v*(f.x) by A2
              .= b.x by A3;
     end;
    hence thesis by FUNCT_2:113;
   end;
  end;

  definition
   let K be non empty ZeroStr;
   let V be VectSpStr over K;
   func 0Functional(V) -> Functional of V equals :Def10:
    [#]V --> 0.K;
   coherence
   proof
      [#]V = the carrier of V by PRE_TOPC:12;
    hence [#]V --> 0.K is Functional of V;
   end;
  end;

  definition
   let K be non empty LoopStr;
   let V be non empty VectSpStr over K;
   let F be Functional of V;
   attr F is additive means :Def11:
    for x,y be Vector of V holds F.(x+y) = F.x+F.y;
  end;

  definition
   let K be non empty HGrStr;
   let V be non empty VectSpStr over K;
   let F be Functional of V;
   attr F is homogeneous means :Def12:
    for x be Vector of V, r be Scalar of V holds F.(r*x) = r*F.x;
  end;

  definition
   let K be non empty ZeroStr;
   let V be non empty VectSpStr over K;
   let F be Functional of V;
   attr F is 0-preserving means
      F.(0.V) = 0.K;
  end;

  definition
   let K be add-associative right_zeroed right_complementable Abelian
    associative left_unital distributive (non empty doubleLoopStr);
   let V be VectSp of K;
   cluster homogeneous -> 0-preserving Functional of V;
   coherence
   proof
    let F be Functional of V;
    assume A1: F is homogeneous;
    thus F.(0.V) = F.(0.K * 0.V) by VECTSP_1:59
                .= 0.K * F.(0.V) by A1,Def12
                .= 0.K by VECTSP_1:39;
   end;
  end;

  definition
   let K be right_zeroed (non empty LoopStr);
   let V be non empty VectSpStr over K;
   cluster 0Functional(V) -> additive;
   coherence
   proof
    let x,y be Vector of V;
    A1: [#]V = the carrier of V by PRE_TOPC:12;
    A2: (0Functional(V)).x = ([#]V --> 0.K).x by Def10
                          .= 0.K by A1,FUNCOP_1:13;
    A3: (0Functional(V)).y = ([#]V --> 0.K).y by Def10
                          .= 0.K by A1,FUNCOP_1:13;
    thus (0Functional(V)).(x+y) = ([#]V --> 0.K).(x+y) by Def10
                               .= 0.K by A1,FUNCOP_1:13
                               .= (0Functional(V)).x + (0Functional(V)).y
                                                     by A2,A3,RLVECT_1:def 7;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   cluster 0Functional(V) -> homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Scalar of V;
    A1: [#]V = the carrier of V by PRE_TOPC:12;
    A2: (0Functional(V)).x = ([#]V --> 0.K).x by Def10
                          .= 0.K by A1,FUNCOP_1:13;
    thus (0Functional(V)).(r*x) = ([#]V --> 0.K).(r*x) by Def10
                               .= 0.K by A1,FUNCOP_1:13
                               .= r*(0Functional(V)).x by A2,VECTSP_1:36;
   end;
  end;

  definition
   let K be non empty ZeroStr;
   let V be non empty VectSpStr over K;
   cluster 0Functional(V) -> 0-preserving;
   coherence
   proof
    A1: [#]V = the carrier of V by PRE_TOPC:12;
    thus (0Functional(V)).(0.V) = ([#]V --> 0.K).(0.V) by Def10
                               .= 0.K by A1,FUNCOP_1:13;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   cluster additive homogeneous 0-preserving Functional of V;
   existence
   proof
    take 0Functional(V);
    thus thesis;
   end;
  end;

  theorem Th20:
   for K be Abelian (non empty LoopStr)
   for V be non empty VectSpStr over K
   for f,g be Functional of V holds
    f+g = g+f
   proof
    let K be Abelian (non empty LoopStr);
    let V be non empty VectSpStr over K;
    let f,g be Functional of V;
      now let x be Element of V;
     thus (f+g).x = f.x + g.x by Def6
        .= (g+f).x by Def6;
    end;
    hence f+g = g+f by FUNCT_2:113;
   end;

  theorem Th21:
   for K be add-associative (non empty LoopStr)
   for V be non empty VectSpStr over K
   for f,g,h be Functional of V holds
    f+g+h = f+(g+h)
   proof
    let K be add-associative (non empty LoopStr);
    let V be non empty VectSpStr over K;
    let f,g,h be Functional of V;
      now let x be Element of V;
     thus (f+g+h).x = (f+g).x + h.x by Def6
        .= f.x + g.x + h.x by Def6
        .= f.x + (g.x + h.x) by RLVECT_1:def 6
        .= f.x + ((g+h).x) by Def6
        .= (f+(g+h)).x by Def6;
    end;
    hence f+g+h = f+(g+h) by FUNCT_2:113;
   end;

  theorem Th22:
   for K be non empty ZeroStr
   for V be non empty VectSpStr over K
   for x be Element of V holds
    (0Functional(V)).x = 0.K
   proof
    let K be non empty ZeroStr;
    let V be non empty VectSpStr over K;
    let x be Element of V;
      x in the carrier of V;
    then A1: x in [#]V by PRE_TOPC:12;
    thus (0Functional(V)).x = ([#]V --> 0.K).x by Def10
       .= 0.K by A1,FUNCOP_1:13;
   end;

  theorem Th23:
   for K be right_zeroed (non empty LoopStr)
   for V be non empty VectSpStr over K
   for f be Functional of V holds
    f + 0Functional(V) = f
   proof
    let K be right_zeroed (non empty LoopStr);
    let V be non empty VectSpStr over K;
    let f be Functional of V;
      now let x be Element of V;
     thus (f+0Functional(V)).x = f.x+(0Functional(V)).x by Def6
        .= f.x+0.K by Th22
        .= f.x by RLVECT_1:def 7;
    end;
    hence thesis by FUNCT_2:113;
   end;

  theorem Th24:
   for K be add-associative right_zeroed right_complementable
            (non empty LoopStr)
   for V be non empty VectSpStr over K
   for f be Functional of V holds
    f-f = 0Functional(V)
   proof
    let K be add-associative right_zeroed right_complementable
            (non empty LoopStr);
    let V be non empty VectSpStr over K;
    let f be Functional of V;
      now let x be Element of V;
     thus (f-f).x = (f+-f).x by Def8
        .= f.x+(-f).x by Def6
        .= f.x+-f.x by Def7
        .= 0.K by RLVECT_1:16
        .= (0Functional(V)).x by Th22;
    end;
    hence thesis by FUNCT_2:113;
   end;

  theorem Th25:
   for K be right-distributive (non empty doubleLoopStr)
   for V be non empty VectSpStr over K
   for r be Element of K
   for f,g be Functional of V holds
    r*(f+g) = r*f+r*g
   proof
    let K be right-distributive (non empty doubleLoopStr);
    let V be non empty VectSpStr over K;
    let r be Element of K;
    let f,g be Functional of V;
      now let x be Element of V;
     thus (r*(f+g)).x = r*(f+g).x by Def9
        .= r*(f.x+g.x) by Def6
        .= r*f.x+r*g.x by VECTSP_1:def 11
        .= (r*f).x+r*g.x by Def9
        .= (r*f).x+(r*g).x by Def9
        .= (r*f+r*g).x by Def6;
    end;
    hence thesis by FUNCT_2:113;
   end;

  theorem Th26:
   for K be left-distributive (non empty doubleLoopStr)
   for V be non empty VectSpStr over K
   for r,s be Element of K
   for f be Functional of V holds
    (r+s)*f = r*f+s*f
   proof
    let K be left-distributive (non empty doubleLoopStr);
    let V be non empty VectSpStr over K;
    let r,s be Element of K;
    let f be Functional of V;
      now let x be Element of V;
     thus ((r+s)*f).x = (r+s)*f.x by Def9
        .= r*f.x+s*f.x by VECTSP_1:def 12
        .= (r*f).x+s*f.x by Def9
        .= (r*f).x+(s*f).x by Def9
        .= (r*f+s*f).x by Def6;
    end;
    hence thesis by FUNCT_2:113;
   end;

  theorem Th27:
   for K be associative (non empty HGrStr)
   for V be non empty VectSpStr over K
   for r,s be Element of K
   for f be Functional of V holds
    (r*s)*f = r*(s*f)
   proof
    let K be associative (non empty HGrStr);
    let V be non empty VectSpStr over K;
    let r,s be Element of K;
    let f be Functional of V;
      now let x be Element of V;
     thus ((r*s)*f).x = (r*s)*f.x by Def9
        .= r*(s*f.x) by VECTSP_1:def 16
        .= r*(s*f).x by Def9
        .= (r*(s*f)).x by Def9;
    end;
    hence thesis by FUNCT_2:113;
   end;

  theorem Th28:
   for K be left_unital (non empty doubleLoopStr)
   for V be non empty VectSpStr over K
   for f be Functional of V holds
    (1_ K)*f = f
   proof
    let K be left_unital (non empty doubleLoopStr);
    let V be non empty VectSpStr over K;
    let f be Functional of V;
      now let x be Element of V;
     thus ((1_ K)*f).x = (1_ K)*f.x by Def9
        .= f.x by VECTSP_1:def 19;
    end;
    hence thesis by FUNCT_2:113;
   end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let f,g be additive Functional of V;
   cluster f+g -> additive;
   coherence
   proof
    let x,y be Vector of V;
    thus (f+g).(x+y) = f.(x+y)+g.(x+y) by Def6
       .= f.x+f.y+g.(x+y) by Def11
       .= f.x+f.y+(g.x+g.y) by Def11
       .= f.x+(f.y+(g.x+g.y)) by RLVECT_1:def 6
       .= f.x+(g.x+(f.y+g.y)) by RLVECT_1:def 6
       .= f.x+g.x+(f.y+g.y) by RLVECT_1:def 6
       .= (f+g).x+(f.y+g.y) by Def6
       .= (f+g).x+(f+g).y by Def6;
   end;
  end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let f be additive Functional of V;
   cluster -f -> additive;
   coherence
   proof
    let x,y be Vector of V;
    thus (-f).(x+y) = -f.(x+y) by Def7
       .= -(f.x + f.y) by Def11
       .= -f.x+-f.y by RLVECT_1:45
       .= (-f).x+-f.y by Def7
       .= (-f).x+(-f).y by Def7;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let v be Element of K;
   let f be additive Functional of V;
   cluster v*f -> additive;
   coherence
   proof
    let x,y be Vector of V;
    thus (v*f).(x+y) = v*f.(x+y) by Def9
       .= v*(f.x + f.y) by Def11
       .= v*f.x+v*f.y by VECTSP_1:def 11
       .= (v*f).x+v*f.y by Def9
       .= (v*f).x+(v*f).y by Def9;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let f,g be homogeneous Functional of V;
   cluster f+g -> homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Scalar of V;
    thus (f+g).(r*x) = f.(r*x) + g.(r*x) by Def6
       .= r*f.x + g.(r*x) by Def12
       .= r*f.x + r*g.x by Def12
       .= r*(f.x + g.x) by VECTSP_1:def 11
       .= r*(f+g).x by Def6;
   end;
  end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
                 right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let f be homogeneous Functional of V;
   cluster -f -> homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Scalar of V;
    thus (-f).(r*x) = -f.(r*x) by Def7
       .= -r*f.x by Def12
       .= r*-f.x by Lm1
       .= r*(-f).x by Def7;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
        right-distributive associative commutative (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   let v be Element of K;
   let f be homogeneous Functional of V;
   cluster v*f -> homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Scalar of V;
    thus (v*f).(r*x) = v*f.(r*x) by Def9
       .= v*(r*f.x) by Def12
       .= r*(v*f.x) by VECTSP_1:def 16
       .= r*(v*f).x by Def9;
   end;
  end;

  definition
   let K be add-associative right_zeroed right_complementable
            right-distributive (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   mode linear-Functional of V is additive homogeneous Functional of V;
  end;

begin :: The Vector Space of linear Functionals

  definition
   let K be Abelian add-associative right_zeroed right_complementable
        right-distributive associative commutative (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   func V*' -> non empty strict VectSpStr over K means :Def14:
    (for x be set holds x in the carrier of it iff
                       x is linear-Functional of V) &
    (for f,g be linear-Functional of V holds (the add of it).(f,g) = f+g) &
    (the Zero of it = 0Functional(V)) &
    for f be linear-Functional of V for x be Element of K holds
     (the lmult of it).(x,f) = x*f;
   existence
   proof
      0Functional(V) in {x where x is linear-Functional of V: not contradiction
}
;
    then reconsider ca = {x where x is linear-Functional of V :
                          not contradiction} as non empty set;
    A1: now let x be set;
     thus x in ca implies x is linear-Functional of V
     proof
      assume x in ca;
      then consider y be linear-Functional of V such that
       A2: x=y;
      thus x is linear-Functional of V by A2;
     end;
     thus x is linear-Functional of V implies x in ca;
    end;
    defpred P[set,set,set] means
    ex f,g be Functional of V st $1=f & $2=g & $3=f+g;

    A3: for x,y be Element of ca
     ex u be Element of ca st P[x,y,u]
    proof
     let x,y be Element of ca;
     reconsider f=x,g=y as linear-Functional of V by A1;
     reconsider u=f+g as Element of ca by A1;
     take u,f,g;
     thus thesis;
    end;
    consider ad be Function of [:ca,ca:],ca such that
     A4: for x,y be Element of ca holds P[x,y,ad.[x,y]] from FuncEx2D(A3);
    A5: now let f,g be linear-Functional of V;
     reconsider x=f,y=g as Element of ca by A1;
     consider f1,g1 be Functional of V such that
      A6: x=f1 & y=g1 & ad.[x,y]=f1+g1 by A4;
     thus ad.(f,g) = f+g by A6,BINOP_1:def 1;
    end;
    reconsider 0F=0Functional(V) as Element of ca by A1;
    defpred P[Element of K,set,set] means
    ex f be Functional of V st $2=f & $3=$1*f;

    A7: for x be Element of K,y be Element of ca
     ex u be Element of ca st P[x,y,u]
    proof
     let x be Element of K,y be Element of ca;
     reconsider f=y as linear-Functional of V by A1;
     reconsider u=x*f as Element of ca by A1;
     take u,f;
     thus thesis;
    end;
    consider lm be Function of [:the carrier of K,ca:],ca such that
     A8: for x be Element of K,y be Element of ca holds
      P[x,y,lm.[x,y]] from FuncEx2D(A7);
    A9: now let f be linear-Functional of V;
     let x be Element of K;
     reconsider y=f as Element of ca by A1;
     consider f1 be Functional of V such that
      A10: y=f1 & lm.[x,y]=x*f1 by A8;
     thus lm.(x,f) = x*f by A10,BINOP_1:def 1;
    end;
    reconsider V1 = VectSpStr(# ca,ad,0F,lm #)
      as non empty strict VectSpStr over K;
    take V1;
    thus thesis by A1,A5,A9;
   end;
   uniqueness
   proof
    let V1,V2 be non empty strict VectSpStr over K;
    assume that
     A11: for x be set holds x in the carrier of V1 iff
                        x is linear-Functional of V and
     A12: for f,g be linear-Functional of V holds (the add of V1).(f,g)=f+g and
     A13: the Zero of V1 = 0Functional(V) and
     A14: for f be linear-Functional of V for x be Element of K
          holds (the lmult of V1).(x,f) = x*f and
     A15: for x be set holds x in the carrier of V2 iff
                        x is linear-Functional of V and
     A16: for f,g be linear-Functional of V holds (the add of V2).(f,g)=f+g and
     A17: the Zero of V2 = 0Functional(V) and
     A18: for f be linear-Functional of V for x be Element of K
           holds (the lmult of V2).(x,f) = x*f;
      now let x be set;
     thus x in the carrier of V1 implies x in the carrier of V2
     proof
      assume x in the carrier of V1;
      then x is linear-Functional of V by A11;
      hence x in the carrier of V2 by A15;
     end;
     assume x in the carrier of V2;
     then x is linear-Functional of V by A15;
     hence x in the carrier of V1 by A11;
    end;
    then A19: the carrier of V1 = the carrier of V2 by TARSKI:2;
      now let x,y be Element of V1;
     reconsider f=x, g=y as linear-Functional of V by A11;
     thus (the add of V1).(x,y) = f+g by A12
        .= (the add of V2).(x,y) by A16;
    end;
    then A20: the add of V1 = the add of V2 by A19,BINOP_1:2;
      now let r be Element of K;
     let x be Element of V1;
     reconsider f=x as linear-Functional of V by A11;
     thus (the lmult of V1).(r,x) = r*f by A14
        .= (the lmult of V2).(r,x) by A18;
    end;
    hence V1 = V2 by A13,A17,A19,A20,BINOP_1:2;
   end;
  end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
        right-distributive associative commutative (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   cluster V*' -> Abelian;
   coherence
   proof
    let v,w be Element of V*';
    reconsider f=v,g=w as linear-Functional of V by Def14;
    thus v+w = (the add of V*').[v,w] by RLVECT_1:def 3
       .= (the add of V*').(v,w) by BINOP_1:def 1
       .= f+g by Def14
       .= g+f by Th20
       .= (the add of V*').(w,v) by Def14
       .= (the add of V*').[w,v] by BINOP_1:def 1
       .= w+v by RLVECT_1:def 3;
   end;
  end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
        right-distributive associative commutative (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   cluster V*' -> add-associative;
   coherence
   proof
    let u,v,w be Element of V*';
    reconsider f=u,g=v,h=w as linear-Functional of V by Def14;
    thus u+v+w = (the add of V*').[u+v,w] by RLVECT_1:def 3
       .= (the add of V*').(u+v,w) by BINOP_1:def 1
       .= (the add of V*').((the add of V*').[u,v],w) by RLVECT_1:def 3
       .= (the add of V*').((the add of V*').(u,v),w) by BINOP_1:def 1
       .= (the add of V*').(f+g,w) by Def14
       .= f+g+h by Def14
       .= f+(g+h) by Th21
       .= (the add of V*').(u,g+h) by Def14
       .= (the add of V*').(u,(the add of V*').(v,w)) by Def14
       .= (the add of V*').(u,(the add of V*').[v,w]) by BINOP_1:def 1
       .= (the add of V*').(u,v+w) by RLVECT_1:def 3
       .= (the add of V*').[u,v+w] by BINOP_1:def 1
       .= u+(v+w) by RLVECT_1:def 3;
   end;

   cluster V*' -> right_zeroed;
   coherence
   proof
    let x be Element of V*';
    reconsider f=x as linear-Functional of V by Def14;
    thus x + 0.(V*') = (the add of V*').[x,0.(V*')] by RLVECT_1:def 3
       .= (the add of V*').(x,0.(V*')) by BINOP_1:def 1
       .= (the add of V*').(x,the Zero of V*') by RLVECT_1:def 2
       .= (the add of V*').(x,0Functional(V)) by Def14
       .= f+0Functional(V) by Def14
       .= x by Th23;
   end;

   cluster V*' -> right_complementable;
   coherence
   proof
    let x be Element of V*';
    reconsider f=x as linear-Functional of V by Def14;
    reconsider b = -f as Element of V*' by Def14;
    take b;
    thus x+b = (the add of V*').[x,b] by RLVECT_1:def 3
       .= (the add of V*').(x,-f) by BINOP_1:def 1
       .= f+-f by Def14
       .= f-f by Def8
       .= 0Functional(V) by Th24
       .= the Zero of V*' by Def14
       .= 0.(V*') by RLVECT_1:def 2;
   end;
  end;

  definition
   let K be Abelian add-associative right_zeroed right_complementable
   left_unital distributive associative commutative (non empty doubleLoopStr);
   let V be non empty VectSpStr over K;
   cluster V*' -> VectSp-like;
   coherence
   proof
    let x,y be Element of K;
    let v,w be Element of V*';
    reconsider f=v,g=w as linear-Functional of V by Def14;
    thus x*(v+w) = (the lmult of V*').(x,v+w) by VECTSP_1:def 24
       .= (the lmult of V*').(x,(the add of V*').[v,w]) by RLVECT_1:def 3
       .= (the lmult of V*').(x,(the add of V*').(v,w)) by BINOP_1:def 1
       .= (the lmult of V*').(x,f+g) by Def14
       .= x*(f+g) by Def14
       .= x*f+x*g by Th25
       .= (the add of V*').(x*f,x*g) by Def14
       .= (the add of V*').((the lmult of V*').(x,f),x*g) by Def14
       .= (the add of V*').((the lmult of V*').(x,f),(the lmult of V*').(x,g))
                                                                       by Def14
       .= (the add of V*').(x*v,(the lmult of V*').(x,g)) by VECTSP_1:def 24
       .= (the add of V*').(x*v,x*w) by VECTSP_1:def 24
       .= (the add of V*').[x*v,x*w] by BINOP_1:def 1
       .= x*v+x*w by RLVECT_1:def 3;
    thus (x+y)*v = (the lmult of V*').(x+y,v) by VECTSP_1:def 24
       .= (x+y)*f by Def14
       .= x*f+y*f by Th26
       .= (the add of V*').(x*f,y*f) by Def14
       .= (the add of V*').((the lmult of V*').(x,f),y*f) by Def14
       .= (the add of V*').((the lmult of V*').(x,f),(the lmult of V*').(y,f))
                                                                       by Def14
       .= (the add of V*').(x*v,(the lmult of V*').(y,f)) by VECTSP_1:def 24
       .= (the add of V*').(x*v,y*v) by VECTSP_1:def 24
       .= (the add of V*').[x*v,y*v] by BINOP_1:def 1
       .= x*v+y*v by RLVECT_1:def 3;
    thus (x*y)*v = (the lmult of V*').(x*y,v) by VECTSP_1:def 24
       .= (x*y)*f by Def14
       .= x*(y*f) by Th27
       .= (the lmult of V*').(x,y*f) by Def14
       .= (the lmult of V*').(x,(the lmult of V*').(y,f)) by Def14
       .= (the lmult of V*').(x,y*v) by VECTSP_1:def 24
       .= x*(y*v) by VECTSP_1:def 24;
    thus (1_ K)*v = (the lmult of V*').(1_ K,v) by VECTSP_1:def 24
       .= (1_ K)*f by Def14
       .= v by Th28;
   end;
  end;

begin :: Semi Norm of Vector Space

  definition
   let K be 1-sorted;
   let V be VectSpStr over K;
   mode RFunctional of V is Function of the carrier of V,REAL;
   canceled;
  end;

  definition
   let K be 1-sorted;
   let V be non empty VectSpStr over K;
   let F be RFunctional of V;
   attr F is subadditive means :Def16:
    for x,y be Vector of V holds F.(x+y) <= F.x+F.y;
  end;

  definition
   let K be 1-sorted;
   let V be non empty VectSpStr over K;
   let F be RFunctional of V;
   attr F is additive means :Def17:
    for x,y be Vector of V holds F.(x+y) = F.x+F.y;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let F be RFunctional of V;
   attr F is Real_homogeneous means :Def18:
    for v be Vector of V
    for r be Real holds
     F.([**r,0**]*v) = r*F.v;
  end;

  theorem Th29:
   for V be VectSp-like (non empty VectSpStr over F_Complex)
   for F be RFunctional of V st F is Real_homogeneous
   for v be Vector of V
   for r be Real holds
    F.([**0,r**]*v) = r*F.(i_FC*v)
   proof
    let V be VectSp-like (non empty VectSpStr over F_Complex);
    let F be RFunctional of V;
    assume A1: F is Real_homogeneous;
    let v be Vector of V;
    let r be Real;
    thus F.([**0,r**]*v) = F.([**r,0**]*i_FC*v) by Th14
       .= F.([**r,0**]*(i_FC*v)) by VECTSP_1:def 26
       .= r*F.(i_FC*v) by A1,Def18;
   end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let F be RFunctional of V;
   attr F is homogeneous means :Def19:
    for v be Vector of V
    for r be Scalar of V holds F.(r*v) = |.r.|*F.v;
  end;

  definition
   let K be 1-sorted;
   let V be VectSpStr over K;
   let F be RFunctional of V;
   attr F is 0-preserving means
      F.(0.V) = 0;
  end;

  definition
   let K be 1-sorted;
   let V be non empty VectSpStr over K;
   cluster additive -> subadditive RFunctional of V;
   coherence
   proof
    let F be RFunctional of V;
    assume A1: F is additive;
    let x,y be Vector of V;
    thus F.(x+y) <= F.x+F.y by A1,Def17;
   end;
  end;

L0: 0c = [*0,0*] by ARYTM_0:def 7,COMPLEX1:def 6;
L1: 1r = [*1,0*] by ARYTM_0:def 7,COMPLEX1:def 7;

  definition
   let V be VectSp of F_Complex;
   cluster Real_homogeneous -> 0-preserving RFunctional of V;
   coherence
   proof
    let F be RFunctional of V;
    assume A1: F is Real_homogeneous;
    A2: 0.F_Complex = [**0,0**] by Def1,COMPLFLD:9,L0;
    thus F.(0.V) = F.(0.F_Complex*0.V) by VECTSP_1:59
                .= 0*F.(0.V) by A1,A2,Def18
                .= 0;
   end;
  end;

  definition
   let K be 1-sorted;
   let V be VectSpStr over K;
   func 0RFunctional(V) -> RFunctional of V equals :Def21:
    [#]V --> 0;
   coherence
   proof
      [#]V = the carrier of V by PRE_TOPC:12;
    hence [#]V --> 0 is RFunctional of V;
   end;
  end;

  definition
   let K be 1-sorted;
   let V be non empty VectSpStr over K;
   cluster 0RFunctional(V) -> additive;
   coherence
   proof
    let x,y be Vector of V;
    A1: [#]V = the carrier of V by PRE_TOPC:12;
    A2: (0RFunctional(V)).x = ([#]V --> 0).x by Def21
                           .= 0 by A1,FUNCOP_1:13;
    A3: (0RFunctional(V)).y = ([#]V --> 0).y by Def21
                           .= 0 by A1,FUNCOP_1:13;
    thus (0RFunctional(V)).(x+y) = ([#]V --> 0).(x+y) by Def21
                                .= (0RFunctional(V)).x + (0RFunctional(V)).y
                                                       by A1,A2,A3,FUNCOP_1:13;
   end;

   cluster 0RFunctional(V) -> 0-preserving;
   coherence
   proof
    A4: [#]V = the carrier of V by PRE_TOPC:12;
    thus (0RFunctional(V)).(0.V) = ([#]V --> 0).(0.V) by Def21
                                .= 0 by A4,FUNCOP_1:13;
    thus thesis;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   cluster 0RFunctional(V) -> Real_homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Real;
    A1: [#]V = the carrier of V by PRE_TOPC:12;
    A2: (0RFunctional(V)).x = ([#]V --> 0).x by Def21
                          .= 0 by A1,FUNCOP_1:13;
    thus (0RFunctional(V)).([**r,0**]*x) = ([#]V --> 0).([**r,0**]*x) by Def21
           .= r*((0RFunctional(V)).x) by A1,A2,FUNCOP_1:13;
   end;

   cluster 0RFunctional(V) -> homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Scalar of V;
    A3: [#]V = the carrier of V by PRE_TOPC:12;
    A4: (0RFunctional(V)).x = ([#]V --> 0).x by Def21
                          .= 0 by A3,FUNCOP_1:13;
    thus (0RFunctional(V)).(r*x) = ([#]V --> 0).(r*x) by Def21
           .= |.r.|*((0RFunctional(V)).x) by A3,A4,FUNCOP_1:13;
   end;
  end;

  definition
   let K be 1-sorted;
   let V be non empty VectSpStr over K;
   cluster additive 0-preserving RFunctional of V;
   existence
   proof
    take 0RFunctional(V);
    thus thesis;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   cluster additive Real_homogeneous homogeneous RFunctional of V;
   existence
   proof
    take 0RFunctional(V);
    thus thesis;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   mode Semi-Norm of V is subadditive homogeneous RFunctional of V;
  end;

begin :: Hahn Banach Theorem

  definition
   let V be non empty VectSpStr over F_Complex;
   func RealVS(V) -> strict RLSStruct means :Def22:
    the LoopStr of it = the LoopStr of V &
    for r be Real, v be Vector of V holds
     (the Mult of it).(r,v)=[**r,0**]*v;
   existence
   proof
    deffunc F(Element of REAL, Element of V) = [**$1,0**]*$2;
    consider f be Function of [:REAL, the carrier of V:], the carrier of V
     such that
     A1: for r be Real, v be Vector of V holds
      f.[r,v]=F(r,v) from Lambda2D;
    take R = RLSStruct (#the carrier of V, the Zero of V, the add of V, f#);
    thus the LoopStr of R = the LoopStr of V;
    let r be Real;
    let v be Vector of V;
    thus (the Mult of R).(r,v) = (the Mult of R).[r,v] by BINOP_1:def 1
       .= [**r,0**]*v by A1;
   end;
   uniqueness
   proof
    let a,b be strict RLSStruct such that
     A2: the LoopStr of a = the LoopStr of V and
     A3: for r be Real, v be Vector of V holds
     (the Mult of a).(r,v)=[**r,0**]*v and
     A4: the LoopStr of b = the LoopStr of V and
     A5: for r be Real, v be Vector of V holds
     (the Mult of b).(r,v)=[**r,0**]*v;
      now
     let r be Real, v be Vector of V;
     thus (the Mult of a).[r,v] = (the Mult of a).(r,v) by BINOP_1:def 1
                          .= [**r,0**]*v by A3
                          .= (the Mult of b).(r,v) by A5
                          .= (the Mult of b).[r,v] by BINOP_1:def 1;
    end;
    hence a=b by A2,A4,FUNCT_2:120;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   cluster RealVS(V) -> non empty;
   coherence
   proof
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    hence RealVS(V) is non empty by STRUCT_0:def 1;
   end;
  end;

  definition
   let V be Abelian (non empty VectSpStr over F_Complex);
   cluster RealVS(V) -> Abelian;
   coherence
   proof
    let v,w be Element of RealVS(V);
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider v1=v,w1=w as Element of V;
    thus v + w = (the add of V).[v1,w1] by A1,RLVECT_1:def 3
              .= v1 + w1 by RLVECT_1:def 3
              .= (the add of RealVS(V)).[w,v] by A1,RLVECT_1:def 3
              .= w + v by RLVECT_1:def 3;
   end;
  end;

  definition
   let V be add-associative (non empty VectSpStr over F_Complex);
   cluster RealVS(V) -> add-associative;
   coherence
   proof
    let u,v,w be Element of RealVS(V);
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider u1=u,v1=v,w1=w as Element of V;
    thus (u + v) + w = (the add of RealVS(V)).[u+v,w] by RLVECT_1:def 3
                 .= (the add of V).[((the add of V).[u1,v1]),w1] by A1,RLVECT_1
:def 3
                 .= (the add of V).[u1+v1,w1] by RLVECT_1:def 3
                 .= (u1 + v1) + w1 by RLVECT_1:def 3
                 .= u1 + (v1 + w1) by RLVECT_1:def 6
                 .= (the add of V).[u1,v1+w1] by RLVECT_1:def 3
                 .= (the add of RealVS(V)).[u,((the add of RealVS(V)).[v,w])]
                                                            by A1,RLVECT_1:def
3
                 .= (the add of RealVS(V)).[u,v+w] by RLVECT_1:def 3
                 .= u + (v + w) by RLVECT_1:def 3;
   end;
  end;

  definition
   let V be right_zeroed (non empty VectSpStr over F_Complex);
   cluster RealVS(V) -> right_zeroed;
   coherence
   proof
    let v be Element of RealVS(V);
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider v1=v as Element of V;
    thus v + 0.RealVS(V) = (the add of V).[v1,0.RealVS(V)] by A1,RLVECT_1:def 3
                        .= (the add of V).[v1,the Zero of RealVS(V)]
                                                           by RLVECT_1:def 2
                        .= (the add of V).[v1,0.V] by A1,RLVECT_1:def 2
                        .= v1 + 0.V by RLVECT_1:def 3
                        .= v by RLVECT_1:def 7;
   end;
  end;

  definition
   let V be right_complementable (non empty VectSpStr over F_Complex);
   cluster RealVS(V) -> right_complementable;
   coherence
   proof
    let v be Element of RealVS(V);
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider v1=v as Element of V;
    consider w1 be Element of V such that
     A2: v1 + w1 = 0.V by RLVECT_1:def 8;
    reconsider w=w1 as Element of RealVS(V) by A1;
    take w;
    thus v + w = (the add of V).[v1,w1] by A1,RLVECT_1:def 3
              .= v1 + w1 by RLVECT_1:def 3
              .= the Zero of RealVS(V) by A1,A2,RLVECT_1:def 2
              .= 0.RealVS(V) by RLVECT_1:def 2;
   end;
  end;

  definition
   let V be VectSp-like (non empty VectSpStr over F_Complex);
   cluster RealVS(V) -> RealLinearSpace-like;
   coherence
   proof
    thus for a be Real for v,w be Element of RealVS(V) holds
     a * (v + w) = a * v + a * w
     proof
      let a be Real;
      let v,w be Element of RealVS(V);
      A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
      set a1=[**a,0**];
      reconsider v1=v,w1=w as Element of V by A1;
      thus a * (v + w) = (the Mult of RealVS(V)).[a,v+w] by RLVECT_1:def 4
            .= (the Mult of RealVS(V)).(a,v+w) by BINOP_1:def 1
            .= (the Mult of RealVS(V)).(a,((the add of V).[v1,w1])) by A1,
RLVECT_1:def 3
            .= (the Mult of RealVS(V)).(a,(v1 + w1)) by RLVECT_1:def 3
            .= [**a,0**] * (v1 + w1) by Def22
            .= a1 * v1 + a1 * w1 by VECTSP_1:def 26
            .= (the add of V).[a1*v1,a1*w1] by RLVECT_1:def 3
            .= (the add of V).[((the Mult of RealVS(V)).(a,v1)),[**a,0**]*w1]
                                                                       by Def22
            .= (the add of RealVS(V)).[((the Mult of RealVS(V)).(a,v)),
                                      ((the Mult of RealVS(V)).(a,w))] by A1,
Def22
            .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                              ((the Mult of RealVS(V)).(a,w))] by BINOP_1:def 1
            .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                              ((the Mult of RealVS(V)).[a,w])] by BINOP_1:def 1
            .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                                      (a*w)] by RLVECT_1:def 4
            .= (the add of RealVS(V)).[a*v,a*w] by RLVECT_1:def 4
            .= a * v + a * w by RLVECT_1:def 3;
     end;
    thus for a,b be Real for v be Element of RealVS(V) holds
     (a + b) * v = a * v + b * v
     proof
      let a,b be Real;
      let v be Element of RealVS(V);
      A2: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
      set a1=[**a,0**];
      set b1=[**b,0**];
        [**a,0**] = [*a,0*] & [**b,0**] = [*b,0*] by Def1;
      then A3: [**a,0**] + [**b,0**] = [*a,0*] + [*b,0*] by COMPLFLD:3
                                    .= [*a+b,0+0*] by COMPLFLD:2
                                    .= [**a+b,0**] by Def1;
      reconsider v1=v as Element of V by A2;
      thus (a + b) * v = (the Mult of RealVS(V)).[a+b,v] by RLVECT_1:def 4
             .= (the Mult of RealVS(V)).(a+b,v) by BINOP_1:def 1
             .= ([**a,0**] + [**b,0**]) * v1 by A3,Def22
             .= a1 * v1 + b1 * v1 by VECTSP_1:def 26
             .= (the add of RealVS(V)).[([**a,0**]*v1),([**b,0**]*v1)] by A2,
RLVECT_1:def 3
             .= (the add of RealVS(V)).[((the Mult of RealVS(V)).(a,v)),
                                                       ([**b,0**]*v1)] by Def22
             .= (the add of RealVS(V)).[((the Mult of RealVS(V)).(a,v)),
                                      ((the Mult of RealVS(V)).(b,v))] by Def22
             .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                              ((the Mult of RealVS(V)).(b,v))] by BINOP_1:def 1
             .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                              ((the Mult of RealVS(V)).[b,v])] by BINOP_1:def 1
             .= (the add of RealVS(V)).[((the Mult of RealVS(V)).[a,v]),
                                                       b*v] by RLVECT_1:def 4
             .= (the add of RealVS(V)).[a*v,b*v] by RLVECT_1:def 4
             .= a * v + b * v by RLVECT_1:def 3;
     end;
    thus for a,b be Real for v be Element of RealVS(V) holds
     (a * b) * v = a * (b * v)
     proof
      let a,b be Real;
      let v be Element of RealVS(V);
      A4: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
      A5: [**a,0**]=[*a,0*] & [**b,0**]=[*b,0*] by Def1;
      A6: [**a*b,0**] = [*a*b - 0*0,a*0+b*0*] by Def1
                     .= [*a,0*] * [*b,0*] by Th2
                     .= [**a,0**]*[**b,0**] by A5,COMPLFLD:6;
      reconsider v1=v as Element of V by A4;
      thus (a * b) * v = (the Mult of RealVS(V)).[a*b,v] by RLVECT_1:def 4
       .= (the Mult of RealVS(V)).(a*b,v) by BINOP_1:def 1
       .= ([**a,0**] * [**b,0**]) * v1 by A6,Def22
       .= [**a,0**] * ([**b,0**] * v1) by VECTSP_1:def 26
       .= (the Mult of RealVS(V)).(a,([**b,0**] * v1)) by Def22
       .= (the Mult of RealVS(V)).(a,(the Mult of RealVS(V)).(b,v)) by Def22
       .= (the Mult of RealVS(V)).[a,(the Mult of RealVS(V)).(b,v)]
                                                             by BINOP_1:def 1
       .= (the Mult of RealVS(V)).[a,(the Mult of RealVS(V)).[b,v]]
                                                             by BINOP_1:def 1
       .= (the Mult of RealVS(V)).[a,b*v] by RLVECT_1:def 4
       .= a * (b * v) by RLVECT_1:def 4;
     end;
    let v be Element of RealVS(V);
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider v1=v as Element of V;
    A7: [**1,0**] = 1_(F_Complex) by Def1,COMPLFLD:10,L1;
    thus 1 * v = (the Mult of RealVS(V)).[1,v] by RLVECT_1:def 4
              .= (the Mult of RealVS(V)).(1,v) by BINOP_1:def 1
              .= [**1,0**] * v1 by Def22
              .= v by A7,VECTSP_1:def 26;
   end;
  end;

  theorem Th30:
   for V be non empty VectSp of F_Complex
   for M be Subspace of V holds
    RealVS(M) is Subspace of RealVS(V)
   proof
    let V be non empty VectSp of F_Complex;
    let M be Subspace of V;
    A1: the carrier of M c= the carrier of V by VECTSP_4:def 2;
    A2: the LoopStr of M = the LoopStr of RealVS(M) by Def22;
    A3: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    hence A4: the carrier of RealVS(M) c= the carrier of RealVS(V) by A2,
VECTSP_4:def 2;

    thus the Zero of RealVS(M) = the Zero of RealVS(V) by A2,A3,VECTSP_4:def 2
;

    thus the add of RealVS(M) = (the add of RealVS(V)) |
          [:the carrier of RealVS(M),the carrier of RealVS(M):] by A2,A3,
VECTSP_4:def 2;

      [:REAL,the carrier of RealVS(M):] c= [:REAL,the carrier of RealVS(V):]
                                                          by A4,ZFMISC_1:118;
    then [:REAL,the carrier of RealVS(M):] c= dom (the Mult of RealVS(V))
                                                           by FUNCT_2:def 1;
    then A5: dom((the Mult of RealVS(V)) | [:REAL,the carrier of RealVS(M):])=
       [:REAL,the carrier of RealVS(M):] by RELAT_1:91;
    A6: the lmult of M = (the lmult of V) |
           [:the carrier of F_Complex, the carrier of M:] by VECTSP_4:def 2;
      rng ((the Mult of RealVS(V)) | [:REAL,the carrier of RealVS(M):]) c=
       the carrier of RealVS(M)
    proof
     let y be set;
     assume y in rng ((the Mult of RealVS(V)) |
                [:REAL,the carrier of RealVS(M):]);
     then consider x be set such that
      A7: x in dom ((the Mult of RealVS(V)) |
               [:REAL,the carrier of RealVS(M):]) and
      A8: y = ((the Mult of RealVS(V)) | [:REAL,the carrier of RealVS(M):]).x
                                                               by FUNCT_1:def 5
;
     consider a,b be set such that
      A9: x = [a,b] by A7,ZFMISC_1:102;
     reconsider a as Real by A7,A9,ZFMISC_1:106;
     reconsider b as Element of RealVS(M)
                                                  by A5,A7,A9,ZFMISC_1:106;
     reconsider b1 = b as Element of M by A2;
     reconsider b2 = b1 as Element of V by A1,TARSKI:def 3;
     A10: [[**a,0**],b1] in [:the carrier of F_Complex, the carrier of M:]
                                                             by ZFMISC_1:106;
       [[**a,0**],b2] in [:the carrier of F_Complex, the carrier of V:]
                                                             by ZFMISC_1:106;
     then [[**a,0**],b2] in dom (the lmult of V) by FUNCT_2:def 1;
     then [[**a,0**],b2] in (dom (the lmult of V)) /\
        [:the carrier of F_Complex, the carrier of M:] by A10,XBOOLE_0:def 3;
     then A11: [[**a,0**],b2] in dom ((the lmult of V) |
          [:the carrier of F_Complex, the carrier of M:]) by FUNCT_1:68;
       y = (the Mult of RealVS(V)).[a,b] by A7,A8,A9,FUNCT_1:70
      .= (the Mult of RealVS(V)).(a,b) by BINOP_1:def 1
      .= [**a,0**]*b2 by Def22
      .= (the lmult of V).([**a,0**],b2) by VECTSP_1:def 24
      .= (the lmult of V).[[**a,0**],b2] by BINOP_1:def 1
      .= (the lmult of M).[[**a,0**],b1] by A6,A11,FUNCT_1:70
      .= (the lmult of M).([**a,0**],b1) by BINOP_1:def 1
      .= [**a,0**]*b1 by VECTSP_1:def 24
      .= (the Mult of RealVS(M)).(a,b) by Def22;
     hence y in the carrier of RealVS(M);
    end;
    then reconsider RM = (the Mult of RealVS(V)) |
       [: REAL,the carrier of RealVS(M) :] as Function of
                  [:REAL,the carrier of RealVS(M):],the carrier of RealVS(M)
                                                             by A5,FUNCT_2:4;
      now let a be Real,
            b be Element of RealVS(M);
     reconsider b1 = b as Element of M by A2;
     reconsider b2 = b1 as Element of V by A1,TARSKI:def 3;
     A12: [a,b] in [: REAL,the carrier of RealVS(M) :] by ZFMISC_1:106;
       b in the carrier of RealVS(V) by A4,TARSKI:def 3;
     then [a,b] in [: REAL,the carrier of RealVS(V) :] by ZFMISC_1:106;
     then [a,b] in dom (the Mult of RealVS(V)) by FUNCT_2:def 1;
     then [a,b] in (dom (the Mult of RealVS(V))) /\
        [: REAL,the carrier of RealVS(M) :] by A12,XBOOLE_0:def 3;
     then A13: [a,b] in dom RM by FUNCT_1:68;
     A14: [[**a,0**],b1] in [:the carrier of F_Complex, the carrier of M:]
                                                             by ZFMISC_1:106;
       [[**a,0**],b2] in [:the carrier of F_Complex, the carrier of V:]
                                                             by ZFMISC_1:106;
     then [[**a,0**],b2] in dom (the lmult of V) by FUNCT_2:def 1;
     then [[**a,0**],b2] in (dom (the lmult of V)) /\
        [:the carrier of F_Complex, the carrier of M:] by A14,XBOOLE_0:def 3;
     then A15: [[**a,0**],b2] in dom ((the lmult of V) |
          [:the carrier of F_Complex, the carrier of M:]) by FUNCT_1:68;
     thus (the Mult of RealVS(M)).(a,b) = [**a,0**]*b1 by Def22
        .= (the lmult of M).([**a,0**],b1) by VECTSP_1:def 24
        .= (the lmult of M).[[**a,0**],b1] by BINOP_1:def 1
        .= (the lmult of V).[[**a,0**],b2] by A6,A15,FUNCT_1:70
        .= (the lmult of V).([**a,0**],b2) by BINOP_1:def 1
        .= [**a,0**]*b2 by VECTSP_1:def 24
        .= (the Mult of RealVS(V)).(a,b) by Def22
        .= (the Mult of RealVS(V)).[a,b] by BINOP_1:def 1
        .= RM.[a,b] by A13,FUNCT_1:70
        .= RM.(a,b) by BINOP_1:def 1;
    end;
    hence the Mult of RealVS(M) =
    (the Mult of RealVS(V)) | [:REAL,the carrier of RealVS(M):] by BINOP_1:2;
   end;

  theorem Th31:
   for V be non empty VectSpStr over F_Complex
   for p be RFunctional of V holds
    p is Functional of RealVS(V)
   proof
    let V be non empty VectSpStr over F_Complex;
    let p be RFunctional of V;
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    hence p is Functional of RealVS(V);
   end;

  theorem Th32:
   for V be non empty VectSp of F_Complex
   for p be Semi-Norm of V holds
    p is Banach-Functional of RealVS(V)
   proof
    let V be non empty VectSp of F_Complex;
    let p be Semi-Norm of V;
    reconsider p1=p as Functional of RealVS(V) by Th31;
    A1: p1 is positively_homogeneous
    proof
     let x be VECTOR of RealVS(V);
     let r be Real;
     assume A2: r > 0;
       the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x as Vector of V;
       r*x = (the Mult of RealVS(V)).[r,x] by RLVECT_1:def 4
        .= (the Mult of RealVS(V)).(r,x) by BINOP_1:def 1
        .= [**r,0**]*x1 by Def22;
     hence p1.(r*x) = |.[**r,0**].|*p1.x by Def19
        .= abs(r)*p1.x by Th13
        .= r*p1.x by A2,ABSVALUE:def 1;
    end;
      p1 is subadditive
    proof
     let x,y be VECTOR of RealVS(V);
     A3: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x, y1=y as Vector of V;
       x+y = (the add of V).[x1,y1] by A3,RLVECT_1:def 3
        .= x1+y1 by RLVECT_1:def 3;
     hence p1.(x+y) <= p1.x + p1.y by Def16;
    end;
    hence thesis by A1;
   end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be Functional of V;
   func projRe(l) -> Functional of RealVS(V) means :Def23:
    for i be Element of V holds
     it.i = Re(l.i);
   existence
   proof
    deffunc F(Element of V) = Re(l.$1);
    consider f be Function of the carrier of V,REAL such that
     A1: for i be Element of V holds f.i = F(i) from LambdaD;
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider f as Functional of RealVS(V);
    take f;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of RealVS(V);
    assume A2: for i be Element of V holds
     a.i = Re(l.i);
    assume A3: for i be Element of V holds
     b.i = Re(l.i);
      now
     let i be Element of RealVS(V);
       the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider j=i as Element of V;
     thus a.i = Re(l.j) by A2
             .= b.i by A3;
    end;
    hence a = b by FUNCT_2:113;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be Functional of V;
   func projIm(l) -> Functional of RealVS(V) means :Def24:
    for i be Element of V holds
     it.i = Im(l.i);
   existence
   proof
    deffunc F(Element of V) = Im(l.$1);
    consider f be Function of the carrier of V,REAL such that
     A1: for i be Element of V holds f.i = F(i) from LambdaD;
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider f as Functional of RealVS(V);
    take f;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of RealVS(V);
    assume A2: for i be Element of V holds
     a.i = Im(l.i);
    assume A3: for i be Element of V holds
     b.i = Im(l.i);
      now
     let i be Element of RealVS(V);
       the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider j=i as Element of V;
     thus a.i = Im(l.j) by A2
             .= b.i by A3;
    end;
    hence a = b by FUNCT_2:113;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be Functional of RealVS(V);
   func RtoC(l) -> RFunctional of V equals :Def25:
    l;
   coherence
   proof
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    hence thesis;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be RFunctional of V;
   func CtoR(l) -> Functional of RealVS(V) equals :Def26:
    l;
   coherence
   proof
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    hence thesis;
   end;
  end;

  definition
   let V be non empty VectSp of F_Complex;
   let l be additive Functional of RealVS(V);
   cluster RtoC(l) -> additive;
   coherence
   proof
    let x,y be Vector of V;
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider x1=x,y1=y as VECTOR of RealVS(V);
      x+y = (the add of RealVS(V)).[x1,y1] by A1,RLVECT_1:def 3
       .= x1+y1 by RLVECT_1:def 3;
    hence (RtoC l).(x+y) = l.(x1+y1) by Def25
       .= l.x1+l.y1 by HAHNBAN:def 4
       .= (RtoC l).x+l.y1 by Def25
       .= (RtoC l).x+(RtoC l).y by Def25;
   end;
  end;

  definition
   let V be non empty VectSp of F_Complex;
   let l be additive RFunctional of V;
   cluster CtoR(l) -> additive;
   coherence
   proof
    let x,y be VECTOR of RealVS(V);
    A1: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider x1=x,y1=y as Vector of V;
      x+y = (the add of V).[x1,y1] by A1,RLVECT_1:def 3
       .= x1+y1 by RLVECT_1:def 3;
    hence (CtoR l).(x+y) = l.(x1+y1) by Def26
       .= l.x1+l.y1 by Def17
       .= (CtoR l).x+l.y1 by Def26
       .= (CtoR l).x+(CtoR l).y by Def26;
   end;
  end;

  definition
   let V be non empty VectSp of F_Complex;
   let l be homogeneous Functional of RealVS(V);
   cluster RtoC(l) -> Real_homogeneous;
   coherence
   proof
    let x be Vector of V;
    let r be Real;
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider x1=x as VECTOR of RealVS(V);
      [**r,0**]*x = (the Mult of RealVS(V)).(r,x) by Def22
       .= (the Mult of RealVS(V)).[r,x] by BINOP_1:def 1
       .= r*x1 by RLVECT_1:def 4;
    hence (RtoC l).([**r,0**]*x) = l.(r*x1) by Def25
       .= r*l.x1 by HAHNBAN:def 5
       .= r*(RtoC l).x by Def25;
   end;
  end;

  definition
   let V be non empty VectSp of F_Complex;
   let l be Real_homogeneous RFunctional of V;
   cluster CtoR(l) -> homogeneous;
   coherence
   proof
    let x be VECTOR of RealVS(V);
    let r be Real;
      the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    then reconsider x1=x as Vector of V;
      [**r,0**]*x1 = (the Mult of RealVS(V)).(r,x1) by Def22
       .= (the Mult of RealVS(V)).[r,x1] by BINOP_1:def 1
       .= r*x by RLVECT_1:def 4;
    hence (CtoR l).(r*x) = l.([**r,0**]*x1) by Def26
       .= r*l.x1 by Def18
       .= r*(CtoR l).x by Def26;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be RFunctional of V;
   func i-shift(l) -> RFunctional of V means :Def27:
    for v be Element of V holds
     it.v = l.(i_FC*v);
   existence
   proof
    deffunc F(Element of V) = l.(i_FC*$1);
    consider f be Function of the carrier of V,REAL such that
     A1: for v be Element of V holds
      f.v = F(v) from LambdaD;
    reconsider f as RFunctional of V;
    take f;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let F1,F2 be RFunctional of V such that
     A2: for v be Element of V holds
         F1.v = l.(i_FC*v) and
     A3: for v be Element of V holds
         F2.v = l.(i_FC*v);
      now let v be Element of V;
     thus F1.v = l.(i_FC*v) by A2
        .= F2.v by A3;
    end;
    hence F1 = F2 by FUNCT_2:113;
   end;
  end;

  definition
   let V be non empty VectSpStr over F_Complex;
   let l be Functional of RealVS(V);
   func prodReIm(l) -> Functional of V means :Def28:
    for v be Element of V holds
     it.v = [**(RtoC l).v,-(i-shift(RtoC l)).v**];
   existence
   proof
    deffunc F(Element of V) =
    [**(RtoC l).$1,-(i-shift(RtoC l)).$1**];
    consider f be Function of the carrier of V,the carrier of F_Complex
     such that
    A1: for v be Element of V holds
     f.v = F(v) from LambdaD;
    reconsider f as Functional of V;
    take f;
    thus thesis by A1;
   end;
   uniqueness
   proof
    let a,b be Functional of V;
    assume A2: for v be Element of V holds
     a.v = [**(RtoC l).v,-(i-shift(RtoC l)).v**];
    assume A3: for v be Element of V holds
     b.v = [**(RtoC l).v,-(i-shift(RtoC l)).v**];
      now let v be Element of V;
     thus a.v = [**(RtoC l).v,-(i-shift(RtoC l)).v**] by A2
             .= b.v by A3;
    end;
    hence a = b by FUNCT_2:113;
   end;
  end;

  theorem Th33:
   for V be non empty VectSp of F_Complex
   for l be linear-Functional of V holds
    projRe(l) is linear-Functional of RealVS(V)
   proof
    let V be non empty VectSp of F_Complex;
    let l be linear-Functional of V;
    A1: projRe(l) is additive
    proof
     let x,y be VECTOR of RealVS(V);
     A2: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x, y1=y as Vector of V;
       x+y = (the add of V).[x1,y1] by A2,RLVECT_1:def 3
        .= x1+y1 by RLVECT_1:def 3;
     hence (projRe(l)).(x+y) = Re(l.(x1+y1)) by Def23
        .= Re(l.x1+l.y1) by Def11
        .= Re(l.x1)+Re(l.y1) by Th16
        .= Re(l.x1)+(projRe(l)).y by Def23
        .= (projRe(l)).x+(projRe(l)).y by Def23;
    end;
      projRe(l) is homogeneous
    proof
     let x be VECTOR of RealVS(V);
     let r be Real;
       the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x as Vector of V;
       r*x = (the Mult of RealVS(V)).[r,x] by RLVECT_1:def 4
        .= (the Mult of RealVS(V)).(r,x) by BINOP_1:def 1
        .= [**r,0**]*x1 by Def22;
     hence (projRe(l)).(r*x) = Re(l.([**r,0**]*x1)) by Def23
        .= Re([**r,0**]*l.x1) by Def12
        .= Re [**r,0**] * Re (l.x1) - Im [**r,0**] * Im (l.x1) by Th17
        .= Re [**r,0**] * Re (l.x1) - 0 * Im (l.x1) by Th15
        .= r * Re (l.x1) by Th15
        .= r*(projRe(l)).x by Def23;
    end;
    hence thesis by A1;
   end;

  theorem
     for V be non empty VectSp of F_Complex
   for l be linear-Functional of V holds
    projIm(l) is linear-Functional of RealVS(V)
   proof
    let V be non empty VectSp of F_Complex;
    let l be linear-Functional of V;
    A1: projIm(l) is additive
    proof
     let x,y be VECTOR of RealVS(V);
     A2: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x, y1=y as Vector of V;
       x+y = (the add of V).[x1,y1] by A2,RLVECT_1:def 3
        .= x1+y1 by RLVECT_1:def 3;
     hence (projIm(l)).(x+y) = Im(l.(x1+y1)) by Def24
        .= Im(l.x1+l.y1) by Def11
        .= Im(l.x1)+Im(l.y1) by Th16
        .= Im(l.x1)+(projIm(l)).y by Def24
        .= (projIm(l)).x+(projIm(l)).y by Def24;
    end;
      projIm(l) is homogeneous
    proof
     let x be VECTOR of RealVS(V);
     let r be Real;
       the LoopStr of V = the LoopStr of RealVS(V) by Def22;
     then reconsider x1=x as Vector of V;
       r*x = (the Mult of RealVS(V)).[r,x] by RLVECT_1:def 4
        .= (the Mult of RealVS(V)).(r,x) by BINOP_1:def 1
        .= [**r,0**]*x1 by Def22;
     hence (projIm(l)).(r*x) = Im(l.([**r,0**]*x1)) by Def24
        .= Im([**r,0**]*l.x1) by Def12
        .= Re [**r,0**] * Im (l.x1) + Re (l.x1) * Im [**r,0**] by Th17
        .= Re [**r,0**] * Im (l.x1) + Re (l.x1) * 0 by Th15
        .= r * Im (l.x1) by Th15
        .= r*(projIm(l)).x by Def24;
    end;
    hence thesis by A1;
   end;

  theorem Th35:
   for V be non empty VectSp of F_Complex
   for l be linear-Functional of RealVS(V) holds
    prodReIm(l) is linear-Functional of V
   proof
    let V be non empty VectSp of F_Complex;
    let l be linear-Functional of RealVS(V);
    A1: prodReIm(l) is additive
    proof
     let x,y be Vector of V;
     thus (prodReIm(l)).(x+y) =
           [**(RtoC l).(x+y),-(i-shift(RtoC l)).(x+y)**] by Def28
        .= [**(RtoC l).(x+y),-(RtoC l).(i_FC*(x+y))**] by Def27
        .= [**(RtoC l).x+(RtoC l).y,-(RtoC l).(i_FC*(x+y))**] by Def17
        .= [**(RtoC l).x+(RtoC l).y,
              -(RtoC l).(i_FC*x+i_FC*y)**] by VECTSP_1:def 26
        .= [**(RtoC l).x+(RtoC l).y,
              -((RtoC l).(i_FC*x)+(RtoC l).(i_FC*y))**] by Def17
        .= [**(RtoC l).x+(RtoC l).y,
              -(RtoC l).(i_FC*x)+-(RtoC l).(i_FC*y)**] by XCMPLX_1:140
        .= [**(RtoC l).x,-(RtoC l).(i_FC*x)**] +
            [**(RtoC l).y,-(RtoC l).(i_FC*y)**] by Th10
        .= [**(RtoC l).x,-(i-shift(RtoC l)).x**] +
            [**(RtoC l).y,-(RtoC l).(i_FC*y)**] by Def27
        .= [**(RtoC l).x,-(i-shift(RtoC l)).x**] +
            [**(RtoC l).y,-(i-shift(RtoC l)).y**] by Def27
        .= (prodReIm(l)).x + [**(RtoC l).y,-(i-shift(RtoC l)).y**] by Def28
        .= (prodReIm(l)).x + (prodReIm(l)).y by Def28;
    end;
      prodReIm(l) is homogeneous
    proof
     let x be Vector of V;
     let r be Scalar of V;
     reconsider r1=r as Element of COMPLEX by COMPLFLD:def 1;
     A2: [**(RtoC l).x,-(RtoC l).(i_FC*x)**] =
         [*(RtoC l).x,-(RtoC l).(i_FC*x)*] by Def1;
     set a=Re r1,b=Im r1;
     A3: r1 = [*a,b*] by COMPLEX1:8;
     then A4: r = [**a,b**] by Def1;
     A5: a*((RtoC l).x)-b*(-(RtoC l).(i_FC*x)) =
         a*((RtoC l).x)+-b*(-(RtoC l).(i_FC*x)) by XCMPLX_0:def 8
      .= a*((RtoC l).x)+b*(RtoC l).(i_FC*x) by XCMPLX_1:179
      .= (RtoC l).([**a,0**]*x)+b*(RtoC l).(i_FC*x) by Def18
      .= (RtoC l).([**a,0**]*x)+(RtoC l).([**0,b**]*x) by Th29
      .= (RtoC l).([**a,0**]*x+[**0,b**]*x) by Def17
      .= (RtoC l).(([**a,0**]+[**0,b**])*x) by VECTSP_1:def 26
      .= (RtoC l).([**a+0,0+b**]*x) by Th10
      .= (RtoC l).(r*x) by A3,Def1;
     A6: x = (-1_ F_Complex)*(-1_ F_Complex)*x by Th9,VECTSP_1:def 26
      .= i_FC*(i_FC*(-1_ F_Complex))*x by Th8,VECTSP_1:def 16
      .= i_FC*((-1_ F_Complex)*i_FC*x) by VECTSP_1:def 26;
       -1_ F_Complex = -[*1,0*] by COMPLFLD:4,10,L1
      .= [*-Re [*1,0*],-Im [*1,0*]*] by COMPLEX1:def 11
      .= [*-1,-Im [*1,0*]*] by COMPLEX1:7
      .= [*-1,-0*] by COMPLEX1:7
      .= [**-1,0**] by Def1;
then A7: [**0,-b**]*(-1_ F_Complex) = [**0*-1-(-b)*0,0*0+(-b)*-1**] by Th11
      .=[**0,b*1**] by XCMPLX_1:177;
     A8: a*(-(RtoC l).(i_FC*x))+((RtoC l).x)*b =
 -a*(RtoC l).(i_FC*x)+b*(RtoC l).(i_FC*((-1_ F_Complex)*i_FC*x))
 by A6,XCMPLX_1:175
      .= -(RtoC l).([**a,0**]*(i_FC*x))+
         b*(RtoC l).(i_FC*((-1_ F_Complex)*i_FC*x)) by Def18
      .= -(RtoC l).([**a,0**]*(i_FC*x))+
         -(-b)*(RtoC l).(i_FC*((-1_ F_Complex)*i_FC*x)) by XCMPLX_1:179
      .= -(RtoC l).([**a,0**]*(i_FC*x))+
         -(RtoC l).([**0,-b**]*((-1_ F_Complex)*i_FC*x)) by Th29
      .= -(RtoC l).([**a,0**]*(i_FC*x))+
         -(RtoC l).([**0,-b**]*((-1_ F_Complex)*(i_FC*x))) by VECTSP_1:def 26
      .= -(RtoC l).([**a,0**]*(i_FC*x))+
         -(RtoC l).([**0,-b**]*(-1_ F_Complex)*(i_FC*x)) by VECTSP_1:def 26
      .= -((RtoC l).([**a,0**]*(i_FC*x))+(RtoC l).([**0,b**]*(i_FC*x)))
                                                               by A7,XCMPLX_1:
140
      .= -(RtoC l).([**a,0**]*(i_FC*x)+[**0,b**]*(i_FC*x)) by Def17
      .= -(RtoC l).(([**a,0**]+[**0,b**])*(i_FC*x)) by VECTSP_1:def 26
      .= -(RtoC l).([**a+0,0+b**]*(i_FC*x)) by Th10
      .= -(RtoC l).(i_FC*r*x) by A4,VECTSP_1:def 26;
     thus (prodReIm(l)).(r*x) =
           [**(RtoC l).(r*x),-(i-shift(RtoC l)).(r*x)**] by Def28
        .= [**(RtoC l).(r*x),-(RtoC l).(i_FC*(r*x))**] by Def27
        .= [**(RtoC l).(r*x),-(RtoC l).(i_FC*r*x)**] by VECTSP_1:def 26
        .= [*(RtoC l).(r*x),-(RtoC l).(i_FC*r*x)*] by Def1
        .= r1*[*(RtoC l).x,-(RtoC l).(i_FC*x)*] by A3,A5,A8,Th2
        .= r*[**(RtoC l).x,-(RtoC l).(i_FC*x)**] by A2,COMPLFLD:6
        .= r*[**(RtoC l).x,-(i-shift(RtoC l)).x**] by Def27
        .= r*(prodReIm(l)).x by Def28;
    end;
    hence thesis by A1;
   end;

  theorem :: Hahn Banach Theorem
     for V be non empty VectSp of F_Complex
   for p be Semi-Norm of V
   for M be Subspace of V
   for l be linear-Functional of M st
    for e be Vector of M for v be Vector of V st v=e holds |.l.e.| <= p.v
   ex L be linear-Functional of V st
    L|the carrier of M = l &
    for e be Vector of V holds |.L.e.| <= p.e
   proof
    let V be non empty VectSp of F_Complex;
    let p be Semi-Norm of V;
    let M be Subspace of V;
    let l be linear-Functional of M;
    assume A1: for e be Vector of M
           for v be Vector of V st v=e holds |.l.e.| <= p.v;
    reconsider RVSM = RealVS(M) as Subspace of RealVS(V) by Th30;
    reconsider p1=p as Banach-Functional of RealVS(V) by Th32;
    reconsider prRl = projRe(l) as linear-Functional of RVSM by Th33;
    A2: the LoopStr of V = the LoopStr of RealVS(V) by Def22;
    A3: the LoopStr of M = the LoopStr of RealVS(M) by Def22;
      for x be VECTOR of RVSM
     for v be VECTOR of RealVS(V) st x=v holds prRl.x <= p1.v
    proof
     let x be VECTOR of RVSM;
     let v be VECTOR of RealVS(V);
     reconsider x1=x as Vector of M by A3;
     reconsider v1=v as Vector of V by A2;
     assume x=v;
     then A4: |.l.x1.| <= p.v1 by A1;
       prRl.x = Re(l.x1) by Def23;
     then prRl.x <= |.l.x1.| by Th18;
     hence prRl.x <= p1.v by A4,AXIOMS:22;
    end;
    then consider L1 be linear-Functional of RealVS(V) such that
     A5: L1|the carrier of RVSM=prRl and
     A6: for e be VECTOR of RealVS(V) holds L1.e <= p1.e by HAHNBAN:35;
    reconsider L=prodReIm(L1) as linear-Functional of V by Th35;
    take L;
    reconsider tcM = the carrier of M as Subset of V
                                                           by VECTSP_4:def 2;
      now let x be Element of M;
       the carrier of M c= the carrier of V by VECTSP_4:def 2;
     then reconsider x2=x as Element of V by TARSKI:def 3;
     reconsider x1=x2,ix1=i_FC*x2 as Element of RealVS(V) by A2;
     A7: L1.x1 = (projRe(l)).x1 by A3,A5,FUNCT_1:72
        .= Re(l.x) by Def23;
     reconsider lx=l.x as Element of COMPLEX by COMPLFLD:def 1;
       lx = [*Re lx,Im lx*] by COMPLEX1:8;
     then A8: i_FC*l.x = [*0,1*]*[*Re lx,Im lx*] by Def2,COMPLEX1:def 8,
COMPLFLD:6
        .= [*0*Re lx-1*Im lx,0*Im lx+1*Re lx*] by Th2
        .= [*-Im lx,Re lx*] by XCMPLX_1:150;
     A9: i_FC*x = i_FC*x2 by VECTSP_4:22;
     then A10: L1.ix1 = (projRe(l)).ix1 by A3,A5,FUNCT_1:72
        .= Re(l.(i_FC*x)) by A9,Def23
        .= Re(i_FC*l.x) by Def12
        .= Re [*-Im lx,Re lx*] by A8,Def3
        .= -Im lx by COMPLEX1:7
        .= -Im(l.x) by Def4;
     consider lx1 be Element of COMPLEX such that
      A11: l.x = lx1 & Re(l.x) = Re lx1 by Def3;
     consider lx2 be Element of COMPLEX such that
      A12: l.x = lx2 & Im(l.x) = Im lx2 by Def4;
     thus (L|tcM).x = L.x by FUNCT_1:72
        .= [**(RtoC L1).x2,-(i-shift(RtoC L1)).x2**] by Def28
        .= [**(RtoC L1).x2,-(RtoC L1).(i_FC*x2)**] by Def27
        .= [**Re(l.x),-(RtoC L1).(i_FC*x2)**] by A7,Def25
        .= [**Re(l.x),--Im(l.x)**] by A10,Def25
        .= [*Re(l.x),Im(l.x)*] by Def1
        .= l.x by A11,A12,COMPLEX1:8;
    end;
    hence L|the carrier of M = l by FUNCT_2:113;
    let e be Vector of V;
    reconsider Le = L.e as Element of COMPLEX by COMPLFLD:def 1;
    reconsider Ledz = Le*'/[*|.Le.|,0*] as Element of F_Complex
                                                           by COMPLFLD:def 1;
    reconsider e1=e,Ledze=Ledz*e as VECTOR of RealVS(V) by A2;
    per cases;
     suppose A13: |.Le.| <> 0;
      A14: |.[*|.Le.|,0*].| = abs |.Le.| by Th4
         .= |.Le.| by Th1;
      A15: [*|.Le.|,0*] <> 0c by A13,ARYTM_0:12,L0;
      A16: |.Ledz.| = |.Le*'/[*|.Le.|,0*].| by COMPLFLD:def 3
         .= |.Le*'.|/|.[*|.Le.|,0*].| by A15,COMPLEX1:153
         .= |.Le.|/|.Le.| by A14,COMPLEX1:139
         .= 1 by A13,XCMPLX_1:60;
      A17: p1.Ledze = |.Ledz.|*p.e by Def19
         .= p.e by A16;
        [*|.Le.|,0*] = (Le*'/[*|.Le.|,0*])*Le by A13,Th5
         .= Ledz*L.e by COMPLFLD:6
         .= L.(Ledz*e) by Def12
         .= [**(RtoC L1).(Ledz*e),-(i-shift(RtoC L1)).(Ledz*e)**] by Def28
         .= [*(RtoC L1).(Ledz*e),-(i-shift(RtoC L1)).(Ledz*e)*] by Def1
         .= [*L1.Ledze,-(i-shift(RtoC L1)).(Ledz*e)*] by Def25;
      then L1.Ledze = |.Le.| by ARYTM_0:12
         .= |.L.e.| by COMPLFLD:def 3;
      hence |.L.e.| <= p.e by A6,A17;
     suppose |.Le.| = 0;
      then A18: |.L.e.| = 0 by COMPLFLD:def 3;
      A19: [**(RtoC L1).e,-(i-shift(RtoC L1)).e**] =
           [*(RtoC L1).e,-(i-shift(RtoC L1)).e*] by Def1;
        |.L.e.| = |.[**(RtoC L1).e,-(i-shift(RtoC L1)).e**].| by Def28
         .= |.[*(RtoC L1).e,-(i-shift(RtoC L1)).e*].| by A19,COMPLFLD:def 3;
      then [*(RtoC L1).e,-(i-shift(RtoC L1)).e*] = [*0,0*]
         by A18,COMPLEX1:131,L0;
      then (RtoC L1).e = 0 by ARYTM_0:12;
      then L1.e1 = 0 by Def25;
      hence |.L.e.| <= p.e by A6,A18;
   end;

Back to top