:: AUTGROUP semantic presentation

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

Lemma2: for b1 being strict Group
for b2 being Subgroup of b1 st b2 is normal holds
for b3, b4 being Element of b1 st b4 is Element of b2 holds
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 st b4 is Element of b2 holds
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 st ( 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 ) ) ) holds
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 st ( 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 ) holds
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 st b2 = b4 & b3 = b5 holds
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) st b2 = b3 holds
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 st ( 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 ) ) holds
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 st the carrier of b1 = InnAut c1 & the carrier of b2 = InnAut c1 holds
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 st b2 = b4 & b3 = b5 holds
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) st b2 = b3 holds
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 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 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 st b1 is commutative Group holds
for b2 being Element of (InnAutGroup b1) holds b2 = 1. (InnAutGroup b1)
proof end;