 reserve I for non empty set;
 reserve i for Element of I;
 reserve F for Group-Family of I;
 reserve G for Group;
reserve S for Subgroup-Family of F;
reserve f for Homomorphism-Family of G, F;

theorem Th49:
  for F1,F2 being Group-Family of I
  st (for i being Element of I holds F1.i is Subgroup of F2.i)
  holds product F1 is Subgroup of product F2
proof
  let F1,F2 be Group-Family of I;
  assume A1: for i being Element of I holds F1.i is Subgroup of F2.i;
  deffunc Fun(Element of I) = (incl (F1.$1, F2.$1)) * (proj (F1, $1));
  A2: for i being Element of I
  holds Fun(i) is Homomorphism of product F1, F2.i;
  consider f being Homomorphism-Family of product F1, F2 such that
  A3: for i being Element of I holds f.i = Fun(i)
  from RHomFamSch(A2);
  A4: for g being Element of product F1
  for i being Element of I
  holds (f.i).g = g.i
  proof
    let g be Element of product F1;
    let i be Element of I;
    B1: F1.i is Subgroup of F2.i by A1;
    ((proj (F1, i)).g) in F1.i;
    then (g.i) is Element of F1.i by Def13;
    then B2: (incl (F1.i, F2.i)).(g.i) = g.i by B1, Th18;
    (f.i).g = ((incl (F1.i, F2.i)) * (proj (F1, i))).g by A3
           .= (incl (F1.i, F2.i)).((proj (F1, i)).g) by FUNCT_2:15
           .= (g.i) by B2, Def13;
    hence (f.i).g = g.i;
  end;
  consider phi being Homomorphism of product F1, product F2 such that
  A5: for g being Element of product F1
  holds (for i being Element of I holds (f.i).g = (proj (F2,i)) . (phi.g))
  by Th39;
  for g being Element of product F1
  holds phi.g = g
  proof
    let g be Element of product F1;
    B1: for i being object st i in I holds (phi.g).i = g.i
    proof
      let i be object;
      assume i in I;
      then reconsider j=i as Element of I;
      g.j = (f.j).g by A4
         .= (proj (F2,j)) . (phi.g) by A5
         .= (phi.g).j by Def13;
      hence thesis;
    end;
    dom g = I by GROUP_19:3;
    hence g = phi.g by B1, GROUP_19:3;
  end;
  hence product F1 is Subgroup of product F2 by InclByAnyOtherName;
end;
