
theorem
  for I be non empty set,
      G be commutative Group,
      F be Group-Family of I
  holds
    F is internal DirectSumComponents of G,I
  iff
    (for i be Element of I holds F.i is Subgroup of G)
   &(for i,j be Element of I st i <> j holds
     [#] (F.i) /\ [#] (F.j) = {1_G})
   &(for y be Element of G
     ex x be finite-support Function of I,G
     st x in sum F & y = Product(x))
   &(for x1,x2 be finite-support Function of I,G
     st x1 in sum F & x2 in sum F & Product(x1) = Product(x2)
     holds x1 = x2)
  proof
    let I be non empty set,
        G be commutative Group,
        F be Group-Family of I;
    hereby
      assume
      A1: F is internal DirectSumComponents of G,I; then
      A2: (for i be Element of I holds F.i is Subgroup of G)
        & (for i,j be Element of I, gi,gj be Element of G
           st i <> j & gi in F.i & gj in F.j
           holds gi * gj = gj * gi)
        & (for y be Element of G
           ex x be finite-support Function of I,G
           st x in sum F & y = Product x)
        & (for x1,x2 be finite-support Function of I,G
           st x1 in sum F & x2 in sum F & Product x1 = Product x2
           holds x1 = x2) by GROUP_19:54;
      A3: for i be object st i in I holds F.i is Subgroup of G
          by A1,GROUP_19:54;
      A4: for i,j be Element of I st i <> j holds [#](F.i) /\ [#](F.j) = {1_G}
      proof
        let i,j be Element of I;
        assume
        A5: i <> j;
        A6: F.i is Subgroup of G by A1,GROUP_19:54; then
        A7: 1_G in F.i by GROUP_2:46;
        A8: F.j is Subgroup of G by A1,GROUP_19:54; then
        1_G in F.j by GROUP_2:46; then
        1_G in [#](F.j) /\ [#](F.i) by A7,XBOOLE_0:def 4; then
        A9: {1_G} c= [#](F.i) /\ [#](F.j) by ZFMISC_1:31;
        for x be object st x in [#](F.i) /\ [#](F.j) holds x in {1_G}
        proof
          let x be object;
          assume
          A10: x in [#](F.i) /\ [#](F.j);
          reconsider gi = x as Element of F.i by A10,XBOOLE_0:def 4;
          reconsider gj = x as Element of F.j by A10;
          gi in G by A6,GROUP_2:41; then
          reconsider ggi = gi as Element of G;
          gj in G by A8,GROUP_2:41; then
          reconsider ggj = gj as Element of G;
          x = 1_G
          proof
            assume
            A11: x <> 1_G;
            set xi = 1_product F +* (i,gi);
            set xj = 1_product F +* (j,gj);
            A12: xi in sum F by GROUP_19:25,GROUP_2:46; then
            reconsider xi as finite-support Function of I,G by A3,GROUP_19:10;
            A13: xj in sum F by GROUP_19:25,GROUP_2:46; then
            reconsider xj as finite-support Function of I,G by A3,GROUP_19:10;
            A14: 1_product F = I --> 1_G by A2,GROUP_19:13; then
            Product xi = ggj by GROUP_19:21
                      .= Product xj by A14,GROUP_19:21; then
            A15: xi = xj by A1,A12,A13,GROUP_19:54;
            A16: dom(1_product F) = I by GROUP_19:3;
            xj.i = (1_product F).i by A5,FUNCT_7:32
                .= 1_F.i by GROUP_7:6
                .= 1_G by A6,GROUP_2:44;
            hence contradiction by A11,A15,A16,FUNCT_7:31;
          end;
          hence x in {1_G} by TARSKI:def 1;
        end; then
        [#](F.i) /\ [#](F.j) c= {1_G};
        hence thesis by A9,XBOOLE_0:def 10;
      end;
      thus (for i be Element of I holds F.i is Subgroup of G)
         & (for i,j be Element of I st i <> j holds
            [#] (F.i) /\ [#] (F.j) = {1_G})
         & (for y be Element of G
            ex x be finite-support Function of I,G
            st x in sum F & y = Product(x))
         & (for x1,x2 be finite-support Function of I,G
            st x1 in sum F & x2 in sum F & Product(x1) = Product(x2)
            holds x1 = x2) by A1,A4,GROUP_19:54;
    end;
    assume
    A17: (for i be Element of I holds F.i is Subgroup of G)
       & (for i,j be Element of I st i <> j holds
          [#] (F.i) /\ [#] (F.j) = {1_G})
       & (for y be Element of G
          ex x be finite-support Function of I,G
          st x in sum F & y = Product(x))
       & (for x1,x2 be finite-support Function of I,G
          st x1 in sum F & x2 in sum F & Product(x1) = Product(x2)
          holds x1 = x2);
    for i,j be Element of I, gi,gj be Element of G
    st i <> j & gi in F.i & gj in F.j
    holds gi * gj = gj * gi;
    hence F is internal DirectSumComponents of G,I by A17,GROUP_19:54;
  end;
