:: 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 holds
( b3 . b4 = b3 . b5 implies 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 holds
( b5 = b3 implies ( 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 holds
( b2 = { [.b3,b4.] where B is Element of b1, B is Element of b1 : verum } implies 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 holds
( b3 is Subgroup of b2 implies 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 holds
( HGrStr(# the carrier of b3,the mult of b3 #) is Subgroup of b2 implies 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 holds
( b1 is trivial implies (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 holds
not ( b2 in Cosets b3 & ( for b4 being Element of b1 holds
not ( 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 holds
( b2 in Cosets b3 implies 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 holds
( b2 in Cosets b4 & b3 in Cosets b4 implies 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 holds
( b1 = b3 & b2 = b4 implies 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 holds
( b2 = b4 & b3 = b5 implies b1 . b2,b3 = b4 * b5 )
proof end;
uniqueness
for b1, b2 being BinOp of Cosets c2 holds
( ( for b3, b4 being Element of Cosets c2
for b5, b6 being Subset of c1 holds
( b3 = b5 & b4 = b6 implies b1 . b3,b4 = b5 * b6 ) ) & ( for b3, b4 being Element of Cosets c2
for b5, b6 being Subset of c1 holds
( b3 = b5 & b4 = b6 implies b2 . b3,b4 = b5 * b6 ) ) implies 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 holds
( b4 = b6 & b5 = b7 implies 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) holds
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) holds
( b4 = b2 * b3 implies b4 " = (b2 " ) * b3 )
proof end;

theorem Th31: :: GROUP_6:31
for b1 being Group
for b2 being normal Subgroup of b1 holds
( Left_Cosets b2 is finite implies 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 holds
( Left_Cosets b2 is finite implies 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 holds
( b3 is Subgroup of b2 implies 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 holds
( b3 is Subgroup of b2 implies 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 holds
( ( for b6 being Element of b1 holds b5 . b6 = 1. b2 ) implies 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 Relation of 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 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;
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 holds
( ( for b3 being Element of c1 holds b1 . b3 = 1. c2 ) & ( for b3 being Element of c1 holds b2 . b3 = 1. c2 ) implies 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) holds
( ( for b3 being Element of c1 holds b1 . b3 = b3 * c2 ) & ( for b3 being Element of c1 holds b2 . b3 = b3 * c2 ) implies 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 holds
( 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 } implies 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 holds
( the carrier of b1 = c3 .: the carrier of c1 & the carrier of b2 = c3 .: the carrier of c1 implies 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 holds
( b2 is finite implies 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 holds
( b2 is commutative Group implies 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 holds
( b2 is finite implies 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 holds
( b4 is_monomorphism & b3 in Image b4 implies 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 holds
( b4 is_monomorphism implies (b4 " ) . (b4 . b3) = b3 )
proof end;

theorem Th65: :: GROUP_6:65
for b1, b2 being Group
for b3 being Homomorphism of b2,b1 holds
( b3 is_monomorphism implies 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 holds
( b3 is_epimorphism implies for b4 being Element of b2 holds
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 holds
( b3 is_isomorphism implies ( 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 holds
( b3 is_isomorphism implies 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 holds
( b3 is_isomorphism & b4 = b3 " implies 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 holds
( b4 is_isomorphism & b5 is_isomorphism implies 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 holds
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 holds
( b1,b2 are_isomorphic implies 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 holds
( b1,b2 are_isomorphic implies b2,b1 are_isomorphic )
by Th77;
end;

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

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

theorem Th80: :: GROUP_6:80
for b1, b2 being strict Group holds
( b1 is trivial & b2 is trivial implies 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 holds
( b1,b2 are_isomorphic implies Ord b1 = Ord b2 )
proof end;

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

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

theorem Th87: :: GROUP_6:87
for b1, b2 being strict Group holds
( b1,b2 are_isomorphic & b1 is trivial implies 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 holds
( b1,b2 are_isomorphic & b1 is commutative Group implies 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 holds
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 holds
( b4 = b2 ./. (b2,b3 `*` ) & b3 is Subgroup of b2 implies (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;