reserve R for Ring,
  V for RightMod of R,
  a,b for Scalar of R,
  x,y for set,
  p,q ,r for FinSequence,
  i,k for Nat,
  u,v,v1,v2,v3,w for Vector of V,
  F,G,H for FinSequence of V,
  A,B for Subset of V,
  f for Function of V, R,
  S,T for finite Subset of V;
reserve L,L1,L2,L3 for Linear_Combination of V;
reserve l for Linear_Combination of A;
reserve RR for domRing;
reserve VV for RightMod of RR;
reserve LL for Linear_Combination of VV;
reserve aa for Scalar of RR;
reserve uu, vv for Vector of VV;
reserve R for domRing;
reserve V for RightMod of R;
reserve L,L1,L2 for Linear_Combination of V;
reserve a for Scalar of R;
reserve x for set;
reserve R for Ring;
reserve V for RightMod of R;
reserve v,v1,v2 for Vector of V;
reserve A,B for Subset of V;
reserve R for domRing;
reserve V for RightMod of R;
reserve v,u for Vector of V;
reserve A,B for Subset of V;
reserve l for Linear_Combination of A;
reserve f,g for Function of the carrier of V, the carrier of R;

theorem
  Lin(A \/ B) = Lin(A) + Lin(B)
proof
  now
    deffunc G(object)=0.R;
    let v;
    assume v in Lin(A \/ B);
    then consider l being Linear_Combination of A \/ B such that
A1: v = Sum(l) by Th67;
    deffunc F(object)=l.$1;
    set D = Carrier(l) \ A;
    set C = Carrier(l) /\ A;
    defpred P[object] means $1 in C;
    defpred C[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 the carrier of R;
      hence x in C implies l.x in the carrier of R;
      assume not x in C;
      thus 0.R in the carrier of R;
    end;
    then
A2: for x being object st x in the carrier of V
holds (P[x] implies F(x) in the
    carrier of R ) & (not P[x] implies G(x) in the carrier of R);
    consider f being Function of the carrier of V, the carrier of R 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, the carrier of R) by
FUNCT_2:8;
    for u holds not u in C implies f.u = 0.R by A3;
    then reconsider f as Linear_Combination of V by Def2;
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.R;
      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 Def5;
    now
      let x;
      assume x in the carrier of V;
      then reconsider v = x as Vector of V;
      g.v in the carrier of R;
      hence x in D implies l.x in the carrier of R;
      assume not x in D;
      thus 0.R in the carrier of R;
    end;
    then
A6: for x being object st x in the carrier of V
holds (C[x] implies F(x) in the
    carrier of R) & (not C[x] implies G(x) in the carrier of R);
    consider g being Function of the carrier of V, the carrier of R such that
A7: for x being object st x in the carrier of V
holds (C[x] implies g.x = F(x)) &
    (not C[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, the carrier of R) by
FUNCT_2:8;
    for u holds not u in D implies g.u = 0.R by A7;
    then reconsider g as Linear_Combination of V by Def2;
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 Def5;
      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.R;
      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 Def5;
    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 Def9
            .= l.v + g.v by A3,A11
            .= l.v + 0.R by A7,A12
            .= l.v by RLVECT_1:4;
        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 Def9
                .= 0.R + g.v by A3,A13
                .= g.v by RLVECT_1:4
                .= 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 Def9
                .= 0.R + g.v by A3,A18
                .= 0.R + 0.R by A7,A17
                .= 0.R by RLVECT_1:4
                .= l.v by A16;
            end;
          end;
          hence thesis;
        end;
      end;
      hence thesis;
    end;
    then
A19: v = Sum(f) + Sum(g) by A1,Th58;
    Sum(f) in Lin(A) & Sum(g) in Lin(B) by Th67;
    hence v in Lin(A) + Lin(B) by A19,RMOD_3:1;
  end;
  then
A20: Lin(A \/ B) is Submodule of Lin(A) + Lin(B) by RMOD_2:28;
  Lin(A) is Submodule of Lin(A \/ B) & Lin(B) is Submodule of Lin(A \/ B)
  by Th73,XBOOLE_1:7;
  then Lin(A) + Lin(B) is Submodule of Lin(A \/ B) by RMOD_3:35;
  hence thesis by A20,RMOD_2:25;
end;
