:: GROUP_6 semantic presentation

theorem Th1: :: GROUP_6:1
for b1, b2 being non empty set
for b3 being Function of b1,b2 holds
( b3 is one-to-one iff for b4, b5 being Element of b1 st b3 . b4 = b3 . b5 holds
b4 = b5 )
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
redefine mode Subgroup as Subgroup of c2 -> Subgroup of a1;
coherence
for b1 being Subgroup of c2 holds b1 is Subgroup of c1
by GROUP_2:65;
end;

registration
let c1 be Group;
cluster (1). a1 -> normal ;
coherence
(1). c1 is normal
by GROUP_3:137;
cluster (Omega). a1 -> normal ;
coherence
(Omega). c1 is normal
by GROUP_3:137;
end;

theorem Th2: :: GROUP_6:2
for b1 being Group
for b2 being Subgroup of b1
for b3 being Element of b1
for b4 being Subgroup of b2
for b5 being Element of b2 st b5 = b3 holds
( b5 * b4 = b3 * b4 & b4 * b5 = b4 * b3 )
proof end;

theorem Th3: :: GROUP_6:3
for b1 being Group
for b2 being Subgroup of b1
for b3, b4 being Subgroup of b2 holds b3 /\ b4 = b3 /\ b4
proof end;

theorem Th4: :: GROUP_6:4
for b1 being Group
for b2, b3 being Element of b1 holds
( (b2 * b3) * (b2 " ) = b3 |^ (b2 " ) & b2 * (b3 * (b2 " )) = b3 |^ (b2 " ) )
proof end;

theorem Th5: :: GROUP_6:5
canceled;

theorem Th6: :: GROUP_6:6
for b1 being Group
for b2 being Subgroup of b1
for b3 being Element of b1 holds
( (b3 * b2) * b2 = b3 * b2 & b3 * (b2 * b2) = b3 * b2 & (b2 * b2) * b3 = b2 * b3 & b2 * (b2 * b3) = b2 * b3 )
proof end;

theorem Th7: :: GROUP_6:7
for b1 being Group
for b2 being Subset of b1 st b2 = { [.b3,b4.] where B is Element of b1, B is Element of b1 : verum } holds
b1 ` = gr b2
proof end;

theorem Th8: :: GROUP_6:8
for b1 being strict Group
for b2 being strict Subgroup of b1 holds
( b1 ` is Subgroup of b2 iff for b3, b4 being Element of b1 holds [.b3,b4.] in b2 )
proof end;

theorem Th9: :: GROUP_6:9
for b1 being Group
for b2 being Subgroup of b1
for b3 being normal Subgroup of b1 st b3 is Subgroup of b2 holds
b3 is normal Subgroup of b2
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
let c3 be normal Subgroup of c1;
assume E8: HGrStr(# the carrier of c3,the mult of c3 #) is Subgroup of c2 ;
func c2,c3 `*` -> strict normal Subgroup of a2 equals :Def1: :: GROUP_6:def 1
HGrStr(# the carrier of a3,the mult of a3 #);
coherence
HGrStr(# the carrier of c3,the mult of c3 #) is strict normal Subgroup of c2
proof end;
correctness
;
end;

:: deftheorem Def1 defines `*` GROUP_6:def 1 :
for b1 being Group
for b2 being Subgroup of b1
for b3 being normal Subgroup of b1 st HGrStr(# the carrier of b3,the mult of b3 #) is Subgroup of b2 holds
b2,b3 `*` = HGrStr(# the carrier of b3,the mult of b3 #);

theorem Th10: :: GROUP_6:10
for b1 being Group
for b2 being Subgroup of b1
for b3 being normal Subgroup of b1 holds
( b2 /\ b3 is normal Subgroup of b2 & b3 /\ b2 is normal Subgroup of b2 )
proof end;

definition
let c1 be Group;
let c2 be Subgroup of c1;
let c3 be normal Subgroup of c1;
redefine func /\ as c2 /\ c3 -> strict normal Subgroup of a2;
coherence
c2 /\ c3 is strict normal Subgroup of c2
by Th10;
end;

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
let c3 be Subgroup of c1;
redefine func /\ as c2 /\ c3 -> strict normal Subgroup of a3;
coherence
c2 /\ c3 is strict normal Subgroup of c3
by Th10;
end;

definition
let c1 be non empty 1-sorted ;
redefine attr a1 is trivial means :Def2: :: GROUP_6:def 2
ex b1 being set st the carrier of a1 = {b1};
compatibility
( c1 is trivial iff ex b1 being set st the carrier of c1 = {b1} )
proof end;
end;

:: deftheorem Def2 defines trivial GROUP_6:def 2 :
for b1 being non empty 1-sorted holds
( b1 is trivial iff ex b2 being set st the carrier of b1 = {b2} );

registration
cluster trivial HGrStr ;
existence
ex b1 being Group st b1 is trivial
proof end;
end;

theorem Th11: :: GROUP_6:11
for b1 being Group holds (1). b1 is trivial
proof end;

theorem Th12: :: GROUP_6:12
for b1 being Group holds
( b1 is trivial iff ( ord b1 = 1 & b1 is finite ) )
proof end;

theorem Th13: :: GROUP_6:13
for b1 being strict Group st b1 is trivial holds
(1). b1 = b1
proof end;

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
func Cosets c2 -> set equals :: GROUP_6:def 3
Left_Cosets a2;
coherence
Left_Cosets c2 is set
;
end;

:: deftheorem Def3 defines Cosets GROUP_6:def 3 :
for b1 being Group
for b2 being normal Subgroup of b1 holds Cosets b2 = Left_Cosets b2;

registration
let c1 be Group;
let c2 be normal Subgroup of c1;
cluster Cosets a2 -> non empty ;
coherence
not Cosets c2 is empty
by GROUP_2:165;
end;

theorem Th14: :: GROUP_6:14
for b1 being Group
for b2 being normal Subgroup of b1 holds
( Cosets b2 = Left_Cosets b2 & Cosets b2 = Right_Cosets b2 ) by GROUP_3:150;

theorem Th15: :: GROUP_6:15
for b1 being Group
for b2 being set
for b3 being normal Subgroup of b1 st b2 in Cosets b3 holds
ex b4 being Element of b1 st
( b2 = b4 * b3 & b2 = b3 * b4 )
proof end;

theorem Th16: :: GROUP_6:16
for b1 being Group
for b2 being Element of b1
for b3 being normal Subgroup of b1 holds
( b2 * b3 in Cosets b3 & b3 * b2 in Cosets b3 )
proof end;

theorem Th17: :: GROUP_6:17
for b1 being Group
for b2 being set
for b3 being normal Subgroup of b1 st b2 in Cosets b3 holds
b2 is Subset of b1 ;

theorem Th18: :: GROUP_6:18
for b1 being Group
for b2, b3 being Subset of b1
for b4 being normal Subgroup of b1 st b2 in Cosets b4 & b3 in Cosets b4 holds
b2 * b3 in Cosets b4
proof end;

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
func CosOp c2 -> BinOp of Cosets a2 means :Def4: :: GROUP_6:def 4
for b1, b2 being Element of Cosets a2
for b3, b4 being Subset of a1 st b1 = b3 & b2 = b4 holds
a3 . b1,b2 = b3 * b4;
existence
ex b1 being BinOp of Cosets c2 st
for b2, b3 being Element of Cosets c2
for b4, b5 being Subset of c1 st b2 = b4 & b3 = b5 holds
b1 . b2,b3 = b4 * b5
proof end;
uniqueness
for b1, b2 being BinOp of Cosets c2 st ( for b3, b4 being Element of Cosets c2
for b5, b6 being Subset of c1 st b3 = b5 & b4 = b6 holds
b1 . b3,b4 = b5 * b6 ) & ( for b3, b4 being Element of Cosets c2
for b5, b6 being Subset of c1 st b3 = b5 & b4 = b6 holds
b2 . b3,b4 = b5 * b6 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines CosOp GROUP_6:def 4 :
for b1 being Group
for b2 being normal Subgroup of b1
for b3 being BinOp of Cosets b2 holds
( b3 = CosOp b2 iff for b4, b5 being Element of Cosets b2
for b6, b7 being Subset of b1 st b4 = b6 & b5 = b7 holds
b3 . b4,b5 = b6 * b7 );

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
func c1 ./. c2 -> HGrStr equals :: GROUP_6:def 5
HGrStr(# (Cosets a2),(CosOp a2) #);
correctness
coherence
HGrStr(# (Cosets c2),(CosOp c2) #) is HGrStr
;
;
end;

:: deftheorem Def5 defines ./. GROUP_6:def 5 :
for b1 being Group
for b2 being normal Subgroup of b1 holds b1 ./. b2 = HGrStr(# (Cosets b2),(CosOp b2) #);

registration
let c1 be Group;
let c2 be normal Subgroup of c1;
cluster a1 ./. a2 -> non empty strict ;
coherence
( c1 ./. c2 is strict & not c1 ./. c2 is empty )
;
end;

theorem Th19: :: GROUP_6:19
canceled;

theorem Th20: :: GROUP_6:20
canceled;

theorem Th21: :: GROUP_6:21
canceled;

theorem Th22: :: GROUP_6:22
for b1 being Group
for b2 being normal Subgroup of b1 holds the carrier of (b1 ./. b2) = Cosets b2 ;

theorem Th23: :: GROUP_6:23
for b1 being Group
for b2 being normal Subgroup of b1 holds the mult of (b1 ./. b2) = CosOp b2 ;

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
let c3 be Element of (c1 ./. c2);
func @ c3 -> Subset of a1 equals :: GROUP_6:def 6
a3;
coherence
c3 is Subset of c1
by Th17;
end;

:: deftheorem Def6 defines @ GROUP_6:def 6 :
for b1 being Group
for b2 being normal Subgroup of b1
for b3 being Element of (b1 ./. b2) holds @ b3 = b3;

theorem Th24: :: GROUP_6:24
for b1 being Group
for b2 being normal Subgroup of b1
for b3, b4 being Element of (b1 ./. b2) holds (@ b3) * (@ b4) = b3 * b4 by Def4;

theorem Th25: :: GROUP_6:25
for b1 being Group
for b2 being normal Subgroup of b1
for b3, b4 being Element of (b1 ./. b2) holds @ (b3 * b4) = (@ b3) * (@ b4) by Th24;

registration
let c1 be Group;
let c2 be normal Subgroup of c1;
cluster a1 ./. a2 -> non empty strict Group-like associative ;
coherence
( c1 ./. c2 is associative & c1 ./. c2 is Group-like )
proof end;
end;

theorem Th26: :: GROUP_6:26
for b1 being Group
for b2 being normal Subgroup of b1
for b3 being Element of (b1 ./. b2) ex b4 being Element of b1 st
( b3 = b4 * b2 & b3 = b2 * b4 ) by Th15;

theorem Th27: :: GROUP_6:27
for b1 being Group
for b2 being Element of b1
for b3 being normal Subgroup of b1 holds
( b3 * b2 is Element of (b1 ./. b3) & b2 * b3 is Element of (b1 ./. b3) & carr b3 is Element of (b1 ./. b3) ) by Th16, GROUP_2:165;

theorem Th28: :: GROUP_6:28
for b1 being Group
for b2 being set
for b3 being normal Subgroup of b1 holds
( b2 in b1 ./. b3 iff ex b4 being Element of b1 st
( b2 = b4 * b3 & b2 = b3 * b4 ) )
proof end;

theorem Th29: :: GROUP_6:29
for b1 being Group
for b2 being normal Subgroup of b1 holds 1. (b1 ./. b2) = carr b2
proof end;

theorem Th30: :: GROUP_6:30
for b1 being Group
for b2 being Element of b1
for b3 being normal Subgroup of b1
for b4 being Element of (b1 ./. b3) st b4 = b2 * b3 holds
b4 " = (b2 " ) * b3
proof end;

theorem Th31: :: GROUP_6:31
for b1 being Group
for b2 being normal Subgroup of b1 st Left_Cosets b2 is finite holds
b1 ./. b2 is finite by GROUP_1:def 14;

theorem Th32: :: GROUP_6:32
for b1 being Group
for b2 being normal Subgroup of b1 holds Ord (b1 ./. b2) = Index b2 ;

theorem Th33: :: GROUP_6:33
for b1 being Group
for b2 being normal Subgroup of b1 st Left_Cosets b2 is finite holds
ord (b1 ./. b2) = index b2
proof end;

theorem Th34: :: GROUP_6:34
for b1 being Group
for b2 being Subgroup of b1
for b3 being strict normal Subgroup of b1 st b3 is Subgroup of b2 holds
b2 ./. (b2,b3 `*` ) is Subgroup of b1 ./. b3
proof end;

theorem Th35: :: GROUP_6:35
for b1 being Group
for b2, b3 being strict normal Subgroup of b1 st b3 is Subgroup of b2 holds
b2 ./. (b2,b3 `*` ) is normal Subgroup of b1 ./. b3
proof end;

theorem Th36: :: GROUP_6:36
for b1 being strict Group
for b2 being strict normal Subgroup of b1 holds
( b1 ./. b2 is commutative Group iff b1 ` is Subgroup of b2 )
proof end;

Lemma29: for b1, b2 being Group
for b3, b4 being Element of b1
for b5 being Function of the carrier of b1,the carrier of b2 st ( for b6 being Element of b1 holds b5 . b6 = 1. b2 ) holds
b5 . (b3 * b4) = (b5 . b3) * (b5 . b4)
proof end;

definition
let c1, c2 be non empty HGrStr ;
let c3 be Function of c1,c2;
attr a3 is multiplicative means :Def7: :: GROUP_6:def 7
for b1, b2 being Element of a1 holds a3 . (b1 * b2) = (a3 . b1) * (a3 . b2);
end;

:: deftheorem Def7 defines multiplicative GROUP_6:def 7 :
for b1, b2 being non empty HGrStr
for b3 being Function of b1,b2 holds
( b3 is multiplicative iff for b4, b5 being Element of b1 holds b3 . (b4 * b5) = (b3 . b4) * (b3 . b5) );

registration
let c1, c2 be Group;
cluster multiplicative M4(the carrier of a1,the carrier of a2);
existence
ex b1 being Function of c1,c2 st b1 is multiplicative
proof end;
end;

definition
let c1, c2 be Group;
mode Homomorphism of a1,a2 is multiplicative Function of a1,a2;
end;

theorem Th37: :: GROUP_6:37
canceled;

theorem Th38: :: GROUP_6:38
canceled;

theorem Th39: :: GROUP_6:39
canceled;

theorem Th40: :: GROUP_6:40
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds b3 . (1. b1) = 1. b2
proof end;

theorem Th41: :: GROUP_6:41
for b1, b2 being Group
for b3 being Element of b1
for b4 being Homomorphism of b1,b2 holds b4 . (b3 " ) = (b4 . b3) "
proof end;

theorem Th42: :: GROUP_6:42
for b1, b2 being Group
for b3, b4 being Element of b1
for b5 being Homomorphism of b1,b2 holds b5 . (b3 |^ b4) = (b5 . b3) |^ (b5 . b4)
proof end;

theorem Th43: :: GROUP_6:43
for b1, b2 being Group
for b3, b4 being Element of b1
for b5 being Homomorphism of b1,b2 holds b5 . [.b3,b4.] = [.(b5 . b3),(b5 . b4).]
proof end;

theorem Th44: :: GROUP_6:44
for b1, b2 being Group
for b3, b4, b5 being Element of b1
for b6 being Homomorphism of b1,b2 holds b6 . [.b3,b4,b5.] = [.(b6 . b3),(b6 . b4),(b6 . b5).]
proof end;

theorem Th45: :: GROUP_6:45
for b1 being Nat
for b2, b3 being Group
for b4 being Element of b2
for b5 being Homomorphism of b2,b3 holds b5 . (b4 |^ b1) = (b5 . b4) |^ b1
proof end;

theorem Th46: :: GROUP_6:46
for b1 being Integer
for b2, b3 being Group
for b4 being Element of b2
for b5 being Homomorphism of b2,b3 holds b5 . (b4 |^ b1) = (b5 . b4) |^ b1
proof end;

theorem Th47: :: GROUP_6:47
for b1 being Group holds id the carrier of b1 is Homomorphism of b1,b1
proof end;

theorem Th48: :: GROUP_6:48
for b1, b2, b3 being Group
for b4 being Homomorphism of b2,b1
for b5 being Homomorphism of b1,b3 holds b5 * b4 is Homomorphism of b2,b3
proof end;

definition
let c1, c2, c3 be Group;
let c4 be Homomorphism of c1,c2;
let c5 be Homomorphism of c2,c3;
redefine func * as c5 * c4 -> Homomorphism of a1,a3;
coherence
c4 * c5 is Homomorphism of c1,c3
by Th48;
end;

definition
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
redefine func rng as rng c3 -> Subset of a2;
coherence
rng c3 is Subset of c2
by RELSET_1:12;
end;

definition
let c1, c2 be Group;
func 1: c1,c2 -> Homomorphism of a1,a2 means :Def8: :: GROUP_6:def 8
for b1 being Element of a1 holds a3 . b1 = 1. a2;
existence
ex b1 being Homomorphism of c1,c2 st
for b2 being Element of c1 holds b1 . b2 = 1. c2
proof end;
uniqueness
for b1, b2 being Homomorphism of c1,c2 st ( for b3 being Element of c1 holds b1 . b3 = 1. c2 ) & ( for b3 being Element of c1 holds b2 . b3 = 1. c2 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def8 defines 1: GROUP_6:def 8 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds
( b3 = 1: b1,b2 iff for b4 being Element of b1 holds b3 . b4 = 1. b2 );

theorem Th49: :: GROUP_6:49
for b1, b2, b3 being Group
for b4 being Homomorphism of b1,b2
for b5 being Homomorphism of b2,b3 holds
( b5 * (1: b1,b2) = 1: b1,b3 & (1: b2,b3) * b4 = 1: b1,b3 )
proof end;

definition
let c1 be Group;
let c2 be normal Subgroup of c1;
func nat_hom c2 -> Homomorphism of a1,(a1 ./. a2) means :Def9: :: GROUP_6:def 9
for b1 being Element of a1 holds a3 . b1 = b1 * a2;
existence
ex b1 being Homomorphism of c1,(c1 ./. c2) st
for b2 being Element of c1 holds b1 . b2 = b2 * c2
proof end;
uniqueness
for b1, b2 being Homomorphism of c1,(c1 ./. c2) 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 Def9 defines nat_hom GROUP_6:def 9 :
for b1 being Group
for b2 being normal Subgroup of b1
for b3 being Homomorphism of b1,(b1 ./. b2) holds
( b3 = nat_hom b2 iff for b4 being Element of b1 holds b3 . b4 = b4 * b2 );

definition
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
func Ker c3 -> strict Subgroup of a1 means :Def10: :: GROUP_6:def 10
the carrier of a4 = { b1 where B is Element of a1 : a3 . b1 = 1. a2 } ;
existence
ex b1 being strict Subgroup of c1 st the carrier of b1 = { b2 where B is Element of c1 : c3 . b2 = 1. c2 }
proof end;
uniqueness
for b1, b2 being strict Subgroup of c1 st the carrier of b1 = { b3 where B is Element of c1 : c3 . b3 = 1. c2 } & the carrier of b2 = { b3 where B is Element of c1 : c3 . b3 = 1. c2 } holds
b1 = b2
by GROUP_2:68;
end;

:: deftheorem Def10 defines Ker GROUP_6:def 10 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2
for b4 being strict Subgroup of b1 holds
( b4 = Ker b3 iff the carrier of b4 = { b5 where B is Element of b1 : b3 . b5 = 1. b2 } );

registration
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
cluster Ker a3 -> strict normal ;
coherence
Ker c3 is normal
proof end;
end;

theorem Th50: :: GROUP_6:50
for b1, b2 being Group
for b3 being Element of b1
for b4 being Homomorphism of b1,b2 holds
( b3 in Ker b4 iff b4 . b3 = 1. b2 )
proof end;

theorem Th51: :: GROUP_6:51
for b1, b2 being strict Group holds Ker (1: b1,b2) = b1
proof end;

theorem Th52: :: GROUP_6:52
for b1 being Group
for b2 being strict normal Subgroup of b1 holds Ker (nat_hom b2) = b2
proof end;

definition
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
func Image c3 -> strict Subgroup of a2 means :Def11: :: GROUP_6:def 11
the carrier of a4 = a3 .: the carrier of a1;
existence
ex b1 being strict Subgroup of c2 st the carrier of b1 = c3 .: the carrier of c1
proof end;
uniqueness
for b1, b2 being strict Subgroup of c2 st the carrier of b1 = c3 .: the carrier of c1 & the carrier of b2 = c3 .: the carrier of c1 holds
b1 = b2
by GROUP_2:68;
end;

:: deftheorem Def11 defines Image GROUP_6:def 11 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2
for b4 being strict Subgroup of b2 holds
( b4 = Image b3 iff the carrier of b4 = b3 .: the carrier of b1 );

theorem Th53: :: GROUP_6:53
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds rng b3 = the carrier of (Image b3)
proof end;

theorem Th54: :: GROUP_6:54
for b1, b2 being Group
for b3 being set
for b4 being Homomorphism of b2,b1 holds
( b3 in Image b4 iff ex b5 being Element of b2 st b3 = b4 . b5 )
proof end;

theorem Th55: :: GROUP_6:55
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds Image b3 = gr (rng b3)
proof end;

theorem Th56: :: GROUP_6:56
for b1, b2 being Group holds Image (1: b1,b2) = (1). b2
proof end;

theorem Th57: :: GROUP_6:57
for b1 being Group
for b2 being normal Subgroup of b1 holds Image (nat_hom b2) = b1 ./. b2
proof end;

theorem Th58: :: GROUP_6:58
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds b3 is Homomorphism of b2,(Image b3)
proof end;

theorem Th59: :: GROUP_6:59
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 st b2 is finite holds
Image b3 is finite
proof end;

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

theorem Th60: :: GROUP_6:60
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 st b2 is commutative Group holds
Image b3 is commutative
proof end;

theorem Th61: :: GROUP_6:61
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds Ord (Image b3) <=` Ord b2
proof end;

theorem Th62: :: GROUP_6:62
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 st b2 is finite holds
ord (Image b3) <= ord b2
proof end;

definition
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
attr a3 is being_monomorphism means :Def12: :: GROUP_6:def 12
a3 is one-to-one;
attr a3 is being_epimorphism means :Def13: :: GROUP_6:def 13
rng a3 = the carrier of a2;
end;

:: deftheorem Def12 defines being_monomorphism GROUP_6:def 12 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds
( b3 is being_monomorphism iff b3 is one-to-one );

:: deftheorem Def13 defines being_epimorphism GROUP_6:def 13 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds
( b3 is being_epimorphism iff rng b3 = the carrier of b2 );

notation
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
synonym c3 is_monomorphism for being_monomorphism c3;
synonym c3 is_epimorphism for being_epimorphism c3;
end;

theorem Th63: :: GROUP_6:63
for b1, b2 being Group
for b3 being Element of b2
for b4 being Homomorphism of b1,b2 st b4 is_monomorphism & b3 in Image b4 holds
b4 . ((b4 " ) . b3) = b3
proof end;

theorem Th64: :: GROUP_6:64
for b1, b2 being Group
for b3 being Element of b1
for b4 being Homomorphism of b1,b2 st b4 is_monomorphism holds
(b4 " ) . (b4 . b3) = b3
proof end;

theorem Th65: :: GROUP_6:65
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 st b3 is_monomorphism holds
b3 " is Homomorphism of (Image b3),b2
proof end;

theorem Th66: :: GROUP_6:66
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds
( b3 is_monomorphism iff Ker b3 = (1). b2 )
proof end;

theorem Th67: :: GROUP_6:67
for b1 being Group
for b2 being strict Group
for b3 being Homomorphism of b1,b2 holds
( b3 is_epimorphism iff Image b3 = b2 )
proof end;

theorem Th68: :: GROUP_6:68
for b1 being Group
for b2 being strict Group
for b3 being Homomorphism of b1,b2 st b3 is_epimorphism holds
for b4 being Element of b2 ex b5 being Element of b1 st b3 . b5 = b4
proof end;

theorem Th69: :: GROUP_6:69
for b1 being Group
for b2 being normal Subgroup of b1 holds nat_hom b2 is_epimorphism
proof end;

definition
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
attr a3 is being_isomorphism means :Def14: :: GROUP_6:def 14
( a3 is_epimorphism & a3 is_monomorphism );
end;

:: deftheorem Def14 defines being_isomorphism GROUP_6:def 14 :
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds
( b3 is being_isomorphism iff ( b3 is_epimorphism & b3 is_monomorphism ) );

notation
let c1, c2 be Group;
let c3 be Homomorphism of c1,c2;
synonym c3 is_isomorphism for being_isomorphism c3;
end;

theorem Th70: :: GROUP_6:70
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 holds
( b3 is_isomorphism iff ( rng b3 = the carrier of b2 & b3 is one-to-one ) )
proof end;

theorem Th71: :: GROUP_6:71
for b1, b2 being Group
for b3 being Homomorphism of b1,b2 st b3 is_isomorphism holds
( dom b3 = the carrier of b1 & rng b3 = the carrier of b2 )
proof end;

theorem Th72: :: GROUP_6:72
for b1 being Group
for b2 being strict Group
for b3 being Homomorphism of b1,b2 st b3 is_isomorphism holds
b3 " is Homomorphism of b2,b1
proof end;

theorem Th73: :: GROUP_6:73
for b1, b2 being Group
for b3 being Homomorphism of b2,b1
for b4 being Homomorphism of b1,b2 st b3 is_isomorphism & b4 = b3 " holds
b4 is_isomorphism
proof end;

theorem Th74: :: GROUP_6:74
for b1, b2, b3 being Group
for b4 being Homomorphism of b1,b2
for b5 being Homomorphism of b2,b3 st b4 is_isomorphism & b5 is_isomorphism holds
b5 * b4 is_isomorphism
proof end;

theorem Th75: :: GROUP_6:75
for b1 being Group holds nat_hom ((1). b1) is_isomorphism
proof end;

definition
let c1, c2 be Group;
pred c1,c2 are_isomorphic means :Def15: :: GROUP_6:def 15
ex b1 being Homomorphism of a1,a2 st b1 is_isomorphism ;
reflexivity
for b1 being Group ex b2 being Homomorphism of b1,b1 st b2 is_isomorphism
proof end;
end;

:: deftheorem Def15 defines are_isomorphic GROUP_6:def 15 :
for b1, b2 being Group holds
( b1,b2 are_isomorphic iff ex b3 being Homomorphism of b1,b2 st b3 is_isomorphism );

theorem Th76: :: GROUP_6:76
canceled;

theorem Th77: :: GROUP_6:77
for b1, b2 being strict Group st b1,b2 are_isomorphic holds
b2,b1 are_isomorphic
proof end;

definition
let c1, c2 be strict Group;
redefine pred are_isomorphic as c1,c2 are_isomorphic ;
symmetry
for b1, b2 being strict Group st b1,b2 are_isomorphic holds
b2,b1 are_isomorphic
by Th77;
end;

theorem Th78: :: GROUP_6:78
for b1, b2, b3 being Group st b1,b2 are_isomorphic & b2,b3 are_isomorphic holds
b1,b3 are_isomorphic
proof end;

theorem Th79: :: GROUP_6:79
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 st b3 is_monomorphism holds
b2, Image b3 are_isomorphic
proof end;

theorem Th80: :: GROUP_6:80
for b1, b2 being strict Group st b1 is trivial & b2 is trivial holds
b1,b2 are_isomorphic
proof end;

theorem Th81: :: GROUP_6:81
for b1, b2 being Group holds (1). b1, (1). b2 are_isomorphic
proof end;

theorem Th82: :: GROUP_6:82
for b1 being strict Group holds b1,b1 ./. ((1). b1) are_isomorphic
proof end;

theorem Th83: :: GROUP_6:83
for b1 being Group holds b1 ./. ((Omega). b1) is trivial
proof end;

theorem Th84: :: GROUP_6:84
for b1, b2 being strict Group st b1,b2 are_isomorphic holds
Ord b1 = Ord b2
proof end;

theorem Th85: :: GROUP_6:85
for b1, b2 being Group st b1,b2 are_isomorphic & b1 is finite holds
b2 is finite
proof end;

theorem Th86: :: GROUP_6:86
for b1, b2 being strict Group st b1,b2 are_isomorphic & b1 is finite holds
ord b1 = ord b2
proof end;

theorem Th87: :: GROUP_6:87
for b1, b2 being strict Group st b1,b2 are_isomorphic & b1 is trivial holds
b2 is trivial
proof end;

theorem Th88: :: GROUP_6:88
canceled;

theorem Th89: :: GROUP_6:89
for b1 being Group
for b2 being strict Group st b1,b2 are_isomorphic & b1 is commutative Group holds
b2 is commutative Group
proof end;

Lemma71: for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds
( b2 ./. (Ker b3), Image b3 are_isomorphic & ex b4 being Homomorphism of (b2 ./. (Ker b3)),(Image b3) st
( b4 is_isomorphism & b3 = b4 * (nat_hom (Ker b3)) ) )
proof end;

theorem Th90: :: GROUP_6:90
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds b2 ./. (Ker b3), Image b3 are_isomorphic by Lemma71;

theorem Th91: :: GROUP_6:91
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 ex b4 being Homomorphism of (b2 ./. (Ker b3)),(Image b3) st
( b4 is_isomorphism & b3 = b4 * (nat_hom (Ker b3)) ) by Lemma71;

theorem Th92: :: GROUP_6:92
for b1 being Group
for b2 being normal Subgroup of b1
for b3 being strict normal Subgroup of b1
for b4 being strict normal Subgroup of b1 ./. b3 st b4 = b2 ./. (b2,b3 `*` ) & b3 is Subgroup of b2 holds
(b1 ./. b3) ./. b4,b1 ./. b2 are_isomorphic
proof end;

theorem Th93: :: GROUP_6:93
for b1 being Group
for b2 being Subgroup of b1
for b3 being strict normal Subgroup of b1 holds (b2 "\/" b3) ./. ((b2 "\/" b3),b3 `*` ),b2 ./. (b2 /\ b3) are_isomorphic
proof end;