:: GROUP_2 semantic presentation

Lemma1: for b1 being set
for b2 being non empty 1-sorted
for b3 being Subset of b2 st b1 in b3 holds
b1 is Element of b2
;

theorem Th1: :: GROUP_2:1
canceled;

theorem Th2: :: GROUP_2:2
canceled;

theorem Th3: :: GROUP_2:3
for b1 being non empty 1-sorted
for b2 being Subset of b1 st b1 is finite holds
b2 is finite
proof end;

definition
let c1 be Group;
let c2 be Subset of c1;
func c2 " -> Subset of a1 equals :: GROUP_2:def 1
{ (b1 " ) where B is Element of a1 : b1 in a2 } ;
coherence
{ (b1 " ) where B is Element of c1 : b1 in c2 } is Subset of c1
proof end;
end;

:: deftheorem Def1 defines " GROUP_2:def 1 :
for b1 being Group
for b2 being Subset of b1 holds b2 " = { (b3 " ) where B is Element of b1 : b3 in b2 } ;

theorem Th4: :: GROUP_2:4
canceled;

theorem Th5: :: GROUP_2:5
for b1 being set
for b2 being Group
for b3 being Subset of b2 holds
( b1 in b3 " iff ex b4 being Element of b2 st
( b1 = b4 " & b4 in b3 ) ) ;

theorem Th6: :: GROUP_2:6
for b1 being Group
for b2 being Element of b1 holds {b2} " = {(b2 " )}
proof end;

theorem Th7: :: GROUP_2:7
for b1 being Group
for b2, b3 being Element of b1 holds {b2,b3} " = {(b2 " ),(b3 " )}
proof end;

theorem Th8: :: GROUP_2:8
for b1 being Group holds ({} the carrier of b1) " = {}
proof end;

theorem Th9: :: GROUP_2:9
for b1 being Group holds ([#] the carrier of b1) " = the carrier of b1
proof end;

theorem Th10: :: GROUP_2:10
for b1 being Group
for b2 being Subset of b1 holds
( b2 <> {} iff b2 " <> {} )
proof end;

definition
let c1 be non empty HGrStr ;
let c2, c3 be Subset of c1;
func c2 * c3 -> Subset of a1 equals :: GROUP_2:def 2
{ (b1 * b2) where B is Element of a1, B is Element of a1 : ( b1 in a2 & b2 in a3 ) } ;
coherence
{ (b1 * b2) where B is Element of c1, B is Element of c1 : ( b1 in c2 & b2 in c3 ) } is Subset of c1
proof end;
end;

:: deftheorem Def2 defines * GROUP_2:def 2 :
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 holds b2 * b3 = { (b4 * b5) where B is Element of b1, B is Element of b1 : ( b4 in b2 & b5 in b3 ) } ;

theorem Th11: :: GROUP_2:11
canceled;

theorem Th12: :: GROUP_2:12
for b1 being set
for b2 being non empty HGrStr
for b3, b4 being Subset of b2 holds
( b1 in b3 * b4 iff ex b5, b6 being Element of b2 st
( b1 = b5 * b6 & b5 in b3 & b6 in b4 ) ) ;

theorem Th13: :: GROUP_2:13
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 holds
( ( b2 <> {} & b3 <> {} ) iff b2 * b3 <> {} )
proof end;

theorem Th14: :: GROUP_2:14
for b1 being non empty HGrStr
for b2, b3, b4 being Subset of b1 st b1 is associative holds
(b2 * b3) * b4 = b2 * (b3 * b4)
proof end;

theorem Th15: :: GROUP_2:15
for b1 being Group
for b2, b3 being Subset of b1 holds (b2 * b3) " = (b3 " ) * (b2 " )
proof end;

theorem Th16: :: GROUP_2:16
for b1 being non empty HGrStr
for b2, b3, b4 being Subset of b1 holds b2 * (b3 \/ b4) = (b2 * b3) \/ (b2 * b4)
proof end;

theorem Th17: :: GROUP_2:17
for b1 being non empty HGrStr
for b2, b3, b4 being Subset of b1 holds (b2 \/ b3) * b4 = (b2 * b4) \/ (b3 * b4)
proof end;

theorem Th18: :: GROUP_2:18
for b1 being non empty HGrStr
for b2, b3, b4 being Subset of b1 holds b2 * (b3 /\ b4) c= (b2 * b3) /\ (b2 * b4)
proof end;

theorem Th19: :: GROUP_2:19
for b1 being non empty HGrStr
for b2, b3, b4 being Subset of b1 holds (b2 /\ b3) * b4 c= (b2 * b4) /\ (b3 * b4)
proof end;

theorem Th20: :: GROUP_2:20
for b1 being non empty HGrStr
for b2 being Subset of b1 holds
( ({} the carrier of b1) * b2 = {} & b2 * ({} the carrier of b1) = {} )
proof end;

theorem Th21: :: GROUP_2:21
for b1 being Group
for b2 being Subset of b1 st b2 <> {} holds
( ([#] the carrier of b1) * b2 = the carrier of b1 & b2 * ([#] the carrier of b1) = the carrier of b1 )
proof end;

theorem Th22: :: GROUP_2:22
for b1 being non empty HGrStr
for b2, b3 being Element of b1 holds {b2} * {b3} = {(b2 * b3)}
proof end;

theorem Th23: :: GROUP_2:23
for b1 being non empty HGrStr
for b2, b3, b4 being Element of b1 holds {b2} * {b3,b4} = {(b2 * b3),(b2 * b4)}
proof end;

theorem Th24: :: GROUP_2:24
for b1 being non empty HGrStr
for b2, b3, b4 being Element of b1 holds {b2,b3} * {b4} = {(b2 * b4),(b3 * b4)}
proof end;

theorem Th25: :: GROUP_2:25
for b1 being non empty HGrStr
for b2, b3, b4, b5 being Element of b1 holds {b2,b3} * {b4,b5} = {(b2 * b4),(b2 * b5),(b3 * b4),(b3 * b5)}
proof end;

theorem Th26: :: GROUP_2:26
for b1 being Group
for b2 being Subset of b1 st ( for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 * b4 in b2 ) & ( for b3 being Element of b1 st b3 in b2 holds
b3 " in b2 ) holds
b2 * b2 = b2
proof end;

theorem Th27: :: GROUP_2:27
for b1 being Group
for b2 being Subset of b1 st ( for b3 being Element of b1 st b3 in b2 holds
b3 " in b2 ) holds
b2 " = b2
proof end;

theorem Th28: :: GROUP_2:28
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 st ( for b4, b5 being Element of b1 st b4 in b2 & b5 in b3 holds
b4 * b5 = b5 * b4 ) holds
b2 * b3 = b3 * b2
proof end;

Lemma12: for b1 being commutative Group
for b2, b3 being Element of b1 holds b2 * b3 = b3 * b2
;

theorem Th29: :: GROUP_2:29
for b1 being non empty HGrStr
for b2, b3 being Subset of b1 st b1 is commutative Group holds
b2 * b3 = b3 * b2
proof end;

theorem Th30: :: GROUP_2:30
for b1 being commutative Group
for b2, b3 being Subset of b1 holds (b2 * b3) " = (b2 " ) * (b3 " )
proof end;

definition
let c1 be non empty HGrStr ;
let c2 be Element of c1;
let c3 be Subset of c1;
func c2 * c3 -> Subset of a1 equals :: GROUP_2:def 3
{a2} * a3;
correctness
coherence
{c2} * c3 is Subset of c1
;
;
func c3 * c2 -> Subset of a1 equals :: GROUP_2:def 4
a3 * {a2};
correctness
coherence
c3 * {c2} is Subset of c1
;
;
end;

:: deftheorem Def3 defines * GROUP_2:def 3 :
for b1 being non empty HGrStr
for b2 being Element of b1
for b3 being Subset of b1 holds b2 * b3 = {b2} * b3;

:: deftheorem Def4 defines * GROUP_2:def 4 :
for b1 being non empty HGrStr
for b2 being Element of b1
for b3 being Subset of b1 holds b3 * b2 = b3 * {b2};

theorem Th31: :: GROUP_2:31
canceled;

theorem Th32: :: GROUP_2:32
canceled;

theorem Th33: :: GROUP_2:33
for b1 being set
for b2 being non empty HGrStr
for b3 being Subset of b2
for b4 being Element of b2 holds
( b1 in b4 * b3 iff ex b5 being Element of b2 st
( b1 = b4 * b5 & b5 in b3 ) )
proof end;

theorem Th34: :: GROUP_2:34
for b1 being set
for b2 being non empty HGrStr
for b3 being Subset of b2
for b4 being Element of b2 holds
( b1 in b3 * b4 iff ex b5 being Element of b2 st
( b1 = b5 * b4 & b5 in b3 ) )
proof end;

theorem Th35: :: GROUP_2:35
for b1 being non empty HGrStr
for b2, b3 being Subset of b1
for b4 being Element of b1 st b1 is associative holds
(b4 * b2) * b3 = b4 * (b2 * b3) by Th14;

theorem Th36: :: GROUP_2:36
for b1 being non empty HGrStr
for b2, b3 being Subset of b1
for b4 being Element of b1 st b1 is associative holds
(b2 * b4) * b3 = b2 * (b4 * b3) by Th14;

theorem Th37: :: GROUP_2:37
for b1 being non empty HGrStr
for b2, b3 being Subset of b1
for b4 being Element of b1 st b1 is associative holds
(b2 * b3) * b4 = b2 * (b3 * b4) by Th14;

theorem Th38: :: GROUP_2:38
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3, b4 being Element of b1 st b1 is associative holds
(b3 * b4) * b2 = b3 * (b4 * b2)
proof end;

theorem Th39: :: GROUP_2:39
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3, b4 being Element of b1 st b1 is associative holds
(b3 * b2) * b4 = b3 * (b2 * b4) by Th14;

theorem Th40: :: GROUP_2:40
for b1 being non empty HGrStr
for b2 being Subset of b1
for b3, b4 being Element of b1 st b1 is associative holds
(b2 * b3) * b4 = b2 * (b3 * b4)
proof end;

theorem Th41: :: GROUP_2:41
for b1 being non empty HGrStr
for b2 being Element of b1 holds
( ({} the carrier of b1) * b2 = {} & b2 * ({} the carrier of b1) = {} ) by Th20;

theorem Th42: :: GROUP_2:42
for b1 being Group
for b2 being Element of b1 holds
( ([#] the carrier of b1) * b2 = the carrier of b1 & b2 * ([#] the carrier of b1) = the carrier of b1 ) by Th21;

theorem Th43: :: GROUP_2:43
for b1 being non empty Group-like HGrStr
for b2 being Subset of b1 holds
( (1. b1) * b2 = b2 & b2 * (1. b1) = b2 )
proof end;

theorem Th44: :: GROUP_2:44
for b1 being non empty Group-like HGrStr
for b2 being Element of b1
for b3 being Subset of b1 st b1 is commutative Group holds
b2 * b3 = b3 * b2 by Th29;

definition
let c1 be non empty Group-like HGrStr ;
mode Subgroup of c1 -> non empty Group-like HGrStr means :Def5: :: GROUP_2:def 5
( the carrier of a2 c= the carrier of a1 & the mult of a2 = the mult of a1 || the carrier of a2 );
existence
ex b1 being non empty Group-like HGrStr st
( the carrier of b1 c= the carrier of c1 & the mult of b1 = the mult of c1 || the carrier of b1 )
proof end;
end;

:: deftheorem Def5 defines Subgroup GROUP_2:def 5 :
for b1, b2 being non empty Group-like HGrStr holds
( b2 is Subgroup of b1 iff ( the carrier of b2 c= the carrier of b1 & the mult of b2 = the mult of b1 || the carrier of b2 ) );

theorem Th45: :: GROUP_2:45
canceled;

theorem Th46: :: GROUP_2:46
canceled;

theorem Th47: :: GROUP_2:47
canceled;

theorem Th48: :: GROUP_2:48
for b1 being non empty Group-like HGrStr
for b2 being Subgroup of b1 st b1 is finite holds
b2 is finite
proof end;

theorem Th49: :: GROUP_2:49
for b1 being set
for b2 being non empty Group-like HGrStr
for b3 being Subgroup of b2 st b1 in b3 holds
b1 in b2
proof end;

theorem Th50: :: GROUP_2:50
for b1 being non empty Group-like HGrStr
for b2 being Subgroup of b1
for b3 being Element of b2 holds b3 in b1
proof end;

theorem Th51: :: GROUP_2:51
for b1 being non empty Group-like HGrStr
for b2 being Subgroup of b1
for b3 being Element of b2 holds b3 is Element of b1
proof end;

theorem Th52: :: GROUP_2:52
for b1 being non empty Group-like HGrStr
for b2, b3 being Element of b1
for b4 being Subgroup of b1
for b5, b6 being Element of b4 st b5 = b2 & b6 = b3 holds
b5 * b6 = b2 * b3
proof end;

registration
let c1 be Group;
cluster -> associative Subgroup of a1;
coherence
for b1 being Subgroup of c1 holds b1 is associative
proof end;
end;

theorem Th53: :: GROUP_2:53
for b1 being Group
for b2 being Subgroup of b1 holds 1. b2 = 1. b1
proof end;

theorem Th54: :: GROUP_2:54
for b1 being Group
for b2, b3 being Subgroup of b1 holds 1. b2 = 1. b3
proof end;

theorem Th55: :: GROUP_2:55
for b1 being Group
for b2 being Subgroup of b1 holds 1. b1 in b2
proof end;

theorem Th56: :: GROUP_2:56
for b1 being Group
for b2, b3 being Subgroup of b1 holds 1. b2 in b3
proof end;

theorem Th57: :: GROUP_2:57
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1
for b4 being Element of b3 st b4 = b2 holds
b4 " = b2 "
proof end;

theorem Th58: :: GROUP_2:58
for b1 being Group
for b2 being Subgroup of b1 holds inverse_op b2 = (inverse_op b1) | the carrier of b2
proof end;

theorem Th59: :: GROUP_2:59
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 st b2 in b4 & b3 in b4 holds
b2 * b3 in b4
proof end;

theorem Th60: :: GROUP_2:60
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 st b2 in b3 holds
b2 " in b3
proof end;

registration
let c1 be Group;
cluster non empty strict Group-like associative Subgroup of a1;
existence
ex b1 being Subgroup of c1 st b1 is strict
proof end;
end;

theorem Th61: :: GROUP_2:61
for b1 being Group
for b2 being Subset of b1 st b2 <> {} & ( for b3, b4 being Element of b1 st b3 in b2 & b4 in b2 holds
b3 * b4 in b2 ) & ( for b3 being Element of b1 st b3 in b2 holds
b3 " in b2 ) holds
ex b3 being strict Subgroup of b1 st the carrier of b3 = b2
proof end;

theorem Th62: :: GROUP_2:62
for b1 being Group
for b2 being Subgroup of b1 st b1 is commutative Group holds
b2 is commutative
proof end;

registration
let c1 be commutative Group;
cluster -> associative commutative Subgroup of a1;
coherence
for b1 being Subgroup of c1 holds b1 is commutative
by Th62;
end;

theorem Th63: :: GROUP_2:63
for b1 being Group holds b1 is Subgroup of b1
proof end;

theorem Th64: :: GROUP_2:64
for b1, b2 being Group st b1 is Subgroup of b2 & b2 is Subgroup of b1 holds
HGrStr(# the carrier of b1,the mult of b1 #) = HGrStr(# the carrier of b2,the mult of b2 #)
proof end;

theorem Th65: :: GROUP_2:65
for b1, b2, b3 being Group st b1 is Subgroup of b2 & b2 is Subgroup of b3 holds
b1 is Subgroup of b3
proof end;

theorem Th66: :: GROUP_2:66
for b1 being Group
for b2, b3 being Subgroup of b1 st the carrier of b2 c= the carrier of b3 holds
b2 is Subgroup of b3
proof end;

theorem Th67: :: GROUP_2:67
for b1 being Group
for b2, b3 being Subgroup of b1 st ( for b4 being Element of b1 st b4 in b2 holds
b4 in b3 ) holds
b2 is Subgroup of b3
proof end;

theorem Th68: :: GROUP_2:68
for b1 being Group
for b2, b3 being Subgroup of b1 st the carrier of b2 = the carrier of b3 holds
HGrStr(# the carrier of b2,the mult of b2 #) = HGrStr(# the carrier of b3,the mult of b3 #)
proof end;

theorem Th69: :: GROUP_2:69
for b1 being Group
for b2, b3 being Subgroup of b1 st ( for b4 being Element of b1 holds
( b4 in b2 iff b4 in b3 ) ) holds
HGrStr(# the carrier of b2,the mult of b2 #) = HGrStr(# the carrier of b3,the mult of b3 #)
proof end;

definition
let c1 be Group;
let c2, c3 be strict Subgroup of c1;
redefine pred = as c2 = c3 means :: GROUP_2:def 6
for b1 being Element of a1 holds
( b1 in a2 iff b1 in a3 );
compatibility
( c2 = c3 iff for b1 being Element of c1 holds
( b1 in c2 iff b1 in c3 ) )
by Th69;
end;

:: deftheorem Def6 defines = GROUP_2:def 6 :
for b1 being Group
for b2, b3 being strict Subgroup of b1 holds
( b2 = b3 iff for b4 being Element of b1 holds
( b4 in b2 iff b4 in b3 ) );

theorem Th70: :: GROUP_2:70
for b1 being strict Group
for b2 being strict Subgroup of b1 st the carrier of b2 = the carrier of b1 holds
b2 = b1
proof end;

theorem Th71: :: GROUP_2:71
for b1 being Group
for b2 being Subgroup of b1 st ( for b3 being Element of b1 holds b3 in b2 ) holds
HGrStr(# the carrier of b2,the mult of b2 #) = HGrStr(# the carrier of b1,the mult of b1 #)
proof end;

definition
let c1 be Group;
func (1). c1 -> strict Subgroup of a1 means :Def7: :: GROUP_2:def 7
the carrier of a2 = {(1. a1)};
existence
ex b1 being strict Subgroup of c1 st the carrier of b1 = {(1. c1)}
proof end;
uniqueness
for b1, b2 being strict Subgroup of c1 st the carrier of b1 = {(1. c1)} & the carrier of b2 = {(1. c1)} holds
b1 = b2
by Th68;
end;

:: deftheorem Def7 defines (1). GROUP_2:def 7 :
for b1 being Group
for b2 being strict Subgroup of b1 holds
( b2 = (1). b1 iff the carrier of b2 = {(1. b1)} );

definition
let c1 be Group;
func (Omega). c1 -> strict Subgroup of a1 equals :: GROUP_2:def 8
HGrStr(# the carrier of a1,the mult of a1 #);
coherence
HGrStr(# the carrier of c1,the mult of c1 #) is strict Subgroup of c1
proof end;
end;

:: deftheorem Def8 defines (Omega). GROUP_2:def 8 :
for b1 being Group holds (Omega). b1 = HGrStr(# the carrier of b1,the mult of b1 #);

theorem Th72: :: GROUP_2:72
canceled;

theorem Th73: :: GROUP_2:73
canceled;

theorem Th74: :: GROUP_2:74
canceled;

theorem Th75: :: GROUP_2:75
for b1 being Group
for b2 being Subgroup of b1 holds (1). b2 = (1). b1
proof end;

theorem Th76: :: GROUP_2:76
for b1 being Group
for b2, b3 being Subgroup of b1 holds (1). b2 = (1). b3
proof end;

theorem Th77: :: GROUP_2:77
for b1 being Group
for b2 being Subgroup of b1 holds (1). b1 is Subgroup of b2
proof end;

theorem Th78: :: GROUP_2:78
for b1 being strict Group
for b2 being Subgroup of b1 holds b2 is Subgroup of (Omega). b1 ;

theorem Th79: :: GROUP_2:79
for b1 being strict Group holds b1 is Subgroup of (Omega). b1 ;

theorem Th80: :: GROUP_2:80
for b1 being Group holds (1). b1 is finite
proof end;

theorem Th81: :: GROUP_2:81
for b1 being Group holds ord ((1). b1) = 1
proof end;

theorem Th82: :: GROUP_2:82
for b1 being Group
for b2 being strict Subgroup of b1 st b2 is finite & ord b2 = 1 holds
b2 = (1). b1
proof end;

theorem Th83: :: GROUP_2:83
for b1 being Group
for b2 being Subgroup of b1 holds Ord b2 <=` Ord b1
proof end;

theorem Th84: :: GROUP_2:84
for b1 being Group
for b2 being Subgroup of b1 st b1 is finite holds
ord b2 <= ord b1
proof end;

theorem Th85: :: GROUP_2:85
for b1 being strict Group
for b2 being strict Subgroup of b1 st b1 is finite & ord b1 = ord b2 holds
b2 = b1
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
func carr c2 -> Subset of a1 equals :: GROUP_2:def 9
the carrier of a2;
coherence
the carrier of c2 is Subset of c1
by Def5;
end;

:: deftheorem Def9 defines carr GROUP_2:def 9 :
for b1 being Group
for b2 being Subgroup of b1 holds carr b2 = the carrier of b2;

theorem Th86: :: GROUP_2:86
canceled;

theorem Th87: :: GROUP_2:87
for b1 being Group
for b2 being Subgroup of b1 holds carr b2 <> {} ;

theorem Th88: :: GROUP_2:88
for b1 being set
for b2 being Group
for b3 being Subgroup of b2 holds
( b1 in carr b3 iff b1 in b3 ) by RLVECT_1:def 1;

theorem Th89: :: GROUP_2:89
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 st b2 in carr b4 & b3 in carr b4 holds
b2 * b3 in carr b4
proof end;

theorem Th90: :: GROUP_2:90
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 st b2 in carr b3 holds
b2 " in carr b3
proof end;

theorem Th91: :: GROUP_2:91
for b1 being Group
for b2 being Subgroup of b1 holds (carr b2) * (carr b2) = carr b2
proof end;

theorem Th92: :: GROUP_2:92
for b1 being Group
for b2 being Subgroup of b1 holds (carr b2) " = carr b2
proof end;

theorem Th93: :: GROUP_2:93
for b1 being Group
for b2, b3 being Subgroup of b1 holds
( ( (carr b2) * (carr b3) = (carr b3) * (carr b2) implies ex b4 being strict Subgroup of b1 st the carrier of b4 = (carr b2) * (carr b3) ) & ( ex b4 being Subgroup of b1 st the carrier of b4 = (carr b2) * (carr b3) implies (carr b2) * (carr b3) = (carr b3) * (carr b2) ) )
proof end;

theorem Th94: :: GROUP_2:94
for b1 being Group
for b2, b3 being Subgroup of b1 st b1 is commutative Group holds
ex b4 being strict Subgroup of b1 st the carrier of b4 = (carr b2) * (carr b3)
proof end;

definition
let c1 be Group;
let c2, c3 be Subgroup of c1;
func c2 /\ c3 -> strict Subgroup of a1 means :Def10: :: GROUP_2:def 10
the carrier of a4 = (carr a2) /\ (carr a3);
existence
ex b1 being strict Subgroup of c1 st the carrier of b1 = (carr c2) /\ (carr c3)
proof end;
uniqueness
for b1, b2 being strict Subgroup of c1 st the carrier of b1 = (carr c2) /\ (carr c3) & the carrier of b2 = (carr c2) /\ (carr c3) holds
b1 = b2
by Th68;
end;

:: deftheorem Def10 defines /\ GROUP_2:def 10 :
for b1 being Group
for b2, b3 being Subgroup of b1
for b4 being strict Subgroup of b1 holds
( b4 = b2 /\ b3 iff the carrier of b4 = (carr b2) /\ (carr b3) );

theorem Th95: :: GROUP_2:95
canceled;

theorem Th96: :: GROUP_2:96
canceled;

theorem Th97: :: GROUP_2:97
for b1 being Group
for b2, b3 being Subgroup of b1 holds
( ( for b4 being Subgroup of b1 st b4 = b2 /\ b3 holds
the carrier of b4 = the carrier of b2 /\ the carrier of b3 ) & ( for b4 being strict Subgroup of b1 st the carrier of b4 = the carrier of b2 /\ the carrier of b3 holds
b4 = b2 /\ b3 ) )
proof end;

theorem Th98: :: GROUP_2:98
for b1 being Group
for b2, b3 being Subgroup of b1 holds carr (b2 /\ b3) = (carr b2) /\ (carr b3) by Def10;

theorem Th99: :: GROUP_2:99
for b1 being set
for b2 being Group
for b3, b4 being Subgroup of b2 holds
( b1 in b3 /\ b4 iff ( b1 in b3 & b1 in b4 ) )
proof end;

theorem Th100: :: GROUP_2:100
for b1 being Group
for b2 being strict Subgroup of b1 holds b2 /\ b2 = b2
proof end;

theorem Th101: :: GROUP_2:101
for b1 being Group
for b2, b3 being Subgroup of b1 holds b2 /\ b3 = b3 /\ b2
proof end;

definition
let c1 be Group;
let c2, c3 be Subgroup of c1;
redefine func /\ as c2 /\ c3 -> strict Subgroup of a1;
commutativity
for b1, b2 being Subgroup of c1 holds b1 /\ b2 = b2 /\ b1
by Th101;
end;

theorem Th102: :: GROUP_2:102
for b1 being Group
for b2, b3, b4 being Subgroup of b1 holds (b2 /\ b3) /\ b4 = b2 /\ (b3 /\ b4)
proof end;

Lemma59: for b1 being Group
for b2 being Subgroup of b1
for b3 being strict Subgroup of b1 holds
( b3 is Subgroup of b2 iff b3 /\ b2 = b3 )
proof end;

theorem Th103: :: GROUP_2:103
for b1 being Group
for b2 being Subgroup of b1 holds
( ((1). b1) /\ b2 = (1). b1 & b2 /\ ((1). b1) = (1). b1 )
proof end;

theorem Th104: :: GROUP_2:104
for b1 being strict Group
for b2 being strict Subgroup of b1 holds
( b2 /\ ((Omega). b1) = b2 & ((Omega). b1) /\ b2 = b2 ) by Lemma59;

theorem Th105: :: GROUP_2:105
for b1 being strict Group holds ((Omega). b1) /\ ((Omega). b1) = b1 by Th104;

Lemma61: for b1 being Group
for b2, b3 being Subgroup of b1 holds b2 /\ b3 is Subgroup of b2
proof end;

theorem Th106: :: GROUP_2:106
for b1 being Group
for b2, b3 being Subgroup of b1 holds
( b2 /\ b3 is Subgroup of b2 & b2 /\ b3 is Subgroup of b3 ) by Lemma61;

theorem Th107: :: GROUP_2:107
for b1 being Group
for b2 being Subgroup of b1
for b3 being strict Subgroup of b1 holds
( b3 is Subgroup of b2 iff b3 /\ b2 = b3 ) by Lemma59;

theorem Th108: :: GROUP_2:108
for b1 being Group
for b2, b3, b4 being Subgroup of b1 st b2 is Subgroup of b3 holds
b2 /\ b4 is Subgroup of b3
proof end;

theorem Th109: :: GROUP_2:109
for b1 being Group
for b2, b3, b4 being Subgroup of b1 st b2 is Subgroup of b3 & b2 is Subgroup of b4 holds
b2 is Subgroup of b3 /\ b4
proof end;

theorem Th110: :: GROUP_2:110
for b1 being Group
for b2, b3, b4 being Subgroup of b1 st b2 is Subgroup of b3 holds
b2 /\ b4 is Subgroup of b3 /\ b4
proof end;

theorem Th111: :: GROUP_2:111
for b1 being Group
for b2, b3 being Subgroup of b1 st ( b2 is finite or b3 is finite ) holds
b2 /\ b3 is finite
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
let c3 be Subset of c1;
func c3 * c2 -> Subset of a1 equals :: GROUP_2:def 11
a3 * (carr a2);
correctness
coherence
c3 * (carr c2) is Subset of c1
;
;
func c2 * c3 -> Subset of a1 equals :: GROUP_2:def 12
(carr a2) * a3;
correctness
coherence
(carr c2) * c3 is Subset of c1
;
;
end;

:: deftheorem Def11 defines * GROUP_2:def 11 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Subset of b1 holds b3 * b2 = b3 * (carr b2);

:: deftheorem Def12 defines * GROUP_2:def 12 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Subset of b1 holds b2 * b3 = (carr b2) * b3;

theorem Th112: :: GROUP_2:112
canceled;

theorem Th113: :: GROUP_2:113
canceled;

theorem Th114: :: GROUP_2:114
for b1 being set
for b2 being Group
for b3 being Subset of b2
for b4 being Subgroup of b2 holds
( b1 in b3 * b4 iff ex b5, b6 being Element of b2 st
( b1 = b5 * b6 & b5 in b3 & b6 in b4 ) )
proof end;

theorem Th115: :: GROUP_2:115
for b1 being set
for b2 being Group
for b3 being Subset of b2
for b4 being Subgroup of b2 holds
( b1 in b4 * b3 iff ex b5, b6 being Element of b2 st
( b1 = b5 * b6 & b5 in b4 & b6 in b3 ) )
proof end;

theorem Th116: :: GROUP_2:116
for b1 being Group
for b2, b3 being Subset of b1
for b4 being Subgroup of b1 holds (b2 * b3) * b4 = b2 * (b3 * b4) by Th14;

theorem Th117: :: GROUP_2:117
for b1 being Group
for b2, b3 being Subset of b1
for b4 being Subgroup of b1 holds (b2 * b4) * b3 = b2 * (b4 * b3) by Th14;

theorem Th118: :: GROUP_2:118
for b1 being Group
for b2, b3 being Subset of b1
for b4 being Subgroup of b1 holds (b4 * b2) * b3 = b4 * (b2 * b3) by Th14;

theorem Th119: :: GROUP_2:119
for b1 being Group
for b2 being Subset of b1
for b3, b4 being Subgroup of b1 holds (b2 * b3) * b4 = b2 * (b3 * (carr b4)) by Th14;

theorem Th120: :: GROUP_2:120
for b1 being Group
for b2 being Subset of b1
for b3, b4 being Subgroup of b1 holds (b3 * b2) * b4 = b3 * (b2 * b4) by Th116;

theorem Th121: :: GROUP_2:121
for b1 being Group
for b2 being Subset of b1
for b3, b4 being Subgroup of b1 holds (b3 * (carr b4)) * b2 = b3 * (b4 * b2) by Th118;

theorem Th122: :: GROUP_2:122
for b1 being Group
for b2 being Subset of b1
for b3 being Subgroup of b1 st b1 is commutative Group holds
b2 * b3 = b3 * b2 by Th29;

definition
let c1 be Group;
let c2 be Subgroup of c1;
let c3 be Element of c1;
func c3 * c2 -> Subset of a1 equals :: GROUP_2:def 13
a3 * (carr a2);
correctness
coherence
c3 * (carr c2) is Subset of c1
;
;
func c2 * c3 -> Subset of a1 equals :: GROUP_2:def 14
(carr a2) * a3;
correctness
coherence
(carr c2) * c3 is Subset of c1
;
;
end;

:: deftheorem Def13 defines * GROUP_2:def 13 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Element of b1 holds b3 * b2 = b3 * (carr b2);

:: deftheorem Def14 defines * GROUP_2:def 14 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Element of b1 holds b2 * b3 = (carr b2) * b3;

theorem Th123: :: GROUP_2:123
canceled;

theorem Th124: :: GROUP_2:124
canceled;

theorem Th125: :: GROUP_2:125
for b1 being set
for b2 being Group
for b3 being Element of b2
for b4 being Subgroup of b2 holds
( b1 in b3 * b4 iff ex b5 being Element of b2 st
( b1 = b3 * b5 & b5 in b4 ) )
proof end;

theorem Th126: :: GROUP_2:126
for b1 being set
for b2 being Group
for b3 being Element of b2
for b4 being Subgroup of b2 holds
( b1 in b4 * b3 iff ex b5 being Element of b2 st
( b1 = b5 * b3 & b5 in b4 ) )
proof end;

theorem Th127: :: GROUP_2:127
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds (b2 * b3) * b4 = b2 * (b3 * b4) by Th38;

theorem Th128: :: GROUP_2:128
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds (b2 * b4) * b3 = b2 * (b4 * b3) by Th39;

theorem Th129: :: GROUP_2:129
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds (b4 * b2) * b3 = b4 * (b2 * b3) by Th40;

theorem Th130: :: GROUP_2:130
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( b2 in b2 * b3 & b2 in b3 * b2 )
proof end;

theorem Th131: :: GROUP_2:131
canceled;

theorem Th132: :: GROUP_2:132
for b1 being Group
for b2 being Subgroup of b1 holds
( (1. b1) * b2 = carr b2 & b2 * (1. b1) = carr b2 ) by Th43;

theorem Th133: :: GROUP_2:133
for b1 being Group
for b2 being Element of b1 holds
( ((1). b1) * b2 = {b2} & b2 * ((1). b1) = {b2} )
proof end;

theorem Th134: :: GROUP_2:134
for b1 being Group
for b2 being Element of b1 holds
( b2 * ((Omega). b1) = the carrier of b1 & ((Omega). b1) * b2 = the carrier of b1 )
proof end;

theorem Th135: :: GROUP_2:135
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 st b1 is commutative Group holds
b2 * b3 = b3 * b2 by Th44;

theorem Th136: :: GROUP_2:136
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( b2 in b3 iff b2 * b3 = carr b3 )
proof end;

theorem Th137: :: GROUP_2:137
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds
( b2 * b4 = b3 * b4 iff (b3 " ) * b2 in b4 )
proof end;

theorem Th138: :: GROUP_2:138
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds
( b2 * b4 = b3 * b4 iff b2 * b4 meets b3 * b4 )
proof end;

theorem Th139: :: GROUP_2:139
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds (b2 * b3) * b4 c= (b2 * b4) * (b3 * b4)
proof end;

theorem Th140: :: GROUP_2:140
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( carr b3 c= (b2 * b3) * ((b2 " ) * b3) & carr b3 c= ((b2 " ) * b3) * (b2 * b3) )
proof end;

theorem Th141: :: GROUP_2:141
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds (b2 |^ 2) * b3 c= (b2 * b3) * (b2 * b3)
proof end;

theorem Th142: :: GROUP_2:142
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( b2 in b3 iff b3 * b2 = carr b3 )
proof end;

theorem Th143: :: GROUP_2:143
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds
( b4 * b2 = b4 * b3 iff b3 * (b2 " ) in b4 )
proof end;

theorem Th144: :: GROUP_2:144
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds
( b4 * b2 = b4 * b3 iff b4 * b2 meets b4 * b3 )
proof end;

theorem Th145: :: GROUP_2:145
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds (b4 * b2) * b3 c= (b4 * b2) * (b4 * b3)
proof end;

theorem Th146: :: GROUP_2:146
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( carr b3 c= (b3 * b2) * (b3 * (b2 " )) & carr b3 c= (b3 * (b2 " )) * (b3 * b2) )
proof end;

theorem Th147: :: GROUP_2:147
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds b3 * (b2 |^ 2) c= (b3 * b2) * (b3 * b2)
proof end;

theorem Th148: :: GROUP_2:148
for b1 being Group
for b2 being Element of b1
for b3, b4 being Subgroup of b1 holds b2 * (b3 /\ b4) = (b2 * b3) /\ (b2 * b4)
proof end;

theorem Th149: :: GROUP_2:149
for b1 being Group
for b2 being Element of b1
for b3, b4 being Subgroup of b1 holds (b3 /\ b4) * b2 = (b3 * b2) /\ (b4 * b2)
proof end;

theorem Th150: :: GROUP_2:150
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 ex b4 being strict Subgroup of b1 st the carrier of b4 = (b2 * b3) * (b2 " )
proof end;

theorem Th151: :: GROUP_2:151
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds b2 * b4,b3 * b4 are_equipotent
proof end;

theorem Th152: :: GROUP_2:152
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds b2 * b4,b4 * b3 are_equipotent
proof end;

theorem Th153: :: GROUP_2:153
for b1 being Group
for b2, b3 being Element of b1
for b4 being Subgroup of b1 holds b4 * b2,b4 * b3 are_equipotent
proof end;

theorem Th154: :: GROUP_2:154
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( carr b3,b2 * b3 are_equipotent & carr b3,b3 * b2 are_equipotent )
proof end;

theorem Th155: :: GROUP_2:155
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 holds
( Ord b3 = Card (b2 * b3) & Ord b3 = Card (b3 * b2) )
proof end;

theorem Th156: :: GROUP_2:156
for b1 being Group
for b2 being Element of b1
for b3 being Subgroup of b1 st b3 is finite holds
ex b4, b5 being finite set st
( b4 = b2 * b3 & b5 = b3 * b2 & ord b3 = card b4 & ord b3 = card b5 )
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
func Left_Cosets c2 -> Subset-Family of a1 means :Def15: :: GROUP_2:def 15
for b1 being Subset of a1 holds
( b1 in a3 iff ex b2 being Element of a1 st b1 = b2 * a2 );
existence
ex b1 being Subset-Family of c1 st
for b2 being Subset of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st b2 = b3 * c2 )
proof end;
uniqueness
for b1, b2 being Subset-Family of c1 st ( for b3 being Subset of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st b3 = b4 * c2 ) ) & ( for b3 being Subset of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st b3 = b4 * c2 ) ) holds
b1 = b2
proof end;
func Right_Cosets c2 -> Subset-Family of a1 means :Def16: :: GROUP_2:def 16
for b1 being Subset of a1 holds
( b1 in a3 iff ex b2 being Element of a1 st b1 = a2 * b2 );
existence
ex b1 being Subset-Family of c1 st
for b2 being Subset of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st b2 = c2 * b3 )
proof end;
uniqueness
for b1, b2 being Subset-Family of c1 st ( for b3 being Subset of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st b3 = c2 * b4 ) ) & ( for b3 being Subset of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st b3 = c2 * b4 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def15 defines Left_Cosets GROUP_2:def 15 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Subset-Family of b1 holds
( b3 = Left_Cosets b2 iff for b4 being Subset of b1 holds
( b4 in b3 iff ex b5 being Element of b1 st b4 = b5 * b2 ) );

:: deftheorem Def16 defines Right_Cosets GROUP_2:def 16 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being Subset-Family of b1 holds
( b3 = Right_Cosets b2 iff for b4 being Subset of b1 holds
( b4 in b3 iff ex b5 being Element of b1 st b4 = b2 * b5 ) );

theorem Th157: :: GROUP_2:157
canceled;

theorem Th158: :: GROUP_2:158
canceled;

theorem Th159: :: GROUP_2:159
canceled;

theorem Th160: :: GROUP_2:160
canceled;

theorem Th161: :: GROUP_2:161
canceled;

theorem Th162: :: GROUP_2:162
canceled;

theorem Th163: :: GROUP_2:163
canceled;

theorem Th164: :: GROUP_2:164
for b1 being Group
for b2 being Subgroup of b1 st b1 is finite holds
( Right_Cosets b2 is finite & Left_Cosets b2 is finite )
proof end;

theorem Th165: :: GROUP_2:165
for b1 being Group
for b2 being Subgroup of b1 holds
( carr b2 in Left_Cosets b2 & carr b2 in Right_Cosets b2 )
proof end;

theorem Th166: :: GROUP_2:166
for b1 being Group
for b2 being Subgroup of b1 holds Left_Cosets b2, Right_Cosets b2 are_equipotent
proof end;

theorem Th167: :: GROUP_2:167
for b1 being Group
for b2 being Subgroup of b1 holds
( union (Left_Cosets b2) = the carrier of b1 & union (Right_Cosets b2) = the carrier of b1 )
proof end;

theorem Th168: :: GROUP_2:168
for b1 being Group holds Left_Cosets ((1). b1) = { {b2} where B is Element of b1 : verum }
proof end;

theorem Th169: :: GROUP_2:169
for b1 being Group holds Right_Cosets ((1). b1) = { {b2} where B is Element of b1 : verum }
proof end;

theorem Th170: :: GROUP_2:170
for b1 being Group
for b2 being strict Subgroup of b1 st Left_Cosets b2 = { {b3} where B is Element of b1 : verum } holds
b2 = (1). b1
proof end;

theorem Th171: :: GROUP_2:171
for b1 being Group
for b2 being strict Subgroup of b1 st Right_Cosets b2 = { {b3} where B is Element of b1 : verum } holds
b2 = (1). b1
proof end;

theorem Th172: :: GROUP_2:172
for b1 being Group holds
( Left_Cosets ((Omega). b1) = {the carrier of b1} & Right_Cosets ((Omega). b1) = {the carrier of b1} )
proof end;

theorem Th173: :: GROUP_2:173
for b1 being strict Group
for b2 being strict Subgroup of b1 st Left_Cosets b2 = {the carrier of b1} holds
b2 = b1
proof end;

theorem Th174: :: GROUP_2:174
for b1 being strict Group
for b2 being strict Subgroup of b1 st Right_Cosets b2 = {the carrier of b1} holds
b2 = b1
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
func Index c2 -> Cardinal equals :: GROUP_2:def 17
Card (Left_Cosets a2);
correctness
coherence
Card (Left_Cosets c2) is Cardinal
;
;
end;

:: deftheorem Def17 defines Index GROUP_2:def 17 :
for b1 being Group
for b2 being Subgroup of b1 holds Index b2 = Card (Left_Cosets b2);

theorem Th175: :: GROUP_2:175
for b1 being Group
for b2 being Subgroup of b1 holds
( Index b2 = Card (Left_Cosets b2) & Index b2 = Card (Right_Cosets b2) )
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
assume E93: Left_Cosets c2 is finite ;
func index c2 -> Nat means :Def18: :: GROUP_2:def 18
ex b1 being finite set st
( b1 = Left_Cosets a2 & a3 = card b1 );
existence
ex b1 being Natex b2 being finite set st
( b2 = Left_Cosets c2 & b1 = card b2 )
proof end;
uniqueness
for b1, b2 being Nat st ex b3 being finite set st
( b3 = Left_Cosets c2 & b1 = card b3 ) & ex b3 being finite set st
( b3 = Left_Cosets c2 & b2 = card b3 ) holds
b1 = b2
;
end;

:: deftheorem Def18 defines index GROUP_2:def 18 :
for b1 being Group
for b2 being Subgroup of b1 st Left_Cosets b2 is finite holds
for b3 being Nat holds
( b3 = index b2 iff ex b4 being finite set st
( b4 = Left_Cosets b2 & b3 = card b4 ) );

theorem Th176: :: GROUP_2:176
for b1 being Group
for b2 being Subgroup of b1 st Left_Cosets b2 is finite holds
( ex b3 being finite set st
( b3 = Left_Cosets b2 & index b2 = card b3 ) & ex b3 being finite set st
( b3 = Right_Cosets b2 & index b2 = card b3 ) )
proof end;

definition
let c1 be non empty set ;
let c2 be Element of c1;
redefine func { as {c2} -> Element of Fin a1;
coherence
{c2} is Element of Fin c1
proof end;
end;

Lemma94: for b1 being Nat
for b2 being finite set st ( for b3 being set st b3 in b2 holds
ex b4 being finite set st
( b4 = b3 & card b4 = b1 & ( for b5 being set st b5 in b2 & b3 <> b5 holds
( b3,b5 are_equipotent & b3 misses b5 ) ) ) ) holds
ex b3 being finite set st
( b3 = union b2 & card b3 = b1 * (card b2) )
proof end;

theorem Th177: :: GROUP_2:177
for b1 being Group
for b2 being Subgroup of b1 st b1 is finite holds
ord b1 = (ord b2) * (index b2)
proof end;

theorem Th178: :: GROUP_2:178
for b1 being Group
for b2 being Subgroup of b1 st b1 is finite holds
ord b2 divides ord b1
proof end;

theorem Th179: :: GROUP_2:179
for b1 being Group
for b2, b3 being Subgroup of b1
for b4 being Subgroup of b3 st b1 is finite & b2 = b4 holds
index b2 = (index b4) * (index b3)
proof end;

theorem Th180: :: GROUP_2:180
for b1 being Group holds index ((Omega). b1) = 1
proof end;

theorem Th181: :: GROUP_2:181
for b1 being strict Group
for b2 being strict Subgroup of b1 st Left_Cosets b2 is finite & index b2 = 1 holds
b2 = b1
proof end;

theorem Th182: :: GROUP_2:182
for b1 being Group holds Index ((1). b1) = Ord b1
proof end;

theorem Th183: :: GROUP_2:183
for b1 being Group st b1 is finite holds
index ((1). b1) = ord b1
proof end;

theorem Th184: :: GROUP_2:184
for b1 being Group
for b2 being strict Subgroup of b1 st b1 is finite & index b2 = ord b1 holds
b2 = (1). b1
proof end;

theorem Th185: :: GROUP_2:185
for b1 being Group
for b2 being strict Subgroup of b1 st Left_Cosets b2 is finite & Index b2 = Ord b1 holds
( b1 is finite & b2 = (1). b1 )
proof end;

theorem Th186: :: GROUP_2:186
for b1 being Nat
for b2 being finite set st ( for b3 being set st b3 in b2 holds
ex b4 being finite set st
( b4 = b3 & card b4 = b1 & ( for b5 being set st b5 in b2 & b3 <> b5 holds
( b3,b5 are_equipotent & b3 misses b5 ) ) ) ) holds
ex b3 being finite set st
( b3 = union b2 & card b3 = b1 * (card b2) ) by Lemma94;