:: AUTGROUP semantic presentation

Lemma1: for b1 being strict Group
for b2 being Subgroup of b1 holds
( ( for b3, b4 being Element of b1 holds
( b4 is Element of b2 implies b4 |^ b3 in b2 ) ) implies b2 is normal )
proof end;

Lemma2: for b1 being strict Group
for b2 being Subgroup of b1 holds
( b2 is normal implies for b3, b4 being Element of b1 holds
( b4 is Element of b2 implies b4 |^ b3 in b2 ) )
proof end;

theorem Th1: :: AUTGROUP:1
for b1 being strict Group
for b2 being Subgroup of b1 holds
( ( for b3, b4 being Element of b1 holds
( b4 is Element of b2 implies b4 |^ b3 in b2 ) ) iff b2 is normal ) by Lemma1, Lemma2;

definition
let c1 be strict Group;
func Aut c1 -> FUNCTION_DOMAIN of the carrier of a1,the carrier of a1 means :Def1: :: AUTGROUP:def 1
( ( for b1 being Element of a2 holds
b1 is Homomorphism of a1,a1 ) & ( for b1 being Homomorphism of a1,a1 holds
( b1 in a2 iff ( b1 is one-to-one & b1 is_epimorphism ) ) ) );
existence
ex b1 being FUNCTION_DOMAIN of the carrier of c1,the carrier of c1 st
( ( for b2 being Element of b1 holds
b2 is Homomorphism of c1,c1 ) & ( for b2 being Homomorphism of c1,c1 holds
( b2 in b1 iff ( b2 is one-to-one & b2 is_epimorphism ) ) ) )
proof end;
uniqueness
for b1, b2 being FUNCTION_DOMAIN of the carrier of c1,the carrier of c1 holds
( ( for b3 being Element of b1 holds
b3 is Homomorphism of c1,c1 ) & ( for b3 being Homomorphism of c1,c1 holds
( b3 in b1 iff ( b3 is one-to-one & b3 is_epimorphism ) ) ) & ( for b3 being Element of b2 holds
b3 is Homomorphism of c1,c1 ) & ( for b3 being Homomorphism of c1,c1 holds
( b3 in b2 iff ( b3 is one-to-one & b3 is_epimorphism ) ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def1 defines Aut AUTGROUP:def 1 :
for b1 being strict Group
for b2 being FUNCTION_DOMAIN of the carrier of b1,the carrier of b1 holds
( b2 = Aut b1 iff ( ( for b3 being Element of b2 holds
b3 is Homomorphism of b1,b1 ) & ( for b3 being Homomorphism of b1,b1 holds
( b3 in b2 iff ( b3 is one-to-one & b3 is_epimorphism ) ) ) ) );

theorem Th2: :: AUTGROUP:2
canceled;

theorem Th3: :: AUTGROUP:3
for b1 being strict Group holds Aut b1 c= Funcs the carrier of b1,the carrier of b1
proof end;

theorem Th4: :: AUTGROUP:4
for b1 being strict Group holds
id the carrier of b1 is Element of Aut b1
proof end;

theorem Th5: :: AUTGROUP:5
for b1 being strict Group
for b2 being Homomorphism of b1,b1 holds
( b2 in Aut b1 iff b2 is_isomorphism )
proof end;

Lemma6: for b1 being strict Group
for b2 being Element of Aut b1 holds
( dom b2 = rng b2 & dom b2 = the carrier of b1 )
proof end;

theorem Th6: :: AUTGROUP:6
for b1 being strict Group
for b2 being Element of Aut b1 holds
b2 " is Homomorphism of b1,b1
proof end;

theorem Th7: :: AUTGROUP:7
for b1 being strict Group
for b2 being Element of Aut b1 holds
b2 " is Element of Aut b1
proof end;

theorem Th8: :: AUTGROUP:8
for b1 being strict Group
for b2, b3 being Element of Aut b1 holds
b2 * b3 is Element of Aut b1
proof end;

definition
let c1 be strict Group;
func AutComp c1 -> BinOp of Aut a1 means :Def2: :: AUTGROUP:def 2
for b1, b2 being Element of Aut a1 holds a2 . b1,b2 = b1 * b2;
existence
ex b1 being BinOp of Aut c1 st
for b2, b3 being Element of Aut c1 holds b1 . b2,b3 = b2 * b3
proof end;
uniqueness
for b1, b2 being BinOp of Aut c1 holds
( ( for b3, b4 being Element of Aut c1 holds b1 . b3,b4 = b3 * b4 ) & ( for b3, b4 being Element of Aut c1 holds b2 . b3,b4 = b3 * b4 ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def2 defines AutComp AUTGROUP:def 2 :
for b1 being strict Group
for b2 being BinOp of Aut b1 holds
( b2 = AutComp b1 iff for b3, b4 being Element of Aut b1 holds b2 . b3,b4 = b3 * b4 );

definition
let c1 be strict Group;
func AutGroup c1 -> strict Group equals :: AUTGROUP:def 3
HGrStr(# (Aut a1),(AutComp a1) #);
coherence
HGrStr(# (Aut c1),(AutComp c1) #) is strict Group
proof end;
end;

:: deftheorem Def3 defines AutGroup AUTGROUP:def 3 :
for b1 being strict Group holds AutGroup b1 = HGrStr(# (Aut b1),(AutComp b1) #);

theorem Th9: :: AUTGROUP:9
for b1 being strict Group
for b2, b3 being Element of (AutGroup b1)
for b4, b5 being Element of Aut b1 holds
( b2 = b4 & b3 = b5 implies b2 * b3 = b4 * b5 ) by Def2;

theorem Th10: :: AUTGROUP:10
for b1 being strict Group holds id the carrier of b1 = 1. (AutGroup b1)
proof end;

theorem Th11: :: AUTGROUP:11
for b1 being strict Group
for b2 being Element of Aut b1
for b3 being Element of (AutGroup b1) holds
( b2 = b3 implies b2 " = b3 " )
proof end;

definition
let c1 be strict Group;
func InnAut c1 -> FUNCTION_DOMAIN of the carrier of a1,the carrier of a1 means :Def4: :: AUTGROUP:def 4
for b1 being Element of Funcs the carrier of a1,the carrier of a1 holds
( b1 in a2 iff ex b2 being Element of a1 st
for b3 being Element of a1 holds b1 . b3 = b3 |^ b2 );
existence
ex b1 being FUNCTION_DOMAIN of the carrier of c1,the carrier of c1 st
for b2 being Element of Funcs the carrier of c1,the carrier of c1 holds
( b2 in b1 iff ex b3 being Element of c1 st
for b4 being Element of c1 holds b2 . b4 = b4 |^ b3 )
proof end;
uniqueness
for b1, b2 being FUNCTION_DOMAIN of the carrier of c1,the carrier of c1 holds
( ( for b3 being Element of Funcs the carrier of c1,the carrier of c1 holds
( b3 in b1 iff ex b4 being Element of c1 st
for b5 being Element of c1 holds b3 . b5 = b5 |^ b4 ) ) & ( for b3 being Element of Funcs the carrier of c1,the carrier of c1 holds
( b3 in b2 iff ex b4 being Element of c1 st
for b5 being Element of c1 holds b3 . b5 = b5 |^ b4 ) ) implies b1 = b2 )
proof end;
end;

:: deftheorem Def4 defines InnAut AUTGROUP:def 4 :
for b1 being strict Group
for b2 being FUNCTION_DOMAIN of the carrier of b1,the carrier of b1 holds
( b2 = InnAut b1 iff for b3 being Element of Funcs the carrier of b1,the carrier of b1 holds
( b3 in b2 iff ex b4 being Element of b1 st
for b5 being Element of b1 holds b3 . b5 = b5 |^ b4 ) );

theorem Th12: :: AUTGROUP:12
for b1 being strict Group holds InnAut b1 c= Funcs the carrier of b1,the carrier of b1
proof end;

theorem Th13: :: AUTGROUP:13
for b1 being strict Group
for b2 being Element of InnAut b1 holds
b2 is Element of Aut b1
proof end;

theorem Th14: :: AUTGROUP:14
for b1 being strict Group holds InnAut b1 c= Aut b1
proof end;

theorem Th15: :: AUTGROUP:15
for b1 being strict Group
for b2, b3 being Element of InnAut b1 holds (AutComp b1) . b2,b3 = b2 * b3
proof end;

theorem Th16: :: AUTGROUP:16
for b1 being strict Group holds
id the carrier of b1 is Element of InnAut b1
proof end;

theorem Th17: :: AUTGROUP:17
for b1 being strict Group
for b2 being Element of InnAut b1 holds
b2 " is Element of InnAut b1
proof end;

theorem Th18: :: AUTGROUP:18
for b1 being strict Group
for b2, b3 being Element of InnAut b1 holds
b2 * b3 is Element of InnAut b1
proof end;

definition
let c1 be strict Group;
func InnAutGroup c1 -> strict normal Subgroup of AutGroup a1 means :Def5: :: AUTGROUP:def 5
the carrier of a2 = InnAut a1;
existence
ex b1 being strict normal Subgroup of AutGroup c1 st the carrier of b1 = InnAut c1
proof end;
uniqueness
for b1, b2 being strict normal Subgroup of AutGroup c1 holds
( the carrier of b1 = InnAut c1 & the carrier of b2 = InnAut c1 implies b1 = b2 )
by GROUP_2:68;
end;

:: deftheorem Def5 defines InnAutGroup AUTGROUP:def 5 :
for b1 being strict Group
for b2 being strict normal Subgroup of AutGroup b1 holds
( b2 = InnAutGroup b1 iff the carrier of b2 = InnAut b1 );

theorem Th19: :: AUTGROUP:19
canceled;

theorem Th20: :: AUTGROUP:20
for b1 being strict Group
for b2, b3 being Element of (InnAutGroup b1)
for b4, b5 being Element of InnAut b1 holds
( b2 = b4 & b3 = b5 implies b2 * b3 = b4 * b5 )
proof end;

theorem Th21: :: AUTGROUP:21
for b1 being strict Group holds id the carrier of b1 = 1. (InnAutGroup b1)
proof end;

theorem Th22: :: AUTGROUP:22
for b1 being strict Group
for b2 being Element of InnAut b1
for b3 being Element of (InnAutGroup b1) holds
( b2 = b3 implies b2 " = b3 " )
proof end;

definition
let c1 be strict Group;
let c2 be Element of c1;
func Conjugate c2 -> Element of InnAut a1 means :Def6: :: AUTGROUP:def 6
for b1 being Element of a1 holds a3 . b1 = b1 |^ a2;
existence
ex b1 being Element of InnAut c1 st
for b2 being Element of c1 holds b1 . b2 = b2 |^ c2
proof end;
uniqueness
for b1, b2 being Element of InnAut c1 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 Def6 defines Conjugate AUTGROUP:def 6 :
for b1 being strict Group
for b2 being Element of b1
for b3 being Element of InnAut b1 holds
( b3 = Conjugate b2 iff for b4 being Element of b1 holds b3 . b4 = b4 |^ b2 );

theorem Th23: :: AUTGROUP:23
for b1 being strict Group
for b2, b3 being Element of b1 holds Conjugate (b2 * b3) = (Conjugate b3) * (Conjugate b2)
proof end;

theorem Th24: :: AUTGROUP:24
for b1 being strict Group holds Conjugate (1. b1) = id the carrier of b1
proof end;

theorem Th25: :: AUTGROUP:25
for b1 being strict Group
for b2 being Element of b1 holds (Conjugate (1. b1)) . b2 = b2
proof end;

theorem Th26: :: AUTGROUP:26
for b1 being strict Group
for b2 being Element of b1 holds (Conjugate b2) * (Conjugate (b2 " )) = Conjugate (1. b1)
proof end;

theorem Th27: :: AUTGROUP:27
for b1 being strict Group
for b2 being Element of b1 holds (Conjugate (b2 " )) * (Conjugate b2) = Conjugate (1. b1)
proof end;

theorem Th28: :: AUTGROUP:28
for b1 being strict Group
for b2 being Element of b1 holds Conjugate (b2 " ) = (Conjugate b2) "
proof end;

theorem Th29: :: AUTGROUP:29
for b1 being strict Group
for b2 being Element of b1 holds
( (Conjugate b2) * (Conjugate (1. b1)) = Conjugate b2 & (Conjugate (1. b1)) * (Conjugate b2) = Conjugate b2 )
proof end;

theorem Th30: :: AUTGROUP:30
for b1 being strict Group
for b2 being Element of InnAut b1 holds
( b2 * (Conjugate (1. b1)) = b2 & (Conjugate (1. b1)) * b2 = b2 )
proof end;

theorem Th31: :: AUTGROUP:31
for b1 being strict Group holds InnAutGroup b1,b1 ./. (center b1) are_isomorphic
proof end;

theorem Th32: :: AUTGROUP:32
for b1 being strict Group holds
( b1 is commutative Group implies for b2 being Element of (InnAutGroup b1) holds b2 = 1. (InnAutGroup b1) )
proof end;