
theorem Th43:
  for I be non empty set,
      G be Group,
      i be object st i in I holds
  ex F be Group-Family of I,
     h be Homomorphism of sum F, G
  st h is bijective
   & F = (I --> (1).G) +* ({i} --> G)
   &(for j be Element of I holds 1_F.j = 1_G)
   &(for x be Element of sum F holds h.x = x.i)
   & for x be Element of sum F
     ex J being finite Subset of I,
        a being ManySortedSet of J
     st J c= {i}
      & J = support(x,F)
      & (support(x,F) = {} or support(x,F) = {i})
      & x = 1_product F +* a
      & (for j being Element of I st j in I \ J holds x.j = 1_F.j)
      & (for j being object st j in J holds x.j = a.j)
  proof
    let I be non empty set,
        G be Group,
        i be object;
    assume
    A1: i in I;
    set v = I --> (1).G;
    set w = {i} --> G;
    set F = v +* w;
    A4: dom F = dom(v) \/ dom(w) by FUNCT_4:def 1
             .= dom(v) \/ {i} by FUNCOP_1:13
             .= I \/ {i} by FUNCOP_1:13
             .= I by A1,XBOOLE_1:12,ZFMISC_1:31;
    A5: i in {i} by TARSKI:def 1; then
    i in dom w by FUNCOP_1:13; then
    A7: F.i = w.i by FUNCT_4:13; then
    A8: F.i = G by A5,FUNCOP_1:7;
    A9: for j be object st j in I \ {i} holds F.j = (1).G
    proof
      let j be object;
      assume
      A10: j in I \ {i}; then
      j in dom F by A4; then
      A11: j in dom(v) \/ dom(w) by FUNCT_4:def 1;
      not j in dom w by A10,XBOOLE_0:def 5;
      hence F.j = v.j by A11,FUNCT_4:def 1
               .= (1).G by A10,FUNCOP_1:7;
    end;
    for j be object st j in I holds F.j is Group
    proof
      let j be object;
      assume
      A12: j in I;
      per cases;
      suppose
        j in {i};
        hence F.j is Group by A8,TARSKI:def 1;
      end;
      suppose
        not j in {i}; then
        j in I \ {i} by A12,XBOOLE_0:def 5;
        hence F.j is Group by A9;
      end;
    end; then
    reconsider F as Group-Family of I by A4,Th2;
    A17: for j be Element of I holds 1_F.j = 1_G
    proof
      let j be Element of I;
      per cases;
      suppose
        j in {i};
        hence 1_F.j = 1_G by A8,TARSKI:def 1;
      end;
      suppose
        not j in {i}; then
        j in I \ {i} by XBOOLE_0:def 5; then
        F.j = (1).G by A9;
        hence 1_F.j = 1_G by GROUP_2:44;
      end;
    end;
    defpred P[Element of sum F,Element of G] means $2 = $1.i;
    A24: for x being Element of sum F ex y being Element of G st P[x,y]
    proof
      let x be Element of sum F;
B01:  x in sum F;
      reconsider i as Element of I by A1;
      A25: x.i in F.i by GROUP_2:40,Th5,B01;
      A26: i in {i} by TARSKI:def 1; then
      A27: i in dom w by FUNCOP_1:13; then
      i in dom(v) \/ dom(w) by XBOOLE_0:def 3; then
      F.i = w.i by A27,FUNCT_4:def 1; then
      reconsider y = x.i as Element of G by A25,A26,FUNCOP_1:7;
      take y;
      thus thesis;
    end;
    consider h being Function of sum F,G such that
    A29: for x being Element of sum F holds P[x,h.x] from FUNCT_2:sch 3(A24);
    for y being object st y in [#]G
    ex x being object st x in [#]sum F & y = h.x
    proof
      let y be object;
      assume
      A30: y in [#]G;
      reconsider i as Element of I by A1;
      set x = 1_product F +* (i,y);
      A32: 1_product F in product F;
      A33: y in F.i by A5,A7,A30,FUNCOP_1:7; then
      x in product F by A32,Th24; then
      reconsider x as Element of product F;
      support(x,F) c= {i} by A33,Th17; then
      A35: x in sum F by Th8;
      take x;
      thus x in [#]sum F by A35;
      A36: dom(1_product F) = I by Th3;
      reconsider x as Element of sum F by A35;
      reconsider y as Element of G by A30;
      P[x,y] by A36,FUNCT_7:31;
      hence thesis by A29;
    end; then
    rng h = [#]G by FUNCT_2:10; then
    A42: h is onto by FUNCT_2:def 3;
    A43: for x be Element of sum F holds support(x,F) c= {i}
    proof
      let x be Element of sum F;
      now
        let j be object;
        assume
        A44: j in support(x,F); then
        consider Z be Group such that
A45:    Z = F.j & x.j <> 1_Z & j in I by Def1;
        assume not j in {i}; then
        j in I \ {i} by A44,XBOOLE_0:def 5; then
        A46: F.j = (1).G by A9;
        x in sum F; then
        x.j in Z by A45,GROUP_2:40,Th5; then
        x.j in {1_G} by A45,A46,GROUP_2:def 7; then
        x.j = 1_G by TARSKI:def 1;
        hence contradiction by A45,A46,GROUP_2:44;
      end;
      hence thesis;
    end;
    for x1,x2 being object
    st x1 in [#]sum F & x2 in [#]sum F & h.x1 = h.x2 holds x1 = x2
    proof
      let x1,x2 be object;
      assume
      A48: x1 in [#]sum F & x2 in [#]sum F & h.x1 = h.x2; then
      reconsider x1,x2 as Element of sum F;
      x1 in sum F & x2 in sum F; then
      A49: x1 in product F & x2 in product F by GROUP_2:40; then
      A50: dom x1 = I & dom x2 = I by Th3;
      consider J1 being finite Subset of I,
               a1 being ManySortedSet of J1 such that
      A51: J1 = support(x1,F)
        & x1 = 1_product F +* a1
        &(for j being object, G being Group st j in I \ J1 & G = F.j
        holds x1.j = 1_G)
        &(for j being object st j in J1 holds x1.j = a1.j) by Th7;
      consider J2 being finite Subset of I,
               a2 being ManySortedSet of J2 such that
      A52: J2 = support(x2,F)
        & x2 = 1_product F +* a2
        &(for j being object, G being Group st j in I \ J2 & G = F.j
        holds x2.j = 1_G)
        &(for j being object st j in J2 holds x2.j = a2.j) by Th7;
      A53: support(x1,F) c= {i} by A43;
      A54: support(x2,F) c= {i} by A43;
      for j be object st j in dom x1 holds x1.j = x2.j
      proof
        let j be object;
        assume j in dom x1; then
        A56: j in I by A49,Th3;
        then reconsider Z = F.j as Group by Th1;
        per cases;
        suppose
          not j in {i}; then
          not j in J1 & not j in J2 by A51,A52,A53,A54; then
          A59: j in I \ J1 & j in I \ J2 by A56,XBOOLE_0:def 5;
          hence x1.j = 1_Z by A51
                   .= x2.j by A52,A59;
        end;
        suppose
          j in {i}; then
          A61: j = i by TARSKI:def 1;
          hence x1.j = h.x2 by A29,A48
                   .= x2.j by A29,A61;
        end;
      end;
      hence thesis by A50,FUNCT_1:2;
    end; then
    A62: h is one-to-one by FUNCT_2:19;
    for x, y being Element of sum F holds h.(x * y) = h.x * h.y
    proof
      let x, y being Element of sum F;
      A68: for j be set st j in I holds
          ex Fi being non empty multMagma, xi,yi being Element of Fi
          st xi = x.j & yi = y.j & Fi = F.j & (x * y).j = xi * yi
      proof
        let j be set;
        assume j in I; then
        reconsider j as Element of I;
        x in sum F; then
        x in product F by GROUP_2:40; then
        reconsider x0 = x as Element of product F;
        x0 in product F; then
        x0.j in F.j by Th5; then
        reconsider xi = x0.j as Element of F.j;
        y in sum F; then
        y in product F by GROUP_2:40; then
        reconsider y0 = y as Element of product F;
        y0 in product F; then
        y0.j in F.j by Th5; then
        reconsider yi = y0.j as Element of F.j;
        (x * y).j = (x0 * y0).j by GROUP_2:43
                 .= xi * yi by GROUP_7:1;
        hence thesis;
      end;
      h.(x * y) = h.x * h.y
      proof
        consider Fa being non empty multMagma,
              xa,ya being Element of Fa such that
        A72: xa = x.i & ya = y.i & Fa = F.i & (x * y).i = xa * ya by A1,A68;
        A74: xa = h.x by A29,A72;
        thus h.(x * y) = xa * ya by A29,A72
                      .= h.x * h.y by A8,A29,A72,A74;
      end;
      hence thesis;
    end; then
    reconsider h as Homomorphism of sum F, G by GROUP_6:def 6;
    take F,h;
    thus h is bijective by A42,A62;
    thus F = (I --> (1).G) +* ({i} --> G);
    thus for j be Element of I holds 1_F.j = 1_G by A17;
    thus for x be Element of sum F holds h.x = x.i by A29;
      let x be Element of sum F;
      A78: support(x,F) c= {i} by A43;
      A79: support(x,F) = {} or support(x,F) = {i}
      proof
        per cases;
        suppose
          support(x,F) = {};
          hence thesis;
        end;
        suppose
          support(x,F) <> {}; then
          consider j be object such that
          A82: j in support(x,F) by XBOOLE_0:def 1;
          A83: {j} c= support(x,F) by A82,ZFMISC_1:31;
          j = i by A78,A82,TARSKI:def 1;
          hence thesis by A78,A83,XBOOLE_0:def 10;
        end;
      end;
      consider J being finite Subset of I,
               a being ManySortedSet of J such that
      A85: J = support(x,F)
        & x = 1_product F +* a
        &(for j being object, G being Group st j in I \ J & G = F.j
        holds x.j = 1_G)
        &(for j being object st j in J holds x.j = a.j) by Th7;
      take J,a;
      thus thesis by A79,A85;
  end;
