reserve x,y for object, X,Y,Z for set;
reserve a,b for Real;
reserve k for Element of NAT;
reserve V for RealLinearSpace;
reserve W1,W2,W3 for Subspace of V;
reserve v,v1,v2,u for VECTOR of V;
reserve A,B,C for Subset of V;
reserve T for finite Subset of V;
reserve L,L1,L2 for Linear_Combination of V;
reserve l for Linear_Combination of A;
reserve F,G,H for FinSequence of the carrier of V;
reserve f,g for Function of the carrier of V, REAL;
reserve p,q,r for FinSequence;
reserve M for non empty set;
reserve CF for Choice_Function of M;
reserve l0 for Linear_Combination of {}(the carrier of V);

theorem
  Lin(A \/ B) = Lin(A) + Lin(B)
proof
  now
    deffunc G(object)= 0;
    let v;
    assume v in Lin(A \/ B);
    then consider l being Linear_Combination of A \/ B such that
A1: v = Sum(l) by Th14;
    deffunc F(object)=l.$1;
    set D = Carrier(l) \ A;
    set C = Carrier(l) /\ A;
    defpred P[object] means $1 in C;
    defpred D[object] means $1 in D;
    now
      let x;
      assume x in the carrier of V;
      then reconsider v = x as VECTOR of V;
      f.v in REAL;
      hence x in C implies l.x in REAL;
      assume not x in C;
      thus 0 in REAL by XREAL_0:def 1;
    end;
    then
A2: for x being object st x in the carrier of V
   holds (P[x] implies F(x) in REAL) & (
    not P[x ] implies G(x) in REAL);
    consider f being Function of the carrier of V, REAL such that
A3: for x being object st x in the carrier of V
holds (P[x] implies f.x = F(x)) &
    (not P[x] implies f.x = G(x)) from FUNCT_2:sch 5 (A2);
    reconsider C as finite Subset of V;
    reconsider f as Element of Funcs(the carrier of V, REAL) by FUNCT_2:8;
    for u holds not u in C implies f.u = 0 by A3;
    then reconsider f as Linear_Combination of V by RLVECT_2:def 3;
A4: Carrier(f) c= C
    proof
      let x be object;
      assume x in Carrier(f);
      then
A5:   ex u st x = u & f.u <> 0;
      assume not x in C;
      hence thesis by A3,A5;
    end;
    C c= A by XBOOLE_1:17;
    then Carrier(f) c= A by A4;
    then reconsider f as Linear_Combination of A by RLVECT_2:def 6;
    now
      let x;
      assume x in the carrier of V;
      then reconsider v = x as VECTOR of V;
      g.v in REAL;
      hence x in D implies l.x in REAL;
      assume not x in D;
      thus 0 in REAL by XREAL_0:def 1;
    end;
    then
A6: for x being object st x in the carrier of V
holds (D[x] implies F(x) in REAL) & (
    not D[ x] implies G(x) in REAL);
    consider g being Function of the carrier of V, REAL such that
A7: for x being object st x in the carrier of V
holds (D[x] implies g.x = F(x)) &
    (not D[x] implies g.x = G(x)) from FUNCT_2:sch 5(A6);
    reconsider D as finite Subset of V;
    reconsider g as Element of Funcs(the carrier of V, REAL) by FUNCT_2:8;
    for u holds not u in D implies g.u = 0 by A7;
    then reconsider g as Linear_Combination of V by RLVECT_2:def 3;
A8: D c= B
    proof
      let x be object;
      assume x in D;
      then
A9:   x in Carrier(l) & not x in A by XBOOLE_0:def 5;
      Carrier(l) c= A \/ B by RLVECT_2:def 6;
      hence thesis by A9,XBOOLE_0:def 3;
    end;
    Carrier(g) c= D
    proof
      let x be object;
      assume x in Carrier(g);
      then
A10:  ex u st x = u & g.u <> 0;
      assume not x in D;
      hence thesis by A7,A10;
    end;
    then Carrier(g) c= B by A8;
    then reconsider g as Linear_Combination of B by RLVECT_2:def 6;
    l = f + g
    proof
      let v;
      now
        per cases;
        suppose
A11:      v in C;
A12:      now
            assume v in D;
            then not v in A by XBOOLE_0:def 5;
            hence contradiction by A11,XBOOLE_0:def 4;
          end;
          thus (f + g).v = f.v + g.v by RLVECT_2:def 10
            .= l.v + g.v by A3,A11
            .= l.v + 0 by A7,A12
            .= l.v;
        end;
        suppose
A13:      not v in C;
          now
            per cases;
            suppose
A14:          v in Carrier(l);
A15:          now
                assume not v in D;
                then not v in Carrier(l) or v in A by XBOOLE_0:def 5;
                hence contradiction by A13,A14,XBOOLE_0:def 4;
              end;
              thus (f + g). v = f.v + g.v by RLVECT_2:def 10
                .= 0 + g.v by A3,A13
                .= l.v by A7,A15;
            end;
            suppose
A16:          not v in Carrier(l);
              then
A17:          not v in D by XBOOLE_0:def 5;
A18:          not v in C by A16,XBOOLE_0:def 4;
              thus (f + g).v = f.v + g.v by RLVECT_2:def 10
                .= 0 + g.v by A3,A18
                .= 0 + 0 by A7,A17
                .= l.v by A16;
            end;
          end;
          hence thesis;
        end;
      end;
      hence thesis;
    end;
    then
A19: v = Sum(f) + Sum(g) by A1,Th1;
    Sum(f) in Lin(A) & Sum(g) in Lin(B) by Th14;
    hence v in Lin(A) + Lin(B) by A19,RLSUB_2:1;
  end;
  then
A20: Lin(A \/ B) is Subspace of Lin(A) + Lin(B) by RLSUB_1:29;
  Lin(A) is Subspace of Lin(A \/ B) & Lin(B) is Subspace of Lin(A \/ B) by Th20
,XBOOLE_1:7;
  then Lin(A) + Lin(B) is Subspace of Lin(A \/ B) by Lm6;
  hence thesis by A20,RLSUB_1:26;
end;
