reserve V,W for Z_Module;
reserve T for linear-transformation of V,W;
reserve T for linear-transformation of V,W;
reserve l for Linear_Combination of V;
reserve V,W for Z_Module;
reserve l for Linear_Combination of V;
reserve T for linear-transformation of V,W;

theorem
  for V be free Z_Module,
  A,B being Subset of V st A c= B & B is Basis of V holds
  V is_the_direct_sum_of Lin A, Lin (B \ A)
  proof
    let V be free Z_Module, A,B be Subset of V such that
    A1: A c= B and
    A2: B is Basis of V;
    A3: (Lin A) /\ (Lin (B \ A)) = (0).V
    proof
      set U = (Lin A) /\ (Lin (B \ A));
      reconsider W = (0).V as strict Submodule of U by ZMODUL01:54;
      for v being Element of U holds v in W
      proof
        let v be Element of U;
        A4: B is linearly-independent by A2,VECTSP_7:def 3;
        A5: v in U;
        then v in Lin A by ZMODUL01:94;
        then consider l being Linear_Combination of A such that
        A6: v = Sum l by ZMODUL02:64;
        v in Lin (B \ A) by A5,ZMODUL01:94;
        then consider m being Linear_Combination of B \ A such that
        A7: v = Sum m by ZMODUL02:64;
        A8: 0.V = (Sum l) - (Sum m) by A6,A7,VECTSP_1:19
        .= Sum (l - m) by ZMODUL02:55;
        A9: Carrier (l - m) c= (Carrier l) \/ (Carrier m) & A \/ (B \ A) = B
        by A1,XBOOLE_1:45,ZMODUL02:40;
        A10: Carrier l c= A & Carrier m c= B \ A by VECTSP_6:def 4;
        then (Carrier l) \/ (Carrier m) c= A \/ (B \ A) by XBOOLE_1:13;
        then Carrier (l - m) c= B by A9;
        then reconsider n = l - m as
        Linear_Combination of B by VECTSP_6:def 4;
        A misses (B \ A) by XBOOLE_1:79;
        then Carrier n = (Carrier l) \/ (Carrier m) by A10,Th32,XBOOLE_1:64;
        then Carrier l = {} by A4,A8;
        then l = ZeroLC(V) by VECTSP_6:def 3;
        then Sum l = 0.V by ZMODUL02:19;
        hence thesis by A6,ZMODUL02:66;
      end;
      hence thesis by ZMODUL01:149;
    end;
    (Omega).V = (Lin A) + (Lin (B \ A))
    proof
      set U = (Lin A) + (Lin (B \ A));
      A11: [#]V c= [#]U
      proof
        let v be object;
        assume v in [#]V;
        then reconsider v as Element of V;
        v in Lin B by A2,ZMODUL03:14;
        then consider l being Linear_Combination of B such that
        A12: v = Sum l by ZMODUL02:64;
        set n = l!(B\A);
        set m = l!A;
        A13: l = m + n by A1,Th27;
        ex v1,v2 being Element of V st v1 in Lin A & v2 in Lin (B \ A) & v
        = v1 + v2
        proof
          take Sum m, Sum n;
          thus thesis by A12,A13,ZMODUL02:52,ZMODUL02:64;
        end;
        then v in (Lin A) + (Lin (B \ A)) by ZMODUL01:92;
        hence thesis;
      end;
      [#]U = [#]V by A11,VECTSP_4:def 2;
      hence thesis by ZMODUL01:45;
    end;
    hence thesis by A3,VECTSP_5:def 4;
  end;
