reserve p,q,r for FinSequence,
  x,y,y1,y2 for set,
  i,k for Element of NAT,
  GF for add-associative right_zeroed right_complementable Abelian associative
  well-unital distributive non empty doubleLoopStr,
  V for Abelian
  add-associative right_zeroed right_complementable vector-distributive
  scalar-distributive scalar-associative scalar-unital
   non empty ModuleStr over GF,
  u,v,v1,v2,v3,w for Element of V,
  a,b for Element of GF,
  F,G ,H for FinSequence of V,
  A,B for Subset of V,
  f for Function of V, GF;
reserve L,L1,L2,L3 for Linear_Combination of V;
reserve l for Linear_Combination of A;

theorem
  for GF being Field, V being VectSp of GF, L being Linear_Combination
  of V, a being Element of GF holds Sum(a * L) = a * Sum(L)
proof
  let GF be Field, V be VectSp of GF, L be Linear_Combination of V, a be
  Element of GF;
  per cases;
  suppose
A1: a <> 0.GF;
    set l = a * L;
    consider F being FinSequence of the carrier of V such that
A2: F is one-to-one and
A3: rng F = Carrier(a * L) and
A4: Sum(a * L) = Sum((a * L) (#) F) by Def6;
    consider G being FinSequence of the carrier of V such that
A5: G is one-to-one and
A6: rng G = Carrier(L) and
A7: Sum(L) = Sum(L (#) G) by Def6;
A8: len G = len F by A1,A2,A3,A5,A6,Th29,FINSEQ_1:48;
    set f = (a * L) (#) F;
    set g = L (#) G;
    deffunc F(Nat) = F <- (G.$1);
    consider P being FinSequence such that
A9: len P = len F and
A10: for k be Nat st k in dom P holds P.k = F(k) from FINSEQ_1:sch 2;
A11: Carrier(l) = Carrier(L) by A1,Th29;
A12: rng P c= Seg(len F)
    proof
      let x be object;
      assume x in rng P;
      then consider y being object such that
A13:  y in dom P and
A14:  P.y = x by FUNCT_1:def 3;
      reconsider y as Element of NAT by A13,FINSEQ_3:23;
      y in Seg(len F) by A9,A13,FINSEQ_1:def 3;
      then y in dom G by A8,FINSEQ_1:def 3;
      then G.y in rng F by A3,A6,A11,FUNCT_1:def 3;
      then
A15:  F just_once_values G.y by A2,FINSEQ_4:8;
      P.y = F <- (G.y) by A10,A13;
      then P.y in dom F by A15,FINSEQ_4:def 3;
      hence thesis by A14,FINSEQ_1:def 3;
    end;
A16: now
      let x be object;
      thus x in dom G implies x in dom P & P.x in dom F
      proof
        assume x in dom G;
        then x in Seg(len P) by A9,A8,FINSEQ_1:def 3;
        hence x in dom P by FINSEQ_1:def 3;
        then P.x in rng P by FUNCT_1:def 3;
        then P.x in Seg(len F) by A12;
        hence thesis by FINSEQ_1:def 3;
      end;
      assume that
A17:  x in dom P and
      P.x in dom F;
      x in Seg(len P) by A17,FINSEQ_1:def 3;
      hence x in dom G by A9,A8,FINSEQ_1:def 3;
    end;
A18: dom P = Seg len F by A9,FINSEQ_1:def 3;
    now
      let x be object;
      assume
A19:  x in dom G;
      then reconsider n = x as Element of NAT by FINSEQ_3:23;
      G.n in rng F by A3,A6,A11,A19,FUNCT_1:def 3;
      then
A20:  F just_once_values G.n by A2,FINSEQ_4:8;
      n in Seg(len F) by A8,A19,FINSEQ_1:def 3;
      then F.(P.n) = F.(F <- (G.n)) by A10,A18
        .= G.n by A20,FINSEQ_4:def 3;
      hence G.x = F.(P.x);
    end;
    then
A21: G = F * P by A16,FUNCT_1:10;
    Seg(len F) c= rng P
    proof
      set f = F" * G;
      let x be object;
      assume
A22:  x in Seg(len F);
      dom(F") = rng G by A2,A3,A6,A11,FUNCT_1:33;
      then
A23:  rng f = rng(F") by RELAT_1:28
        .= dom F by A2,FUNCT_1:33;
A24:  rng P c= dom F by A12,FINSEQ_1:def 3;
      f = F " * F * P by A21,RELAT_1:36
        .= id(dom F) * P by A2,FUNCT_1:39
        .= P by A24,RELAT_1:53;
      hence thesis by A22,A23,FINSEQ_1:def 3;
    end;
    then
A25: Seg(len F) = rng P by A12;
A26: dom P = Seg(len F) by A9,FINSEQ_1:def 3;
    then
A27: P is one-to-one by A25,FINSEQ_4:60;
   reconsider P as Function of Seg(len F), Seg(len F) by A12,A26,FUNCT_2:2;
    reconsider P as Permutation of Seg(len F) by A25,A27,FUNCT_2:57;
A28: len f = len F by Def5;
    then dom f = Seg len F by FINSEQ_1:def 3;
    then reconsider P as Permutation of dom f;
    reconsider Fp = f * P as FinSequence of the carrier of V by FINSEQ_2:47;
A29: len Fp = len f by FINSEQ_2:44;
    then
A30: len Fp = len g by A8,A28,Def5;
A31: now
      let k be Nat;
      let v be Vector of V;
      assume that
A32:  k in dom g and
A33:  v = g.k;
A34:  k in Seg len g by A32,FINSEQ_1:def 3;
      then
A35:  k in dom P by A9,A28,A29,A30,FINSEQ_1:def 3;
A36:  k in dom G by A8,A28,A29,A30,A34,FINSEQ_1:def 3;
      then G.k in rng G by FUNCT_1:def 3;
      then F just_once_values G.k by A2,A3,A6,A11,FINSEQ_4:8;
      then
A37:  F <- (G.k) in dom F by FINSEQ_4:def 3;
      then reconsider i = F <- (G.k) as Element of NAT by FINSEQ_3:23;
A38:  G/.k = G.k by A36,PARTFUN1:def 6
        .= F.(P.k) by A21,A35,FUNCT_1:13
        .= F.i by A10,A18,A28,A29,A30,A34
        .= F/.i by A37,PARTFUN1:def 6;
      i in Seg(len f) by A28,A37,FINSEQ_1:def 3;
      then
A39:  i in dom f by FINSEQ_1:def 3;
      thus Fp.k = f.(P.k) by A35,FUNCT_1:13
        .= f.(F <- (G.k)) by A10,A18,A28,A29,A30,A34
        .= l.(F/.i) * F/.i by A39,Def5
        .= a * L.(F/.i) * F/.i by Def9
        .= a * (L.(F/.i) * F/.i) by VECTSP_1:def 16
        .= a * v by A32,A33,A38,Def5;
    end;
    Sum(Fp) = Sum(f) & dom Fp = dom g by A30,FINSEQ_3:29,RLVECT_2:7;
    hence thesis by A4,A7,A30,A31,RLVECT_2:66;
  end;
  suppose
A40: a = 0.GF;
    hence Sum(a * L) = Sum(ZeroLC(V)) by Th30
      .= 0.V by Lm1
      .= a * Sum(L) by A40,VECTSP_1:14;
  end;
end;
