reserve S, R for 1-sorted,
  X for Subset of R,
  T for TopStruct,
  x for set;
reserve H for non empty multMagma,
  P, Q, P1, Q1 for Subset of H,
  h for Element of H;
reserve G for Group,
  A, B for Subset of G,
  a for Element of G;

theorem Th59:
  for G being TopologicalGroup holds G is regular
proof
  let G be TopologicalGroup;
  ex p being Point of G st for A being Subset of G st A is open & p in A
  holds ex B being Subset of G st p in B & B is open & Cl B c= A
  proof
    set e = 1_G;
    take e;
    let A be Subset of G;
    assume A is open & e in A;
    then e in Int A by TOPS_1:23;
    then
A1: A is a_neighborhood of e by CONNSP_2:def 1;
    e = e*e" by GROUP_1:def 5;
    then consider
    C being open a_neighborhood of e, B being open a_neighborhood of
    e" such that
A2: C*B c= A by A1,Th36;
    e"" = e;
    then B" is a_neighborhood of e by Th53;
    then reconsider W = C /\ (B") as a_neighborhood of e by CONNSP_2:2;
    W c= B" by XBOOLE_1:17;
    then W" c= B"" by Th8;
    then C*W" c= C*B by Th4;
    then
A3: C*W" c= A by A2;
    take W;
    Int W = W by TOPS_1:23;
    hence
A4: e in W & W is open by CONNSP_2:def 1;
    let p be object;
    assume
A5: p in Cl W;
    then reconsider r = p as Point of G;
    r = r*e by GROUP_1:def 4;
    then p in r*W by A4,GROUP_2:27;
    then (r*W) meets W by A5,PRE_TOPC:def 7;
    then consider a being object such that
A6: a in (r*W) /\ W by XBOOLE_0:4;
A7: a in W by A6,XBOOLE_0:def 4;
A8: a in r*W by A6,XBOOLE_0:def 4;
    reconsider a as Point of G by A6;
    consider b being Element of G such that
A9: a = r * b and
A10: b in W by A8,GROUP_2:27;
A11: W c= C & b" in W" by A10,XBOOLE_1:17;
    r = r * e by GROUP_1:def 4
      .= r * (b * b") by GROUP_1:def 5
      .= a * (b") by A9,GROUP_1:def 3;
    then p in C * W" by A7,A11;
    hence thesis by A3;
  end;
  hence thesis by Th35;
end;
