 reserve x for object;
 reserve G for non empty 1-sorted;
 reserve A for Subset of G;
 reserve y,y1,y2,Y,Z for set;
 reserve k for Nat;
 reserve G for Group;
 reserve a,g,h for Element of G;
 reserve A for Subset of G;
reserve G for non empty multMagma,
  A,B,C for Subset of G;
reserve a,b,g,g1,g2,h,h1,h2 for Element of G;
reserve G for Group-like non empty multMagma;
reserve h,g,g1,g2 for Element of G;
reserve A for Subset of G;
reserve H for Subgroup of G;
reserve h,h1,h2 for Element of H;
reserve G,G1,G2,G3 for Group;
reserve a,a1,a2,b,b1,b2,g,g1,g2 for Element of G;
reserve A,B for Subset of G;
reserve H,H1,H2,H3 for Subgroup of G;
reserve h,h1,h2 for Element of H;

theorem Th52:
  A <> {} & (for g1,g2 st g1 in A & g2 in A holds g1 * g2 in A) &
    (for g st g in A holds g" in A) implies
       ex H being strict Subgroup of G st the carrier of H = A
proof
  assume that
A1: A <> {} and
A2: for g1,g2 st g1 in A & g2 in A holds g1 * g2 in A and
A3: for g st g in A holds g" in A;
  reconsider D = A as non empty set by A1;
  set o = (the multF of G)||A;
A4: dom o = dom(the multF of G) /\ [:A,A:] by RELAT_1:61;
  dom(the multF of G) = [:the carrier of G,the carrier of G:] by FUNCT_2:def 1;
  then
A5: dom o = [:A,A:] by A4,XBOOLE_1:28;
  rng o c= A
  proof
    let x be object;
    assume x in rng o;
    then consider y being object such that
A6: y in dom o and
A7: o.y = x by FUNCT_1:def 3;
    consider y1,y2 being object such that
A8: [y1,y2] = y by A4,A6,RELAT_1:def 1;
A9: y1 in A & y2 in A by A5,A6,A8,ZFMISC_1:87;
    reconsider y1,y2 as Element of G by A4,A6,A8,ZFMISC_1:87;
    x = y1 * y2 by A6,A7,A8,FUNCT_1:47;
    hence thesis by A2,A9;
  end;
  then reconsider o as BinOp of D by A5,FUNCT_2:def 1,RELSET_1:4;
  set H = multMagma (# D,o #);
A10: now
    let g1,g2;
    let h1,h2 be Element of H;
A11: h1 * h2 = ((the multF of G)||A).[h1,h2];
    assume g1 = h1 & g2 = h2;
    hence g1 * g2 = h1 * h2 by A11,FUNCT_1:49;
  end;
  H is Group-like
  proof
    set a = the Element of H;
    reconsider x = a as Element of G by Lm1;
    x" in A by A3;
    then x * x" in A by A2;
    then reconsider t = 1_G as Element of H by GROUP_1:def 5;
    take t;
    let a be Element of H;
    reconsider x = a as Element of G by Lm1;
    thus a * t = x * 1_G by A10
      .= a by GROUP_1:def 4;
    thus t * a = 1_G * x by A10
      .= a by GROUP_1:def 4;
    reconsider s = x" as Element of H by A3;
    take s;
    thus a * s = x * x" by A10
      .= t by GROUP_1:def 5;
    thus s * a = x" * x by A10
      .= t by GROUP_1:def 5;
  end;
  then reconsider H as Group-like non empty multMagma;
  reconsider H as strict Subgroup of G by Def5;
  take H;
  thus thesis;
end;
