
theorem Th20:
  for I be non empty set, F1,F2 be Group-Family of I
  st for i be Element of I holds F1.i is Subgroup of F2.i
  holds product F1 is Subgroup of product F2
  proof
    let I be non empty set, F1,F2 be Group-Family of I;
    assume
    A1: for i be Element of I holds F1.i is Subgroup of F2.i;
    A2: for x be object st x in [#] product F1 holds x in [#] product F2
    proof
      let x be object;
      assume x in [#] product F1; then
      reconsider x as Element of product F1;
      A3: dom x = I by GROUP_19:3;
      reconsider z = Carrier F2 as ManySortedSet of I;
      A4: dom z = I by PARTFUN1:def 2;
      for i be object st i in I holds x.i in z.i
      proof
        let i be object;
        assume i in I; then
        reconsider i as Element of I;
        A5: z.i = [#](F2.i) by PENCIL_3:7;
        x in product F1; then
        A6: x.i in F1.i by GROUP_19:5;
        F1.i is Subgroup of F2.i by A1; then
        [#](F1.i) c= [#](F2.i) by GROUP_2:def 5;
        hence thesis by A5,A6;
      end; then
      x in product z by A3,A4,CARD_3:def 5;
      hence thesis by GROUP_7:def 2;
    end; then
    A7: [#] product F1 c= [#] product F2; then
    [:[#] product F1, [#] product F1:]
     c= [:[#] product F2, [#] product F2:] by ZFMISC_1:96; then
    reconsider f2 = (the multF of product F2) || [#] product F1
      as Function of [:[#] product F1,[#] product F1:], [#] product F2
      by FUNCT_2:32;
    reconsider f1 = (the multF of product F1)
      as Function of [:[#] product F1,[#] product F1:], [#] product F2
      by A7,FUNCT_2:7;
    for x,y being set st x in [#] product F1 & y in [#] product F1
    holds f1.(x,y) = f2.(x,y)
    proof
      let x0,y0 be set;
      assume
      A8: x0 in [#] product F1 & y0 in [#] product F1; then
      reconsider x1=x0,y1=y0 as Element of product F1;
      reconsider x2=x0,y2=y0 as Element of product F2 by A2,A8;
      A9: dom(x1*y1) = I by GROUP_19:3;
      A10: for i be object st i in dom (x1*y1) holds (x1*y1).i = (x2*y2).i
      proof
        let i be object;
        assume i in dom(x1*y1); then
        reconsider i as Element of I by GROUP_19:3;
        x1 in product F1; then
        x1.i in F1.i by GROUP_19:5; then
        reconsider x1i = x1.i as Element of (F1.i);
        x2 in product F2; then
        x2.i in F2.i by GROUP_19:5; then
        reconsider x2i = x2.i as Element of (F2.i);
        y1 in product F1; then
        y1.i in F1.i by GROUP_19:5; then
        reconsider y1i = y1.i as Element of (F1.i);
        y2 in product F2; then
        y2.i in F2.i by GROUP_19:5; then
        reconsider y2i = y2.i as Element of (F2.i);
        A11: F1.i is Subgroup of F2.i by A1;
        (x1*y1).i = x1i*y1i by GROUP_7:1
                 .= x2i*y2i by A11,GROUP_2:43
                 .= (x2*y2).i by GROUP_7:1;
        hence thesis;
      end;
      A12: f2.(x2,y2)
       = ((the multF of product F2)
         | [: [#] product F1,[#] product F1:]).[x2,y2] by BINOP_1:def 1
      .= (the multF of product F2).[x2,y2] by A8,FUNCT_1:49,ZFMISC_1:87
      .= (the multF of product F2).(x2,y2) by BINOP_1:def 1;
      thus f1.(x0,y0) = x1*y1 by ALGSTR_0:def 18
                     .= x2*y2 by A9,A10,GROUP_19:3
                     .= f2.(x0,y0) by A12,ALGSTR_0:def 18;
    end;
    hence thesis by A7,BINOP_1:def 21,GROUP_2:def 5;
  end;
