:: TOPGRP_1 semantic presentation

registration
let c1 be set ;
cluster one-to-one onto M4(a1,a1);
existence
ex b1 being Function of c1,c1 st
( b1 is one-to-one & b1 is onto )
proof end;
end;

theorem Th1: :: TOPGRP_1:1
for b1 being 1-sorted holds rng (id b1) = [#] b1
proof end;

registration
let c1 be non empty 1-sorted ;
cluster (id a1) /" -> one-to-one ;
coherence
(id c1) /" is one-to-one
proof end;
end;

theorem Th2: :: TOPGRP_1:2
for b1 being non empty 1-sorted holds (id b1) /" = id b1
proof end;

theorem Th3: :: TOPGRP_1:3
for b1 being non empty 1-sorted
for b2 being Subset of b1 holds (id b1) " b2 = b2
proof end;

registration
let c1 be 1-sorted ;
cluster one-to-one onto M4(the carrier of a1,the carrier of a1);
existence
ex b1 being Function of c1,c1 st
( b1 is one-to-one & b1 is onto )
proof end;
end;

theorem Th4: :: TOPGRP_1:4
for b1 being non empty HGrStr
for b2, b3, b4, b5 being Subset of b1 st b2 c= b3 & b4 c= b5 holds
b2 * b4 c= b3 * b5
proof end;

theorem Th5: :: TOPGRP_1:5
for b1 being non empty HGrStr
for b2, b3 being Subset of b1
for b4 being Element of b1 st b2 c= b3 holds
b2 * b4 c= b3 * b4
proof end;

theorem Th6: :: TOPGRP_1:6
for b1 being non empty HGrStr
for b2, b3 being Subset of b1
for b4 being Element of b1 st b2 c= b3 holds
b4 * b2 c= b4 * b3
proof end;

theorem Th7: :: TOPGRP_1:7
for b1 being Group
for b2 being Subset of b1
for b3 being Element of b1 holds
( b3 in b2 " iff b3 " in b2 )
proof end;

theorem Th8: :: TOPGRP_1:8
for b1 being Group
for b2 being Subset of b1 holds (b2 " ) " = b2
proof end;

theorem Th9: :: TOPGRP_1:9
for b1 being Group
for b2, b3 being Subset of b1 holds
( b2 c= b3 iff b2 " c= b3 " )
proof end;

theorem Th10: :: TOPGRP_1:10
for b1 being Group
for b2 being Subset of b1 holds (inverse_op b1) .: b2 = b2 "
proof end;

theorem Th11: :: TOPGRP_1:11
for b1 being Group
for b2 being Subset of b1 holds (inverse_op b1) " b2 = b2 "
proof end;

theorem Th12: :: TOPGRP_1:12
for b1 being Group holds inverse_op b1 is one-to-one
proof end;

theorem Th13: :: TOPGRP_1:13
for b1 being Group holds rng (inverse_op b1) = the carrier of b1
proof end;

registration
let c1 be Group;
cluster inverse_op a1 -> one-to-one onto ;
coherence
( inverse_op c1 is one-to-one & inverse_op c1 is onto )
proof end;
end;

theorem Th14: :: TOPGRP_1:14
for b1 being Group holds (inverse_op b1) " = inverse_op b1
proof end;

theorem Th15: :: TOPGRP_1:15
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 holds the mult of b1 .: [:b2,b3:] = b2 * b3
proof end;

definition
let c1 be non empty HGrStr ;
let c2 be Element of c1;
func c2 * -> Function of a1,a1 means :Def1: :: TOPGRP_1:def 1
for b1 being Element of a1 holds a3 . b1 = a2 * b1;
existence
ex b1 being Function of c1,c1 st
for b2 being Element of c1 holds b1 . b2 = c2 * b2
proof end;
uniqueness
for b1, b2 being Function of c1,c1 st ( for b3 being Element of c1 holds b1 . b3 = c2 * b3 ) & ( for b3 being Element of c1 holds b2 . b3 = c2 * b3 ) holds
b1 = b2
proof end;
func * c2 -> Function of a1,a1 means :Def2: :: TOPGRP_1:def 2
for b1 being Element of a1 holds a3 . b1 = b1 * a2;
existence
ex b1 being Function of c1,c1 st
for b2 being Element of c1 holds b1 . b2 = b2 * c2
proof end;
uniqueness
for b1, b2 being Function of c1,c1 st ( for b3 being Element of c1 holds b1 . b3 = b3 * c2 ) & ( for b3 being Element of c1 holds b2 . b3 = b3 * c2 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines * TOPGRP_1:def 1 :
for b1 being non empty HGrStr
for b2 being Element of b1
for b3 being Function of b1,b1 holds
( b3 = b2 * iff for b4 being Element of b1 holds b3 . b4 = b2 * b4 );

:: deftheorem Def2 defines * TOPGRP_1:def 2 :
for b1 being non empty HGrStr
for b2 being Element of b1
for b3 being Function of b1,b1 holds
( b3 = * b2 iff for b4 being Element of b1 holds b3 . b4 = b4 * b2 );

registration
let c1 be Group;
let c2 be Element of c1;
cluster a2 * -> one-to-one onto ;
coherence
( c2 * is one-to-one & c2 * is onto )
proof end;
cluster * a2 -> one-to-one onto ;
coherence
( * c2 is one-to-one & * c2 is onto )
proof end;
end;

theorem Th16: :: TOPGRP_1:16
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3 being Element of b1 holds (b3 * ) .: b2 = b3 * b2
proof end;

theorem Th17: :: TOPGRP_1:17
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3 being Element of b1 holds (* b3) .: b2 = b2 * b3
proof end;

theorem Th18: :: TOPGRP_1:18
for b1 being Group
for b2 being Element of b1 holds (b2 * ) /" = (b2 " ) *
proof end;

theorem Th19: :: TOPGRP_1:19
for b1 being Group
for b2 being Element of b1 holds (* b2) /" = * (b2 " )
proof end;

registration
let c1 be non empty TopStruct ;
cluster (id a1) /" -> one-to-one continuous ;
coherence
(id c1) /" is continuous
by Th2;
end;

theorem Th20: :: TOPGRP_1:20
for b1 being non empty TopStruct holds id b1 is_homeomorphism
proof end;

registration
let c1 be non empty TopSpace;
let c2 be Point of c1;
cluster -> non empty a_neighborhood of a2;
coherence
for b1 being a_neighborhood of c2 holds not b1 is empty
proof end;
end;

theorem Th21: :: TOPGRP_1:21
for b1 being non empty TopSpace
for b2 being Point of b1 holds [#] b1 is a_neighborhood of b2
proof end;

registration
let c1 be non empty TopSpace;
let c2 be Point of c1;
cluster non empty open a_neighborhood of a2;
existence
ex b1 being a_neighborhood of c2 st
( not b1 is empty & b1 is open )
proof end;
end;

theorem Th22: :: TOPGRP_1:22
for b1, b2 being non empty TopSpace
for b3 being Function of b1,b2 st b3 is open holds
for b4 being Point of b1
for b5 being a_neighborhood of b4 ex b6 being open a_neighborhood of b3 . b4 st b6 c= b3 .: b5
proof end;

theorem Th23: :: TOPGRP_1:23
for b1, b2 being non empty TopSpace
for b3 being Function of b1,b2 st ( for b4 being Point of b1
for b5 being open a_neighborhood of b4 ex b6 being a_neighborhood of b3 . b4 st b6 c= b3 .: b5 ) holds
b3 is open
proof end;

theorem Th24: :: TOPGRP_1:24
for b1, b2 being non empty TopStruct
for b3 being Function of b1,b2 holds
( b3 is_homeomorphism iff ( dom b3 = [#] b1 & rng b3 = [#] b2 & b3 is one-to-one & ( for b4 being Subset of b2 holds
( b4 is closed iff b3 " b4 is closed ) ) ) )
proof end;

theorem Th25: :: TOPGRP_1:25
for b1, b2 being non empty TopStruct
for b3 being Function of b1,b2 holds
( b3 is_homeomorphism iff ( dom b3 = [#] b1 & rng b3 = [#] b2 & b3 is one-to-one & ( for b4 being Subset of b1 holds
( b4 is open iff b3 .: b4 is open ) ) ) )
proof end;

theorem Th26: :: TOPGRP_1:26
for b1, b2 being non empty TopStruct
for b3 being Function of b1,b2 holds
( b3 is_homeomorphism iff ( dom b3 = [#] b1 & rng b3 = [#] b2 & b3 is one-to-one & ( for b4 being Subset of b2 holds
( b4 is open iff b3 " b4 is open ) ) ) )
proof end;

theorem Th27: :: TOPGRP_1:27
for b1 being TopSpace
for b2 being non empty TopSpace
for b3 being Function of b1,b2 holds
( b3 is continuous iff for b4 being Subset of b2 holds b3 " (Int b4) c= Int (b3 " b4) )
proof end;

registration
let c1 be non empty TopSpace;
cluster non empty dense Element of bool the carrier of a1;
existence
ex b1 being Subset of c1 st
( not b1 is empty & b1 is dense )
proof end;
end;

theorem Th28: :: TOPGRP_1:28
for b1, b2 being non empty TopSpace
for b3 being Function of b1,b2
for b4 being dense Subset of b1 st b3 is_homeomorphism holds
b3 .: b4 is dense
proof end;

theorem Th29: :: TOPGRP_1:29
for b1, b2 being non empty TopSpace
for b3 being Function of b1,b2
for b4 being dense Subset of b2 st b3 is_homeomorphism holds
b3 " b4 is dense
proof end;

registration
let c1, c2 be non empty TopStruct ;
cluster being_homeomorphism -> one-to-one onto continuous open M4(the carrier of a1,the carrier of a2);
coherence
for b1 being Function of c1,c2 st b1 is being_homeomorphism holds
( b1 is onto & b1 is one-to-one & b1 is continuous & b1 is open )
proof end;
end;

registration
let c1 be non empty TopStruct ;
cluster one-to-one onto continuous being_homeomorphism open M4(the carrier of a1,the carrier of a1);
existence
ex b1 being Function of c1,c1 st b1 is being_homeomorphism
proof end;
end;

registration
let c1 be non empty TopStruct ;
let c2 be being_homeomorphism Function of c1,c1;
cluster a2 /" -> one-to-one onto continuous being_homeomorphism open ;
coherence
c2 /" is being_homeomorphism
by TOPS_2:70;
end;

definition
let c1 be non empty TopStruct ;
mode Homeomorphism of c1 -> Function of a1,a1 means :Def3: :: TOPGRP_1:def 3
a2 is_homeomorphism ;
existence
ex b1 being Function of c1,c1 st b1 is_homeomorphism
proof end;
end;

:: deftheorem Def3 defines Homeomorphism TOPGRP_1:def 3 :
for b1 being non empty TopStruct
for b2 being Function of b1,b1 holds
( b2 is Homeomorphism of b1 iff b2 is_homeomorphism );

definition
let c1 be non empty TopStruct ;
redefine func id as id c1 -> Homeomorphism of a1;
coherence
id c1 is Homeomorphism of c1
proof end;
end;

registration
let c1 be non empty TopStruct ;
cluster -> being_homeomorphism Homeomorphism of a1;
coherence
for b1 being Homeomorphism of c1 holds b1 is being_homeomorphism
by Def3;
end;

theorem Th30: :: TOPGRP_1:30
for b1 being non empty TopStruct
for b2 being Homeomorphism of b1 holds b2 /" is Homeomorphism of b1
proof end;

theorem Th31: :: TOPGRP_1:31
for b1 being non empty TopStruct
for b2, b3 being Homeomorphism of b1 holds b2 * b3 is Homeomorphism of b1
proof end;

definition
let c1 be non empty TopStruct ;
func HomeoGroup c1 -> strict HGrStr means :Def4: :: TOPGRP_1:def 4
for b1 being set holds
( ( b1 in the carrier of a2 implies b1 is Homeomorphism of a1 ) & ( b1 is Homeomorphism of a1 implies b1 in the carrier of a2 ) & ( for b2, b3 being Homeomorphism of a1 holds the mult of a2 . b2,b3 = b3 * b2 ) );
existence
ex b1 being strict HGrStr st
for b2 being set holds
( ( b2 in the carrier of b1 implies b2 is Homeomorphism of c1 ) & ( b2 is Homeomorphism of c1 implies b2 in the carrier of b1 ) & ( for b3, b4 being Homeomorphism of c1 holds the mult of b1 . b3,b4 = b4 * b3 ) )
proof end;
uniqueness
for b1, b2 being strict HGrStr st ( for b3 being set holds
( ( b3 in the carrier of b1 implies b3 is Homeomorphism of c1 ) & ( b3 is Homeomorphism of c1 implies b3 in the carrier of b1 ) & ( for b4, b5 being Homeomorphism of c1 holds the mult of b1 . b4,b5 = b5 * b4 ) ) ) & ( for b3 being set holds
( ( b3 in the carrier of b2 implies b3 is Homeomorphism of c1 ) & ( b3 is Homeomorphism of c1 implies b3 in the carrier of b2 ) & ( for b4, b5 being Homeomorphism of c1 holds the mult of b2 . b4,b5 = b5 * b4 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines HomeoGroup TOPGRP_1:def 4 :
for b1 being non empty TopStruct
for b2 being strict HGrStr holds
( b2 = HomeoGroup b1 iff for b3 being set holds
( ( b3 in the carrier of b2 implies b3 is Homeomorphism of b1 ) & ( b3 is Homeomorphism of b1 implies b3 in the carrier of b2 ) & ( for b4, b5 being Homeomorphism of b1 holds the mult of b2 . b4,b5 = b5 * b4 ) ) );

registration
let c1 be non empty TopStruct ;
cluster HomeoGroup a1 -> non empty strict ;
coherence
not HomeoGroup c1 is empty
proof end;
end;

theorem Th32: :: TOPGRP_1:32
for b1 being non empty TopStruct
for b2, b3 being Homeomorphism of b1
for b4, b5 being Element of (HomeoGroup b1) st b2 = b4 & b3 = b5 holds
b4 * b5 = b3 * b2 by Def4;

registration
let c1 be non empty TopStruct ;
cluster HomeoGroup a1 -> non empty strict Group-like associative ;
coherence
( HomeoGroup c1 is Group-like & HomeoGroup c1 is associative )
proof end;
end;

theorem Th33: :: TOPGRP_1:33
for b1 being non empty TopStruct holds id b1 = 1. (HomeoGroup b1)
proof end;

theorem Th34: :: TOPGRP_1:34
for b1 being non empty TopStruct
for b2 being Homeomorphism of b1
for b3 being Element of (HomeoGroup b1) st b2 = b3 holds
b3 " = b2 /"
proof end;

definition
let c1 be non empty TopStruct ;
attr a1 is homogeneous means :Def5: :: TOPGRP_1:def 5
for b1, b2 being Point of a1 ex b3 being Homeomorphism of a1 st b3 . b1 = b2;
end;

:: deftheorem Def5 defines homogeneous TOPGRP_1:def 5 :
for b1 being non empty TopStruct holds
( b1 is homogeneous iff for b2, b3 being Point of b1 ex b4 being Homeomorphism of b1 st b4 . b2 = b3 );

registration
cluster non empty trivial -> non empty homogeneous TopStruct ;
coherence
for b1 being non empty TopStruct st b1 is trivial holds
b1 is homogeneous
proof end;
end;

registration
cluster non empty trivial strict homogeneous TopStruct ;
existence
ex b1 being TopSpace st
( b1 is strict & b1 is trivial & not b1 is empty )
proof end;
end;

theorem Th35: :: TOPGRP_1:35
for b1 being non empty homogeneous TopSpace st ex b2 being Point of b1 st {b2} is closed holds
b1 is_T1
proof end;

theorem Th36: :: TOPGRP_1:36
for b1 being non empty homogeneous TopSpace st ex b2 being Point of b1 st
for b3 being Subset of b1 st b3 is open & b2 in b3 holds
ex b4 being Subset of b1 st
( b2 in b4 & b4 is open & Cl b4 c= b3 ) holds
b1 is_T3
proof end;

definition
attr a1 is strict;
struct TopGrStr -> HGrStr , TopStruct ;
aggr TopGrStr(# carrier, mult, topology #) -> TopGrStr ;
end;

registration
let c1 be non empty set ;
let c2 be BinOp of c1;
let c3 be Subset-Family of c1;
cluster TopGrStr(# a1,a2,a3 #) -> non empty ;
coherence
not TopGrStr(# c1,c2,c3 #) is empty
proof end;
end;

registration
let c1 be set ;
let c2 be BinOp of {c1};
let c3 be Subset-Family of {c1};
cluster TopGrStr(# {a1},a2,a3 #) -> non empty trivial homogeneous ;
coherence
TopGrStr(# {c1},c2,c3 #) is trivial
proof end;
end;

registration
cluster non empty trivial -> non empty Group-like associative commutative HGrStr ;
coherence
for b1 being non empty HGrStr st b1 is trivial holds
( b1 is Group-like & b1 is associative & b1 is commutative )
proof end;
end;

registration
let c1 be set ;
cluster 1TopSp {a1} -> trivial homogeneous ;
coherence
1TopSp {c1} is trivial
proof end;
end;

registration
cluster non empty strict TopGrStr ;
existence
ex b1 being TopGrStr st
( b1 is strict & not b1 is empty )
proof end;
end;

registration
cluster non empty Group-like associative commutative trivial TopSpace-like homogeneous strict TopGrStr ;
existence
ex b1 being non empty TopGrStr st
( b1 is strict & b1 is TopSpace-like & b1 is trivial )
proof end;
end;

definition
let c1 be non empty Group-like associative TopGrStr ;
redefine func inverse_op as inverse_op c1 -> Function of a1,a1;
coherence
inverse_op c1 is Function of c1,c1
;
end;

definition
let c1 be non empty Group-like associative TopGrStr ;
attr a1 is UnContinuous means :Def6: :: TOPGRP_1:def 6
inverse_op a1 is continuous;
end;

:: deftheorem Def6 defines UnContinuous TOPGRP_1:def 6 :
for b1 being non empty Group-like associative TopGrStr holds
( b1 is UnContinuous iff inverse_op b1 is continuous );

definition
let c1 be TopSpace-like TopGrStr ;
attr a1 is BinContinuous means :Def7: :: TOPGRP_1:def 7
for b1 being Function of [:a1,a1:],a1 st b1 = the mult of a1 holds
b1 is continuous;
end;

:: deftheorem Def7 defines BinContinuous TOPGRP_1:def 7 :
for b1 being TopSpace-like TopGrStr holds
( b1 is BinContinuous iff for b2 being Function of [:b1,b1:],b1 st b2 = the mult of b1 holds
b2 is continuous );

registration
cluster non empty Group-like associative commutative trivial TopSpace-like homogeneous strict UnContinuous BinContinuous TopGrStr ;
existence
ex b1 being non empty Group-like associative TopSpace-like TopGrStr st
( b1 is strict & b1 is commutative & b1 is trivial & b1 is UnContinuous & b1 is BinContinuous )
proof end;
end;

definition
mode TopGroup is non empty Group-like associative TopSpace-like TopGrStr ;
end;

definition
mode TopologicalGroup is UnContinuous BinContinuous TopGroup;
end;

theorem Th37: :: TOPGRP_1:37
for b1 being non empty TopSpace-like BinContinuous TopGrStr
for b2, b3 being Element of b1
for b4 being a_neighborhood of b2 * b3 ex b5 being open a_neighborhood of b2ex b6 being open a_neighborhood of b3 st b5 * b6 c= b4
proof end;

theorem Th38: :: TOPGRP_1:38
for b1 being non empty TopSpace-like TopGrStr st ( for b2, b3 being Element of b1
for b4 being a_neighborhood of b2 * b3 ex b5 being a_neighborhood of b2ex b6 being a_neighborhood of b3 st b5 * b6 c= b4 ) holds
b1 is BinContinuous
proof end;

theorem Th39: :: TOPGRP_1:39
for b1 being UnContinuous TopGroup
for b2 being Element of b1
for b3 being a_neighborhood of b2 " ex b4 being open a_neighborhood of b2 st b4 " c= b3
proof end;

theorem Th40: :: TOPGRP_1:40
for b1 being TopGroup st ( for b2 being Element of b1
for b3 being a_neighborhood of b2 " ex b4 being a_neighborhood of b2 st b4 " c= b3 ) holds
b1 is UnContinuous
proof end;

theorem Th41: :: TOPGRP_1:41
for b1 being TopologicalGroup
for b2, b3 being Element of b1
for b4 being a_neighborhood of b2 * (b3 " ) ex b5 being open a_neighborhood of b2ex b6 being open a_neighborhood of b3 st b5 * (b6 " ) c= b4
proof end;

theorem Th42: :: TOPGRP_1:42
for b1 being TopGroup st ( for b2, b3 being Element of b1
for b4 being a_neighborhood of b2 * (b3 " ) ex b5 being a_neighborhood of b2ex b6 being a_neighborhood of b3 st b5 * (b6 " ) c= b4 ) holds
b1 is TopologicalGroup
proof end;

registration
let c1 be non empty TopSpace-like BinContinuous TopGrStr ;
let c2 be Element of c1;
cluster a2 * -> continuous ;
coherence
c2 * is continuous
proof end;
cluster * a2 -> continuous ;
coherence
* c2 is continuous
proof end;
end;

theorem Th43: :: TOPGRP_1:43
for b1 being BinContinuous TopGroup
for b2 being Element of b1 holds b2 * is Homeomorphism of b1
proof end;

theorem Th44: :: TOPGRP_1:44
for b1 being BinContinuous TopGroup
for b2 being Element of b1 holds * b2 is Homeomorphism of b1
proof end;

definition
let c1 be BinContinuous TopGroup;
let c2 be Element of c1;
redefine func * as c2 * -> Homeomorphism of a1;
coherence
c2 * is Homeomorphism of c1
by Th43;
redefine func * as * c2 -> Homeomorphism of a1;
coherence
* c2 is Homeomorphism of c1
by Th44;
end;

theorem Th45: :: TOPGRP_1:45
for b1 being UnContinuous TopGroup holds inverse_op b1 is Homeomorphism of b1
proof end;

definition
let c1 be UnContinuous TopGroup;
redefine func inverse_op as inverse_op c1 -> Homeomorphism of a1;
coherence
inverse_op c1 is Homeomorphism of c1
by Th45;
end;

registration
cluster BinContinuous -> homogeneous TopGrStr ;
coherence
for b1 being TopGroup st b1 is BinContinuous holds
b1 is homogeneous
proof end;
end;

theorem Th46: :: TOPGRP_1:46
for b1 being BinContinuous TopGroup
for b2 being closed Subset of b1
for b3 being Element of b1 holds b2 * b3 is closed
proof end;

theorem Th47: :: TOPGRP_1:47
for b1 being BinContinuous TopGroup
for b2 being closed Subset of b1
for b3 being Element of b1 holds b3 * b2 is closed
proof end;

registration
let c1 be BinContinuous TopGroup;
let c2 be closed Subset of c1;
let c3 be Element of c1;
cluster a2 * a3 -> closed ;
coherence
c2 * c3 is closed
by Th46;
cluster a3 * a2 -> closed ;
coherence
c3 * c2 is closed
by Th47;
end;

theorem Th48: :: TOPGRP_1:48
for b1 being UnContinuous TopGroup
for b2 being closed Subset of b1 holds b2 " is closed
proof end;

registration
let c1 be UnContinuous TopGroup;
let c2 be closed Subset of c1;
cluster a2 " -> closed ;
coherence
c2 " is closed
by Th48;
end;

theorem Th49: :: TOPGRP_1:49
for b1 being BinContinuous TopGroup
for b2 being open Subset of b1
for b3 being Element of b1 holds b2 * b3 is open
proof end;

theorem Th50: :: TOPGRP_1:50
for b1 being BinContinuous TopGroup
for b2 being open Subset of b1
for b3 being Element of b1 holds b3 * b2 is open
proof end;

registration
let c1 be BinContinuous TopGroup;
let c2 be open Subset of c1;
let c3 be Element of c1;
cluster a2 * a3 -> open ;
coherence
c2 * c3 is open
by Th49;
cluster a3 * a2 -> open ;
coherence
c3 * c2 is open
by Th50;
end;

theorem Th51: :: TOPGRP_1:51
for b1 being UnContinuous TopGroup
for b2 being open Subset of b1 holds b2 " is open
proof end;

registration
let c1 be UnContinuous TopGroup;
let c2 be open Subset of c1;
cluster a2 " -> open ;
coherence
c2 " is open
by Th51;
end;

theorem Th52: :: TOPGRP_1:52
for b1 being BinContinuous TopGroup
for b2, b3 being Subset of b1 st b3 is open holds
b3 * b2 is open
proof end;

theorem Th53: :: TOPGRP_1:53
for b1 being BinContinuous TopGroup
for b2, b3 being Subset of b1 st b3 is open holds
b2 * b3 is open
proof end;

registration
let c1 be BinContinuous TopGroup;
let c2 be open Subset of c1;
let c3 be Subset of c1;
cluster a2 * a3 -> open ;
coherence
c2 * c3 is open
by Th52;
cluster a3 * a2 -> open ;
coherence
c3 * c2 is open
by Th53;
end;

theorem Th54: :: TOPGRP_1:54
for b1 being UnContinuous TopGroup
for b2 being Point of b1
for b3 being a_neighborhood of b2 holds b3 " is a_neighborhood of b2 "
proof end;

theorem Th55: :: TOPGRP_1:55
for b1 being TopologicalGroup
for b2 being Point of b1
for b3 being a_neighborhood of b2 * (b2 " ) ex b4 being open a_neighborhood of b2 st b4 * (b4 " ) c= b3
proof end;

theorem Th56: :: TOPGRP_1:56
for b1 being UnContinuous TopGroup
for b2 being dense Subset of b1 holds b2 " is dense
proof end;

registration
let c1 be UnContinuous TopGroup;
let c2 be dense Subset of c1;
cluster a2 " -> dense ;
coherence
c2 " is dense
by Th56;
end;

theorem Th57: :: TOPGRP_1:57
for b1 being BinContinuous TopGroup
for b2 being dense Subset of b1
for b3 being Point of b1 holds b3 * b2 is dense
proof end;

theorem Th58: :: TOPGRP_1:58
for b1 being BinContinuous TopGroup
for b2 being dense Subset of b1
for b3 being Point of b1 holds b2 * b3 is dense
proof end;

registration
let c1 be BinContinuous TopGroup;
let c2 be dense Subset of c1;
let c3 be Point of c1;
cluster a2 * a3 -> dense ;
coherence
c2 * c3 is dense
by Th58;
cluster a3 * a2 -> dense ;
coherence
c3 * c2 is dense
by Th57;
end;

theorem Th59: :: TOPGRP_1:59
for b1 being TopologicalGroup
for b2 being Basis of 1. b1
for b3 being dense Subset of b1 holds { (b4 * b5) where B is Subset of b1, B is Point of b1 : ( b4 in b2 & b5 in b3 ) } is Basis of b1
proof end;

theorem Th60: :: TOPGRP_1:60
for b1 being TopologicalGroup holds b1 is_T3
proof end;

registration
cluster -> being_T3 homogeneous TopGrStr ;
coherence
for b1 being TopologicalGroup holds b1 is being_T3
by Th60;
end;