
theorem Th53:
  for I be non empty set, G be Group,
      F be Group-Family of I,
      sx,sy being Element of sum F,
      x,y,xy be finite-support Function of I,G
  st (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)
   & sx = x & sy = y & sx * sy = xy
  holds Product xy = Product(x) * Product(y)
  proof
    let I be non empty set,
        G be Group,
        F be Group-Family of I,
        sx, sy being Element of sum F,
        x,y,xy be finite-support Function of I,G;
    assume that
    A1: for i be Element of I holds F.i is Subgroup of G and
    A2: 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 and
    A3: sx = x & sy = y & sx * sy = xy;
    reconsider W = support(x) \/ support(y) as finite Subset of I;
    A9: sx in sum F; then
    x in product F by A3,GROUP_2:40; then
    reconsider px = x as Element of product F;
    A10: sy in sum F; then
    y in product F by A3,GROUP_2:40; then
    reconsider py = y as Element of product F;
    A11: sx * sy in sum F; then
    xy in product F by A3,GROUP_2:40; then
    reconsider pxy = xy as Element of product F;
    for i be object st i in support(xy) holds i in W
    proof
      let i be object;
      assume
      A12: i in support xy;
      i in W
      proof
        assume
        A13: not i in W;
        reconsider i as Element of I by A12;
        A14: not i in support(x) & not i in support(y)
             by A13,XBOOLE_0:def 3; then
        A15: x.i = 1_G by Def2;
        A16: y.i = 1_G by A14,Def2;
        A17: F.i is Subgroup of G by A1;
        x.i in F.i by A3,A9,Th5,GROUP_2:40; then
        reconsider fxi = x.i as Element of F.i;
        y.i in F.i by A3,A10,Th5,GROUP_2:40; then
        reconsider fyi = y.i as Element of F.i;
        xy.i = (px * py).i by A3,GROUP_2:43
            .= fxi * fyi by GROUP_7:1
            .= x.i * y.i by A17,GROUP_2:43
            .= 1_G by A15,A16,GROUP_1:def 4;
        hence contradiction by A12,Def2;
      end;
      hence i in W;
    end; then
    A22: support xy c= W;
    A23: for a be Function of I,G, i,j be Element of I st a in product F
    holds a.i * a.j = a.j * a.i
    proof
      let a be Function of I,G;
      let i,j be Element of I;
      assume
      A24: a in product F; then
      A25: a.i in F.i by Th5;
      A26: a.j in F.j by A24,Th5;
      per cases;
      suppose
        i = j;
        hence thesis;
      end;
      suppose
        i <> j;
        hence thesis by A2,A25,A26;
      end;
    end;
    for i,j be Element of I holds x.i * x.j = x.j * x.i
    by A3,A9,A23,GROUP_2:40; then
    A28: Product x = Product(x|W) by Th51,XBOOLE_1:7;
    for i,j be Element of I holds y.i * y.j = y.j * y.i
    by A3,A10,A23,GROUP_2:40; then
    A34: Product y = Product(y|W) by Th51,XBOOLE_1:7;
    for i,j be Element of I holds xy.i * xy.j = xy.j * xy.i
    by A3,A11,A23,GROUP_2:40; then
    A40: Product xy = Product(xy|W) by A22,Th51;
    set cs = canFS(W);
    reconsider wx = (x|W) * cs as FinSequence of G by Th50;
    reconsider wy = (y|W) * cs as FinSequence of G by Th50;
    reconsider wxy = (xy|W) * cs as FinSequence of G by Th50;
    A41: rng cs = W by FUNCT_2:def 3;
    W = dom(x|W) & W = dom(y|W) & W = dom(xy|W) by PARTFUN1:def 2; then
    A43: dom cs = dom wx & dom cs = dom wy & dom cs = dom wxy
         by A41,RELAT_1:27; then
    dom cs = Seg len wx & dom cs = Seg len wy & dom cs = Seg len wxy
         by FINSEQ_1:def 3; then
    A45: len wxy = len wx & len wxy = len wy by FINSEQ_1:6;
    A50: Product(x|W) = Product(wx) by GROUP_17:def 1;
    A51: Product(y|W) = Product(wy) by GROUP_17:def 1;
    A55: for i,j be Nat st i in dom wxy & j in dom wxy & i <> j
         holds wx/.i * wy/.j = wy/.j * wx/.i
    proof
      let i,j be Nat;
      assume
      A56: i in dom wxy & j in dom wxy & i <> j; then
      A57: cs.i in rng cs & cs.j in rng cs by A43,FUNCT_1:3; then
      A59: cs.i in W & cs.j in W;
      A60: wx/.i = wx.i by A43,A56,PARTFUN1:def 6
                 .= (x|W).(cs.i) by A43,A56,FUNCT_1:12
                 .= x.(cs.i) by A57,FUNCT_1:49;
      A61: wy/.j = wy.j by A43,A56,PARTFUN1:def 6
                 .= (y|W).(cs.j) by A43,A56,FUNCT_1:12
                 .= y.(cs.j) by A57,FUNCT_1:49;
      reconsider i0 = cs.i as Element of I by A59;
      reconsider j0 = cs.j as Element of I by A59;
      A64: x.i0 in F.i0 by A3,A9,Th5,GROUP_2:40;
      reconsider gi = x.i0 as Element of G;
      A65: y.j0 in F.j0 by A3,A10,Th5,GROUP_2:40;
      reconsider gj = y.j0 as Element of G;
      thus thesis by A2,A43,A56,A60,A61,A64,A65,FUNCT_1:def 4;
    end;
    A67: for i be Nat st i in dom wxy holds wxy.i = (wx/.i) * (wy/.i)
    proof
      let i be Nat;
      assume
      A68: i in dom wxy;
      A70: cs.i in rng cs by A43,A68,FUNCT_1:3; then
      A71: cs.i in W;
      A72: wx/.i = wx.i by A43,A68,PARTFUN1:def 6
                .= (x|W).(cs.i) by A43,A68,FUNCT_1:12
                .= x.(cs.i) by A70,FUNCT_1:49;
      A73: wy/.i = wy.i by A43,A68,PARTFUN1:def 6
                .= (y|W).(cs.i) by A43,A68,FUNCT_1:12
                .= y.(cs.i) by A70,FUNCT_1:49;
      A74: wxy/.i = wxy.i by A68,PARTFUN1:def 6
                 .= (xy|W).(cs.i) by A68,FUNCT_1:12
                 .= xy.(cs.i) by A70,FUNCT_1:49;
      reconsider i0 = cs.i as Element of I by A71;
      A75: F.i0 is Subgroup of G by A1;
      x.i0 in F.i0 by A3,A9,Th5,GROUP_2:40; then
      reconsider fxi = x.i0 as Element of F.i0;
      y.i0 in F.i0 by A3,A10,Th5,GROUP_2:40; then
      reconsider fyi = y.i0 as Element of F.i0;
      thus wxy.i = xy.i0 by A68,A74,PARTFUN1:def 6
                .= (px * py).i0 by A3,GROUP_2:43
                .= fxi * fyi by GROUP_7:1
                .= (wx/.i) * (wy/.i) by A72,A73,A75,GROUP_2:43;
    end;
    Product(wxy) = Product(wx) * Product(wy) by A45,A55,A67,Th47;
    hence thesis by A28,A34,A40,A50,A51,GROUP_17:def 1;
  end;
