
theorem Th8:
  for I be non empty set, G be Group,
      F be component-commutative Subgroup-Family of I,G,
      x,y be finite-support Function of I,G,
      i be Element of I
  st y = x +* (i,1_F.i) & x in product F
  holds Product x = Product(y) * x.i = x.i * Product(y)
  proof
    let I be non empty set,
        G be Group,
        F be component-commutative Subgroup-Family of I,G,
        x,y be finite-support Function of I,G,
        i be Element of I;
    A1: for i be object st i in I holds F.i is Subgroup of G by Def1;
    A2: for i,j being Element of I, gi,gj being Element of G
        st i <> j & gi in F.i & gj in F.j
        holds gi * gj = gj * gi by Def2;
    assume that
    A3: y = x +* (i,1_F.i) and
    A4: x in product F;
    A5: for i be Element of I holds F.i is Subgroup of G by Def1;
    reconsider px = x as Element of product F by A4;
    A6: x.i in F.i by A4,GROUP_19:5;
    y in product F by A3,A4,GROUP_19:24; then
    reconsider py = y as Element of product F;
    support(y) = support(py,F) by A1,GROUP_19:9; then
    py in sum F by GROUP_19:8; then
    reconsider sy = py as Element of sum F;
    set z = 1_product F +* (i,x.i);
    A7: z in sum F by A6,GROUP_19:25,GROUP_2:46; then
    A8: z in product F by GROUP_2:40;
    reconsider sz = z as Element of sum F by A7;
    reconsider pz = z as Element of product F by A8;
    reconsider z as finite-support Function of I,G by A1,A7,GROUP_19:10;
    A9: dom x = I by A4,GROUP_19:3;
    sy * sz is Element of product F by GROUP_2:42; then
    A10: dom(sy * sz) = I by GROUP_19:3;
    A11: dom(1_product F) = I by GROUP_19:3;
    A12: x = sy * sz
    proof
      for j be object st j in I holds x.j = (sy * sz).j
      proof
        let j be object;
        assume j in I; then
        reconsider j as Element of I;
        y.j in F.j by A3,A4,GROUP_19:5,24; then
        reconsider yj = y.j as Element of F.j;
        z.j in F.j by A7,GROUP_19:5,GROUP_2:40; then
        reconsider zj = z.j as Element of F.j;
        per cases;
        suppose
          A13: j = i; then
          A14: y.j = 1_F.j by A3,A9,FUNCT_7:31;
          z.j = x.j by A11,A13,FUNCT_7:31; then
          yj * zj = x.j by A14,GROUP_1:def 4; then
          px.j = (py * pz).j by GROUP_7:1;
          hence thesis by GROUP_2:43;
        end;
        suppose
          A15: j <> i; then
          A16: y.j = x.j by A3,FUNCT_7:32;
          (1_product F).j = 1_F.j by GROUP_7:6; then
          z.j = 1_F.j by A15,FUNCT_7:32; then
          yj * zj = x.j by A16,GROUP_1:def 4; then
          px.j = (py * pz).j by GROUP_7:1;
          hence thesis by GROUP_2:43;
        end;
      end;
      hence thesis by A9,A10,FUNCT_1:2;
    end;

    A17: sy * sz = sz * sy
    proof
      A18: support(py,F) = support(px,F) \ {i} by A3,A9,GROUP_19:27;
      A19: support(py,F) misses support(pz,F)
           by A6,A18,GROUP_19:17,XBOOLE_1:85;
      thus sy * sz = py * pz by GROUP_2:43
                  .= pz * py by A19,GROUP_19:32
                  .= sz * sy by GROUP_2:43;
    end;
    A20: Product x = Product(y) * Product(z) by A2,A5,A12,GROUP_19:53;
    1_product F = I --> 1_G by A5,GROUP_19:13; then
    Product(z) = x.i by GROUP_19:21;
    hence thesis by A2,A5,A12,A17,A20,GROUP_19:53;
  end;
