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 Th44:
  Sum(L1 + L2) = Sum(L1) + Sum(L2)
proof
  set A = Carrier(L1 + L2) \/ Carrier(L1) \/ Carrier(L2);
  set C1 = A \ Carrier(L1);
  consider p such that
A1: rng p = C1 and
A2: p is one-to-one by FINSEQ_4:58;
  reconsider p as FinSequence of the carrier of V by A1,FINSEQ_1:def 4;
A3: A = Carrier(L1) \/ (Carrier(L1 + L2) \/ Carrier(L2)) by XBOOLE_1:4;
  set C3 = A \ Carrier(L1 + L2);
  consider r such that
A4: rng r = C3 and
A5: r is one-to-one by FINSEQ_4:58;
  reconsider r as FinSequence of the carrier of V by A4,FINSEQ_1:def 4;
A6: A = Carrier(L1 + L2) \/ (Carrier(L1) \/ Carrier(L2)) by XBOOLE_1:4;
  set C2 = A \ Carrier(L2);
  consider q such that
A7: rng q = C2 and
A8: q is one-to-one by FINSEQ_4:58;
  reconsider q as FinSequence of the carrier of V by A7,FINSEQ_1:def 4;
  consider F such that
A9: F is one-to-one and
A10: rng F = Carrier(L1 + L2) and
A11: Sum((L1 + L2) (#) F) = Sum(L1 + L2) by Def6;
  set FF = F ^ r;
  consider G such that
A12: G is one-to-one and
A13: rng G = Carrier(L1) and
A14: Sum(L1 (#) G) = Sum(L1) by Def6;
  rng FF = rng F \/ rng r by FINSEQ_1:31;
  then rng FF = Carrier(L1 + L2) \/ A by A10,A4,XBOOLE_1:39;
  then
A15: rng FF = A by A6,XBOOLE_1:7,12;
  set GG = G ^ p;
  rng GG = rng G \/ rng p by FINSEQ_1:31;
  then rng GG = Carrier(L1) \/ A by A13,A1,XBOOLE_1:39;
  then
A16: rng GG = A by A3,XBOOLE_1:7,12;
  rng F misses rng r
  proof
    set x = the Element of rng F /\ rng r;
    assume not thesis;
    then rng F /\ rng r <> {};
    then x in Carrier(L1 + L2) & x in C3 by A10,A4,XBOOLE_0:def 4;
    hence thesis by XBOOLE_0:def 5;
  end;
  then
A17: FF is one-to-one by A9,A5,FINSEQ_3:91;
  rng G misses rng p
  proof
    set x = the Element of rng G /\ rng p;
    assume not thesis;
    then rng G /\ rng p <> {};
    then x in Carrier(L1) & x in C1 by A13,A1,XBOOLE_0:def 4;
    hence thesis by XBOOLE_0:def 5;
  end;
  then
A18: GG is one-to-one by A12,A2,FINSEQ_3:91;
  then
A19: len GG = len FF by A17,A16,A15,FINSEQ_1:48;
  deffunc F(Nat) = FF <- (GG.$1);
  consider P being FinSequence such that
A20: len P = len FF and
A21: for k be Nat st k in dom P holds P.k = F(k) from FINSEQ_1:sch 2;
A22: dom P = Seg len FF by A20,FINSEQ_1:def 3;
A23: now
    let x be object;
    assume
A24: x in dom GG;
    then reconsider n = x as Element of NAT by FINSEQ_3:23;
    GG.n in rng FF by A16,A15,A24,FUNCT_1:def 3;
    then
A25: FF just_once_values GG.n by A17,FINSEQ_4:8;
    n in Seg(len FF) by A19,A24,FINSEQ_1:def 3;
    then FF.(P.n) = FF.(FF <- (GG.n)) by A21,A22
      .= GG.n by A25,FINSEQ_4:def 3;
    hence GG.x = FF.(P.x);
  end;
A26: rng P c= dom FF
  proof
    let x be object;
    assume x in rng P;
    then consider y being object such that
A27: y in dom P and
A28: P.y = x by FUNCT_1:def 3;
    reconsider y as Element of NAT by A27,FINSEQ_3:23;
    y in dom GG by A19,A20,A27,FINSEQ_3:29;
    then GG.y in rng FF by A16,A15,FUNCT_1:def 3;
    then
A29: FF just_once_values GG.y by A17,FINSEQ_4:8;
    P.y = FF <- (GG.y) by A21,A27;
    hence thesis by A28,A29,FINSEQ_4:def 3;
  end;
  now
    let x be object;
    thus x in dom GG implies x in dom P & P.x in dom FF
    proof
      assume x in dom GG;
      then x in Seg(len P) by A19,A20,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;
      hence thesis by A26;
    end;
    assume that
A30: x in dom P and
    P.x in dom FF;
    x in Seg(len P) by A30,FINSEQ_1:def 3;
    hence x in dom GG by A19,A20,FINSEQ_1:def 3;
  end;
  then
A31: GG = FF * P by A23,FUNCT_1:10;
  dom FF c= rng P
  proof
    set f = FF" * GG;
    let x be object;
    assume
A32: x in dom FF;
    dom(FF") = rng GG by A17,A16,A15,FUNCT_1:33;
    then
A33: rng f = rng(FF") by RELAT_1:28
      .= dom FF by A17,FUNCT_1:33;
    f = FF " * FF * P by A31,RELAT_1:36
      .= id(dom FF) * P by A17,FUNCT_1:39
      .= P by A26,RELAT_1:53;
    hence thesis by A32,A33;
  end;
  then
A34: dom FF = rng P by A26;
A35: len r = len((L1 + L2) (#) r) by Def5;
  now
    let k be Nat;
    assume
A36: k in dom r;
    then r/.k = r.k by PARTFUN1:def 6;
    then r/.k in C3 by A4,A36,FUNCT_1:def 3;
    then
A37: not r/.k in Carrier((L1 + L2)) by XBOOLE_0:def 5;
    k in dom((L1 + L2) (#) r) by A35,A36,FINSEQ_3:29;
    then ((L1 + L2) (#) r).k = (L1 + L2).(r/.k) * r/.k by Def5;
    hence ((L1 + L2) (#) r).k = 0.GF * r/.k by A37;
  end;
  then
A38: Sum((L1 + L2) (#) r) = 0.GF * Sum(r) by A35,RLVECT_2:67
    .= 0.V by VECTSP_1:14;
A39: len p = len(L1 (#) p) by Def5;
  now
    let k be Nat;
    assume
A40: k in dom p;
    then p/.k = p.k by PARTFUN1:def 6;
    then p/.k in C1 by A1,A40,FUNCT_1:def 3;
    then
A41: not p/.k in Carrier(L1) by XBOOLE_0:def 5;
    k in dom(L1 (#) p) by A39,A40,FINSEQ_3:29;
    then (L1 (#) p).k = L1.(p/.k) * p/.k by Def5;
    hence (L1 (#) p).k = 0.GF * p/.k by A41;
  end;
  then
A42: Sum(L1 (#) p) = 0.GF * Sum(p) by A39,RLVECT_2:67
    .= 0.V by VECTSP_1:14;
A43: len q = len(L2 (#) q) by Def5;
  now
    let k be Nat;
    assume
A44: k in dom q;
    then q/.k = q.k by PARTFUN1:def 6;
    then q/.k in C2 by A7,A44,FUNCT_1:def 3;
    then
A45: not q/.k in Carrier(L2) by XBOOLE_0:def 5;
    k in dom(L2 (#) q) by A43,A44,FINSEQ_3:29;
    then (L2 (#) q).k = L2.(q/.k) * q/.k by Def5;
    hence (L2 (#) q).k = 0.GF * q/.k by A45;
  end;
  then
A46: Sum(L2 (#) q) = 0.GF * Sum(q) by A43,RLVECT_2:67
    .= 0.V by VECTSP_1:14;
  set g = L1 (#) GG;
A47: len g = len GG by Def5;
  then
A48: Seg len GG = dom g by FINSEQ_1:def 3;
  set f = (L1 + L2) (#) FF;
  consider H such that
A49: H is one-to-one and
A50: rng H = Carrier(L2) and
A51: Sum(L2 (#) H) = Sum(L2) by Def6;
  set HH = H ^ q;
  rng H misses rng q
  proof
    set x = the Element of rng H /\ rng q;
    assume not thesis;
    then rng H /\ rng q <> {};
    then x in Carrier(L2) & x in C2 by A50,A7,XBOOLE_0:def 4;
    hence thesis by XBOOLE_0:def 5;
  end;
  then
A52: HH is one-to-one by A49,A8,FINSEQ_3:91;
  rng HH = rng H \/ rng q by FINSEQ_1:31;
  then rng HH = Carrier(L2) \/ A by A50,A7,XBOOLE_1:39;
  then
A53: rng HH = A by XBOOLE_1:7,12;
  then
A54: len GG = len HH by A52,A18,A16,FINSEQ_1:48;
  deffunc F(Nat) = HH <- (GG.$1);
  consider R being FinSequence such that
A55: len R = len HH and
A56: for k be Nat st k in dom R holds R.k = F(k) from FINSEQ_1:sch 2;
A57: dom R = Seg len HH by A55,FINSEQ_1:def 3;
A58: now
    let x be object;
    assume
A59: x in dom GG;
    then reconsider n = x as Element of NAT by FINSEQ_3:23;
    GG.n in rng HH by A16,A53,A59,FUNCT_1:def 3;
    then
A60: HH just_once_values GG.n by A52,FINSEQ_4:8;
    n in Seg(len HH) by A54,A59,FINSEQ_1:def 3;
    then HH.(R.n) = HH.(HH <- (GG.n)) by A56,A57
      .= GG.n by A60,FINSEQ_4:def 3;
    hence GG.x = HH.(R.x);
  end;
A61: rng R c= dom HH
  proof
    let x be object;
    assume x in rng R;
    then consider y being object such that
A62: y in dom R and
A63: R.y = x by FUNCT_1:def 3;
    reconsider y as Element of NAT by A62,FINSEQ_3:23;
    y in dom GG by A54,A55,A62,FINSEQ_3:29;
    then GG.y in rng HH by A16,A53,FUNCT_1:def 3;
    then
A64: HH just_once_values GG.y by A52,FINSEQ_4:8;
    R.y = HH <- (GG.y) by A56,A62;
    hence thesis by A63,A64,FINSEQ_4:def 3;
  end;
  now
    let x be object;
    thus x in dom GG implies x in dom R & R.x in dom HH
    proof
      assume x in dom GG;
      then x in Seg(len R) by A54,A55,FINSEQ_1:def 3;
      hence x in dom R by FINSEQ_1:def 3;
      then R.x in rng R by FUNCT_1:def 3;
      hence thesis by A61;
    end;
    assume that
A65: x in dom R and
    R.x in dom HH;
    x in Seg(len R) by A65,FINSEQ_1:def 3;
    hence x in dom GG by A54,A55,FINSEQ_1:def 3;
  end;
  then
A66: GG = HH * R by A58,FUNCT_1:10;
  dom HH c= rng R
  proof
    set f = HH" * GG;
    let x be object;
    assume
A67: x in dom HH;
    dom(HH") = rng GG by A52,A16,A53,FUNCT_1:33;
    then
A68: rng f = rng(HH") by RELAT_1:28
      .= dom HH by A52,FUNCT_1:33;
    f = HH " * HH * R by A66,RELAT_1:36
      .= id(dom HH) * R by A52,FUNCT_1:39
      .= R by A61,RELAT_1:53;
    hence thesis by A67,A68;
  end;
  then
A69: dom HH = rng R by A61;
  set h = L2 (#) HH;
A70: Sum(h) = Sum((L2 (#) H) ^ (L2 (#) q)) by Th13
    .= Sum(L2 (#) H) + 0.V by A46,RLVECT_1:41
    .= Sum(L2 (#) H) by RLVECT_1:4;
A71: Sum(g) = Sum((L1 (#) G) ^ (L1 (#) p)) by Th13
    .= Sum(L1 (#) G) + 0.V by A42,RLVECT_1:41
    .= Sum(L1 (#) G) by RLVECT_1:4;
A72: dom P = dom FF by A20,FINSEQ_3:29;
  then
A73: P is one-to-one by A34,FINSEQ_4:60;
A74: dom R = dom HH by A55,FINSEQ_3:29;
  then
A75: R is one-to-one by A69,FINSEQ_4:60;
  reconsider R as Function of dom HH, dom HH by A61,A74,FUNCT_2:2;
  reconsider R as Permutation of dom HH by A69,A75,FUNCT_2:57;
A76: len h = len HH by Def5;
  then dom h = dom HH by FINSEQ_3:29;
  then reconsider R as Permutation of dom h;
  reconsider Hp = h * R as FinSequence of the carrier of V by FINSEQ_2:47;
A77: len Hp = len GG by A54,A76,FINSEQ_2:44;
  reconsider P as Function of dom FF, dom FF by A26,A72,FUNCT_2:2;
  reconsider P as Permutation of dom FF by A34,A73,FUNCT_2:57;
A78: len f = len FF by Def5;
  then dom f = dom FF by FINSEQ_3:29;
  then reconsider P as Permutation of dom f;
  reconsider Fp = f * P as FinSequence of the carrier of V by FINSEQ_2:47;
A79: Sum(f) = Sum(((L1 + L2) (#) F) ^ ((L1 + L2) (#) r)) by Th13
    .= Sum((L1 + L2) (#) F) + 0.V by A38,RLVECT_1:41
    .= Sum((L1 + L2) (#) F) by RLVECT_1:4;
  deffunc F(Nat) = g/.$1 + Hp/.$1;
  consider I being FinSequence such that
A80: len I = len GG and
A81: for k be Nat st k in dom I holds I.k = F(k) from FINSEQ_1:sch 2;
A82: dom I = Seg len GG by A80,FINSEQ_1:def 3;
  then
A83: for k be Nat st k in Seg(len GG) holds I.k = F(k) by A81;
  rng I c= the carrier of V
  proof
    let x be object;
    assume x in rng I;
    then consider y being object such that
A84: y in dom I and
A85: I.y = x by FUNCT_1:def 3;
    reconsider y as Element of NAT by A84,FINSEQ_3:23;
    I.y = g/.y + Hp/.y by A81,A84;
    hence thesis by A85;
  end;
  then reconsider I as FinSequence of the carrier of V by FINSEQ_1:def 4;
A86: len Fp = len I by A19,A78,A80,FINSEQ_2:44;
A87: now
    let x be object;
    assume
A88: x in Seg(len I);
    then reconsider k = x as Element of NAT;
A89: x in dom Hp by A80,A77,A88,FINSEQ_1:def 3;
    then
A90: Hp/.k = (h * R).k by PARTFUN1:def 6
      .= h.(R.k) by A89,FUNCT_1:12;
    set v = GG/.k;
    x in dom Fp by A86,A88,FINSEQ_1:def 3;
    then
A91: Fp.k = f.(P.k) by FUNCT_1:12;
A92: x in dom HH by A54,A80,A88,FINSEQ_1:def 3;
    then R.k in dom R by A69,A74,FUNCT_1:def 3;
    then reconsider j = R.k as Element of NAT by FINSEQ_3:23;
A93: x in dom GG by A80,A88,FINSEQ_1:def 3;
    then
A94: HH.j = GG.k by A58
      .= GG/.k by A93,PARTFUN1:def 6;
A95: dom FF = dom GG by A19,FINSEQ_3:29;
    then P.k in dom P by A34,A72,A93,FUNCT_1:def 3;
    then reconsider l = P.k as Element of NAT by FINSEQ_3:23;
A96: FF.l = GG.k by A23,A93
      .= GG/.k by A93,PARTFUN1:def 6;
    R.k in dom HH by A69,A74,A92,FUNCT_1:def 3;
    then
A97: h.j = L2.v * v by A94,Th8;
    P.k in dom FF by A34,A72,A93,A95,FUNCT_1:def 3;
    then
A98: f.l = (L1 + L2).v * v by A96,Th8
      .= (L1.v + L2.v) * v by Th22
      .= L1.v * v + L2.v * v by VECTSP_1:def 15;
A99: x in dom g by A80,A47,A88,FINSEQ_1:def 3;
    then g/.k = g.k by PARTFUN1:def 6
      .= L1.v * v by A99,Def5;
    hence I.x = Fp.x by A80,A81,A82,A88,A90,A97,A91,A98;
  end;
  dom I = Seg(len I) & dom Fp = Seg(len I) by A86,FINSEQ_1:def 3;
  then
A100: I = Fp by A87;
  Sum(Fp) = Sum(f) & Sum(Hp) = Sum(h) by RLVECT_2:7;
  hence thesis by A11,A14,A51,A71,A70,A79,A80,A83,A77,A47,A100,A48,RLVECT_2:2;
end;
