 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 Th30:
  proj (F, i) is onto
proof
  for y being object st y in the carrier of F.i
  ex x being object st x in the carrier of product F & y = (proj (F,i)).x
  proof
    let y be object;
    assume y in the carrier of F.i;
    then reconsider yy=y as Element of F.i;
    (1ProdHom (F, i)).yy in ProjGroup (F, i);
    then (1ProdHom (F, i)).yy in ProjSet (F, i) by GROUP_12:def 2;
    then consider x being Function, g being Element of F.i such that
    A1: x = (1ProdHom (F, i)).yy & dom x = I & x.i = g &
    for j being Element of I st j <> i holds x.j = 1_(F.j)
    by GROUP_12:2;
    the carrier of (product F) = product (Carrier F) by GROUP_7:def 2;
    then dom (1_(product F)) = I by PARTFUN1:def 2;
    then A2: y = ((1_(product F)) +* (i, y)).i by FUNCT_7:31
              .= g by A1, GROUP_12:def 3;
    A3: x in product F by A1,GROUP_2:41;
    take x;
    thus x in the carrier of product F by A3;
    thus y = (proj (F,i)).x by Def13, A1, A2, A3;
  end;
  then rng (proj (F,i)) = the carrier of F.i by FUNCT_2:10;
  hence proj (F, i) is onto by FUNCT_2:def 3;
end;
