
theorem Th19:
  for I be non empty set,
      G be Group,
      F be Subgroup-Family of I,G,
      h be Homomorphism of sum F,G,
      a be finite-support Function of I,G
  st a in sum F
   & for i be Element of I, x be Element of F.i
     holds h.(1ProdHom(F,i).x) = x
  holds h.a = Product a
  proof
    let I be non empty set,
        G be Group,
        F be Subgroup-Family of I,G,
        h be Homomorphism of sum F,G,
        a be finite-support Function of I,G;
    assume that
    A1: a in sum F and
    A2: for i be Element of I, x be Element of F.i
        holds h.(1ProdHom(F,i).x) = x;
    A3: for i be object st i in I holds F.i is Subgroup of G by Def1;
    defpred P[Nat] means
    for b be finite-support Function of I,G st b in sum F holds
    card support(b) = $1 implies h.b = Product b;
    A4: P[0]
    proof
      let b be finite-support Function of I,G;
      assume b in sum F;
      assume card support(b) = 0; then
      A5: support(b) = {}; then
      b = 1_product F by A3,GROUP_19:14
       .= 1_sum F by GROUP_2:44; then
      h.b = 1_G by GROUP_6:31;
      hence thesis by A5,GROUP_19:15;
    end;
    A6: for k be Nat st P[k] holds P[k+1]
    proof
      let k be Nat;
      assume
      A7: P[k];
      let b be finite-support Function of I,G;
      assume
      A8: b in sum F;
      assume
      A9: card support(b) = k+1; then
      support(b) is not empty; then
      consider i be object such that
      A10: i in support(b) by XBOOLE_0:def 1;
      A11: b.i <> 1_G & i in I by A10,GROUP_19:def 2;
      reconsider i as Element of I by A10;
      set c = b +* (i,1_F.i);
      c in sum F by A8,GROUP_19:25; then
      reconsider c as Element of sum F;
      F.i is Subgroup of G by Def1; then
      A12: 1_F.i = 1_G by GROUP_2:44; then
      reconsider c0 = c as finite-support Function of I,G by GROUP_19:26;
      A13: b in product F by A8,GROUP_2:40;
      A14: b.i in F.i by A8,GROUP_19:5,GROUP_2:40; then
      1ProdHom(F,i).(b.i) in ProjGroup(F,i) by FUNCT_2:5; then
      1ProdHom(F,i).(b.i) in sum F by GROUP_2:40; then
      reconsider d = 1ProdHom(F,i).(b.i) as Element of sum F;
      A15: d = 1_product F +* (i, b.i) by A14,GROUP_12:def 3;
      A16: d is Element of product F by GROUP_2:42;
      A17: support(d,F) = {i} by A11,A12,A14,A15,A16,GROUP_19:18;
      A18: i in dom b by A11,A13,GROUP_19:3;
      A19: b = c * d
      proof
        reconsider c1 = c, d1 = d as Element of product F by GROUP_2:42;
        A20: support(c1,F) misses support(d1,F)
        proof
          c.i = 1_F.i by A18,FUNCT_7:31; then
          not ex G being Group st G = F.i & c.i <> 1_G & i in I;
          then not i in support(c,F) by GROUP_19:def 1;
          hence thesis by A17,ZFMISC_1:50;
        end;
        A21: dom(i .--> b.i) = {i};
        A22: dom(1_product F) = I by GROUP_19:3;
        A23: d1|support(d1,F)
              = (1_product F +* (i,b.i)) | {i} by A11,A12,A14,A15,GROUP_19:18
             .= (1_product F +* (i .--> b.i)) | {i} by A22,FUNCT_7:def 3
             .= i .--> b.i by A21,FUNCT_4:23;
        A24: i in dom c by A18,FUNCT_7:30;
        thus b = c1 +* (i,b.i) by Th7
              .= c1 +* (d1|support(d1,F)) by A23,A24,FUNCT_7:def 3
              .= c1 * d1 by A20,GROUP_19:31
              .= c * d by GROUP_2:43;
      end;
      A25: h.c0 = Product c0
      proof
        A26: c0 in sum F;
        card support(c0) = card support(b) - 1 by A10,A12,GROUP_19:30
                        .= k by A9;
        hence thesis by A7,A26;
      end;
      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
      proof
        let i,j be Element of I;
        let gi,gj be Element of G;
        assume that
        A27: i <> j and
        A28: gi in F.i and
        A29: gj in F.j;
        set ai = 1ProdHom(F,i).gi;
        A30: ai in ProjGroup(F,i) by A28,FUNCT_2:5; then
        ai in sum F by GROUP_2:40; then
        reconsider ai as Element of sum F;
        reconsider bi = ai as Element of product F by GROUP_2:42;
        set aj = 1ProdHom(F,j).gj;
        A31: aj in ProjGroup(F,j) by A29,FUNCT_2:5; then
        aj in sum F by GROUP_2:40; then
        reconsider aj as Element of sum F;
        reconsider bj = aj as Element of product F by GROUP_2:42;
        A32: gi = h.ai by A2,A28;
        gi * gj = h.ai * h.aj by A2,A29,A32
               .= h.(ai * aj) by GROUP_6:def 6
               .= h.(bi * bj) by GROUP_2:43
               .= h.(bj * bi) by A27,A30,A31,GROUP_12:7
               .= h.(aj * ai) by GROUP_2:43
               .= h.aj * h.ai by GROUP_6:def 6
               .= gj * gi by A2,A29,A32;
        hence thesis;
      end; then
      A33: F is component-commutative;
      A34: b in product F by A8,GROUP_2:40;
      h.b = h.c * h.d by A19,GROUP_6:def 6
         .= Product(c0) * b.i by A2,A14,A25
         .= Product b by A33,A34,Th8;
      hence thesis;
    end;
    A35: for k be Nat holds P[k] from NAT_1:sch 2(A4,A6);
    consider k be Nat such that
    A36: card support(a) = k;
    thus thesis by A1,A35,A36;
  end;
