 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 InclByAnyOtherName:
  for G1,G2 being Group
  for f being Homomorphism of G1, G2
  st (for g being Element of G1 holds f.g = g)
  holds G1 is Subgroup of G2
proof
  let G1,G2 be Group;
  let f be Homomorphism of G1, G2;
  assume A1: for g being Element of G1 holds f.g = g;
  A2: the carrier of G1 c= the carrier of G2
  proof
    for g being object st g in the carrier of G1
    holds g in the carrier of G2
    proof
      let g be object;
      assume g in the carrier of G1;
      then reconsider gg=g as Element of G1;
      (f.gg) in the carrier of G2;
      hence g in the carrier of G2 by A1;
    end;
    hence thesis by TARSKI:def 3;
  end;
  then reconsider U=the carrier of G1 as Subset of the carrier of G2;
  set U1 = the carrier of G1;
  set U2 = the carrier of G2;
  A3: [: U1, U1 :] c= [: U2, U2 :] by A2, ZFMISC_1:96;
  dom (the multF of G2) = [: U2, U2 :]
  by FUNCT_2:def 1;
  then A5: dom ((the multF of G2)|[: U1, U1 :]) = [: U1, U1 :]
  by A2, ZFMISC_1:96, RELAT_1:62;
  A5a: dom ((the multF of G2)||U1) = [: U1, U1 :] by A5, REALSET1:def 2;
  A5b: ((the multF of G2)||U1)
  = ((the multF of G2)|[: U1, U1 :]) by REALSET1:def 2;
  A6: for a being Element of U1
  for b being Element of U1
  holds (the multF of G1).(a, b) = ((the multF of G2)||U1).(a, b)
  proof
    let a be Element of U1;
    let b be Element of U1;
B2: (the multF of G2).([a, b])
     = ((the multF of G2)|[: U1, U1 :]).([a, b]) by A5, ZFMISC_1:87, FUNCT_1:47
    .= ((the multF of G2)||U1).([a, b]) by REALSET1:def 2
    .= ((the multF of G2)||U1).(a, b) by BINOP_1:def 1;
    set c = a * b;
    B4: (the multF of G2).(f.a, f.b)
      = (the multF of G2).(f.a, b) by A1
     .= (the multF of G2).(a, b) by A1;
    c = f.c by A1
     .= (f.a) * (f.b) by GROUP_6:def 6
     .= (the multF of G2).(a, b) by B4;
    hence (the multF of G1).(a, b) = ((the multF of G2)||U1).(a, b)
    by B2, BINOP_1:def 1;
  end;
  ((the multF of G2)||U1) is BinOp of U1
  proof
    B1: rng (the multF of G1) c= U1 by RELAT_1:def 19;
    B2a: ((the multF of G2)||U1) is Function of [:U1,U1:], U2
    by A3, A5b, FUNCT_2:32;
    B2: ((the multF of G2)||U1) is Function of [: U1, U1 :],
    rng ((the multF of G2)||U1) by A5a, FUNCT_2:1;
    B3: rng ((the multF of G2)||U1) c= U1 by B1, A6, B2a, LmEqRng;
    [: U1, U1 :] <> {} implies (rng ((the multF of G2)||U1)) <> {}
    proof
      assume [: U1, U1 :] <> {};
      then consider x being object such that
      C2: x in [: U1, U1 :] by XBOOLE_0:def 1;
      x in dom ((the multF of G2)||U1) by C2, A5, REALSET1:def 2;
      hence (rng ((the multF of G2)||U1)) <> {} by FUNCT_1:3;
    end;
    hence thesis by B2, B3, FUNCT_2:6;
  end;
  hence G1 is Subgroup of G2 by A2, A6, BINOP_1:2, GROUP_2:def 5;
end;
