Groups of automorphisms
automorphism_group — Methodautomorphism_group(G::Group) -> A::AutomorphismGroup{T}Return the full automorphism group of G. If f is an object of type GAPGroupHomomorphism and it is bijective from G to itself, then A(f) return the embedding of f in A.
Groups of automorphisms over a group G have parametric type AutomorphismGroup{T}, where T is the type of G.
Examples
julia> S = symmetric_group(3)
Sym(3)
julia> typeof(S)
PermGroup
julia> A = automorphism_group(S)
Aut( Sym( [ 1 .. 3 ] ) )
julia> typeof(A)
AutomorphismGroup{PermGroup}The evaluation of the automorphism f in the element x is analogous to the homomorphism evaluation: it can be obtained by typing either f(x) or x^f.
julia> S = symmetric_group(4)
Sym(4)
julia> A = automorphism_group(S)
Aut( Sym( [ 1 .. 4 ] ) )
julia> x = perm(S,[2,1,4,3])
(1,2)(3,4)
julia> f = A[2]
Pcgs([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) -> [ (2,3), (2,4,3), (1,3)(2,4), (1,2)(3,4) ]
julia> f(x)
(1,4)(2,3)
julia> x^f
(1,4)(2,3)It is possible to turn an automorphism f into a homomorphism by typing hom(f).
julia> S = symmetric_group(4)
Sym(4)
julia> A = automorphism_group(S)
Aut( Sym( [ 1 .. 4 ] ) )
julia> f = A[2]
Pcgs([ (3,4), (2,4,3), (1,4)(2,3), (1,3)(2,4) ]) -> [ (2,3), (2,4,3), (1,3)(2,4), (1,2)(3,4) ]
julia> typeof(f)
AutomorphismGroupElem{PermGroup} (alias for Oscar.BasicGAPGroupElem{AutomorphismGroup{PermGroup}})
julia> typeof(hom(f))
GAPGroupHomomorphism{PermGroup, PermGroup}The converse is also possible: if g is a bijective homomorphism from the group G to itself and A is the automorphism group of G, then the instruction A(g) returns g as automorphism of G. This is the standard way to explicitly build an automorphism (another way, available for inner automorphisms, is shown in Section Inner_automorphisms).
Examples
julia> S = symmetric_group(4)
Sym(4)
julia> a = perm(S,[2,1,4,3])
(1,2)(3,4)
julia> f = hom(S,S,x ->x^a)
Group homomorphism
from Sym(4)
to Sym(4)
julia> A = automorphism_group(S)
Aut( Sym( [ 1 .. 4 ] ) )
julia> A(f)
MappingByFunction( Sym( [ 1 .. 4 ] ), Sym( [ 1 .. 4 ] ), <Julia: gap_fun> )Elements of A can be multiplied with other elements of A or by elements of type GAPGroupHomomorphism; in this last case, the result has type GAPGroupHomomorphism.
Examples
julia> S = symmetric_group(4);
julia> A = automorphism_group(S);
julia> g = hom(S,S,x->x^S[1]);
julia> g in A
false
julia> au = A(g);
julia> au in A
true
julia> g == hom(au)
true
julia> x = cperm(S,[1,2,3]);
julia> au(x)
(2,3,4)
julia> g(x) == au(x)
trueIn Oscar it is possible to multiply homomorphisms and automorphisms (whenever it makes sense); in such cases, the output is always a variable of type GAPGroupHomomorphism{S,T}.
julia> S = symmetric_group(4)
Sym(4)
julia> A = automorphism_group(S)
Aut( Sym( [ 1 .. 4 ] ) )
julia> g = hom(S,S,x->x^S[1])
Group homomorphism
from Sym(4)
to Sym(4)
julia> f = A(g)
MappingByFunction( Sym( [ 1 .. 4 ] ), Sym( [ 1 .. 4 ] ), <Julia: gap_fun> )
julia> typeof(g*f)
GAPGroupHomomorphism{PermGroup, PermGroup}The following functions are available for automorphisms, some of them similar to the corresponding functions for homomorphisms of groups.
is_invariant — Methodis_invariant(f::GAPGroupElem{AutomorphismGroup{T}}, H::GAPGroup) where T <: GAPGroupReturn whether f(H) == H.
restrict_automorphism — Methodrestrict_automorphism(f::GAPGroupElem{AutomorphismGroup{T}}, H::GAPGroup) where T <: GAPGroupReturn the restriction of f to H as an automorphism of H. An exception is thrown if H is not invariant under f.
induced_automorphism — Methodinduced_automorphism(f::GAPGroupHomomorphism, g::GAPGroupHomomorphism)
induced_automorphism(f::GAPGroupHomomorphism, g::GAPGroupElem{AutomorphismGroup{T}})Return the automorphism h of the image of f such that h(f) == f(g), where g is an automorphism of a group G and f is a group homomorphism defined over G such that the kernel of f is invariant under g
hom — Methodhom(f::GAPGroupElem{AutomorphismGroup{T}}) where TReturn the element f of type GAPGroupHomomorphism{T,T}.
Inner automorphisms
OSCAR provides the following functions to handle inner automorphisms of a group.
inner_automorphism — Methodinner_automorphism(g::GAPGroupElem)Return the inner automorphism in automorphism_group(parent(g)) defined by x -> x^g.
is_inner_automorphism — Methodis_inner_automorphism(f::GAPGroupHomomorphism)
is_inner_automorphism(f::GAPGroupElem{AutomorphismGroup{T}})Return whether f is an inner automorphism.
inner_automorphism_group — Methodinner_automorphism_group(A::AutomorphismGroup{T})Return the subgroup of A of the inner automorphisms.