 reserve x, y, y1, y2 for set;
 reserve V for Z_Module;
 reserve u, v, w for Vector of V;
 reserve F, G, H, I for FinSequence of V;
 reserve W, W1, W2, W3 for Submodule of V;
 reserve KL1, KL2 for Linear_Combination of V;
 reserve X for Subset of V;

theorem
  for L being Linear_Combination of V for F being FinSequence of V holds
  ex K being Linear_Combination of V st
  Carrier(K) = rng F /\ Carrier(L) & L (#) F = K (#) F :::by VECTSP_9:4;
  proof
    let L be Linear_Combination of V, F be FinSequence of V;
    defpred P[object, object] means $1 is Vector of V implies
    ($1 in rng F & $2 = L.$1) or (not $1 in rng F & $2 = 0);
    reconsider R = rng F as finite Subset of V;
    A1: for x being object st x in the carrier of V
      ex y being object st y in INT & P[x, y]
    proof
      let x be object;
      assume x in the carrier of V;
      then reconsider x9 = x as Vector of V;
      per cases;
      suppose
        A2: x in rng F;
        L.x9 in INT;
        hence thesis by A2;
      end;
      suppose
        A3: not x in rng F;
        thus thesis by A3;
      end;
    end;
    ex K being Function of the carrier of V, INT st
    for x being object st x in the
    carrier of V holds P[x, K.x] from FUNCT_2:sch 1(A1);
    then consider K being Function of the carrier of V, INT such that
    A4: for x being object st x in the carrier of V holds P[x, K.x];
    A5:
    now
      let v be Vector of V;
      assume
      A6: not v in R /\ Carrier(L);
      per cases by A6,XBOOLE_0:def 4;
      suppose
        not v in R;
        hence K.v = 0 by A4;
      end;
      suppose
        not v in Carrier(L);
        then L.v = 0;
        hence K.v = 0 by A4;
      end;
    end;
    reconsider K as Element of Funcs(the carrier of V, INT) by FUNCT_2:8;
    reconsider K as Linear_Combination of V by A5,VECTSP_6:def 1;
    now
      let v be object;
      assume
      A7: v in rng F /\ Carrier(L);
      then reconsider v9= v as Vector of V;
      v in Carrier(L) by A7,XBOOLE_0:def 4;
      then
      A8: L.v9 <> 0 by ZMODUL02:8;
      v in R by A7,XBOOLE_0:def 4;
      then K.v9 = L.v9 by A4;
      hence v in Carrier(K) by A8;
    end;
    then
    A9: rng F /\ Carrier(L) c= Carrier(K);
    take K;
    A10: L (#) F = K (#) F
    proof
      set p = L (#) F, q = K (#) F;
      A11: len p = len F by VECTSP_6:def 5;
      len q = len F by VECTSP_6:def 5;
      then
      A12: dom p = dom q by A11,FINSEQ_3:29;
      A13: dom p = dom F by A11,FINSEQ_3:29;
      now
        let k be Nat;
        set u = F/.k;
        A14:  P[u, K.u] by A4;
        assume
        A15:  k in dom p;
        then F/.k = F.k & p.k = L.u * u by A13,PARTFUN1:def 6,VECTSP_6:def 5;
        hence p.k = q.k by A12,A13,A15,A14,FUNCT_1:def 3,VECTSP_6:def 5;
      end;
      hence thesis by A12,FINSEQ_1:13;
    end;
    now
      let v be object;
      assume v in Carrier(K);
      then ex v9 being Vector of V st v9= v & K.v9 <> 0;
      hence v in rng F /\ Carrier(L) by A5;
    end;
    then Carrier(K) c= rng F /\ Carrier(L);
    hence thesis by A9,A10,XBOOLE_0:def 10;
  end;
