# Products of groups

## Direct products

DirectProductGroupType
DirectProductGroup

Either direct product of two or more groups of any type, or subgroup of a direct product of groups.

source
direct_productMethod
direct_product(L::AbstractVector{<:GAPGroup}; morphisms)
direct_product(L::GAPGroup...)

Return the direct product of the groups in the collection L.

The parameter morphisms is false by default. If it is set true, then the output is a triple (G, emb, proj), where emb and proj are the vectors of the embeddings (resp. projections) of the direct product G.

Examples

julia> H = symmetric_group(3)
Sym( [ 1 .. 3 ] )

julia> K = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> G = direct_product(H,K)
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> elements(G)
12-element Vector{Oscar.BasicGAPGroupElem{DirectProductGroup}}:
()
(4,5)
(2,3)
(2,3)(4,5)
(1,2)
(1,2)(4,5)
(1,2,3)
(1,2,3)(4,5)
(1,3,2)
(1,3,2)(4,5)
(1,3)
(1,3)(4,5)
source
inner_direct_productMethod
inner_direct_product(L::AbstractVector{T}; morphisms)
inner_direct_product(L::T...)

Return a direct product of groups of the same type T as a group of type T. It works for T of the following types:

• PermGroup, PcGroup, FPGroup.

The parameter morphisms is false by default. If it is set true, then the output is a triple (G, emb, proj), where emb and proj are the vectors of the embeddings (resp. projections) of the direct product G.

source
inner_cartesian_powerMethod
inner_cartesian_power(G::T, n::Int; morphisms)

Return the direct product of n copies of G as group of type T.

The parameter morphisms is false by default. If it is set true, then the output is a triple (G, emb, proj), where emb and proj are the vectors of the embeddings (resp. projections) of the direct product G.

source
as_perm_groupMethod
as_perm_group(G::DirectProductGroup)

If G is direct product of permutations groups, return G as permutation group.

Examples

julia> H = symmetric_group(3)
Sym( [ 1 .. 3 ] )

julia> K = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> G = direct_product(H,K)
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> as_perm_group(G)
Group([ (1,2,3), (1,2), (4,5) ])
source
as_polycyclic_groupMethod
as_polycyclic_group(G::DirectProductGroup)

If G is direct product of polycyclic groups, return G as polycyclic group.

source
embeddingMethod
embedding(G::DirectProductGroup, j::Int)

Return the embedding of the j-th component of G into G, for j = 1,...,#factors of G.

Examples

julia> H = symmetric_group(3)
Sym( [ 1 .. 3 ] )

julia> K = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> G = direct_product(H,K)
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> emb1 = embedding(G,1)
Group homomorphism from
Sym( [ 1 .. 3 ] )
to
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> h = perm(H,[2,3,1])
(1,2,3)

julia> emb1(h)
(1,2,3)

julia> emb2 = embedding(G,2)
Group homomorphism from
Sym( [ 1 .. 2 ] )
to
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> k = perm(K,[2,1])
(1,2)

julia> emb2(k)
(4,5)

julia> emb1(h)*emb2(k)
(1,2,3)(4,5)
source
projectionMethod
projection(G::DirectProductGroup, j::Int)

Return the projection of G into the j-th component of G, for j = 1,...,#factors of G.

Examples

julia> H = symmetric_group(3)
Sym( [ 1 .. 3 ] )

julia> K = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> G = direct_product(H,K)
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )

julia> proj1 = projection(G,1)
Group homomorphism from
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )
to
Sym( [ 1 .. 3 ] )

julia> proj2 = projection(G,2)
Group homomorphism from
DirectProduct of
Sym( [ 1 .. 3 ] )
Sym( [ 1 .. 2 ] )
to
Sym( [ 1 .. 2 ] )

julia> g = perm([2,3,1,5,4])
(1,2,3)(4,5)

julia> proj1(g)
(1,2,3)

julia> proj2(g)
(1,2)
source
write_as_fullMethod
write_as_full(G::DirectProductGroup)

If G is a subgroup of the direct product $G_1 \times G_2 \times \cdots \times G_n$ such that G has the form $H_1 \times H_2 \times \cdots \times H_n$, for subgroups $H_i$ of $G_i$, return this full direct product of the $H_i$.

An exception is thrown if such $H_i$ do not exist.

source
is_full_direct_productMethod
is_full_direct_product(G::DirectProductGroup)

Return whether G is direct product of its factors (false if it is a proper subgroup).

source

## Semidirect products

SemidirectProductGroupType
SemidirectProductGroup{S,T}

Semidirect product of two groups of type S and T respectively, or subgroup of a semidirect product of groups.

source
semidirect_productMethod
semidirect_product(N::S, f::GAPGroupHomomorphism, H::T)

Return the semidirect product of N and H, of type SemidirectProductGroup{S,T}, where f is a group homomorphism from H to the automorphism group of N.

source
normal_subgroupMethod
normal_subgroup(G::SemidirectProductGroup)

Return N, where G is the semidirect product of the normal subgroup N and H.

source
acting_subgroupMethod
acting_subgroup(G::SemidirectProductGroup)

Return H, where G is the semidirect product of the normal subgroup N and H.

source
homomorphism_of_semidirect_productMethod
homomorphism_of_semidirect_product(G::SemidirectProductGroup)

Return f, where G is the semidirect product of the normal subgroup N and the group H acting on N via the homomorphism h.

source
is_full_semidirect_productMethod
is_full_semidirect_product(G::SemidirectProductGroup)

Return whether G is a semidirect product of two groups, instead of a proper subgroup.

source
embeddingMethod
embedding(G::SemidirectProductGroup, n::Int)

Return the embedding of the n-th component of G into G, for n = 1,2. It is not defined for proper subgroups of semidirect products.

source
projectionMethod
projection(G::SemidirectProductGroup)

Return the projection of G into the second component of G.

source

## Wreath products

WreathProductGroupType
WreathProductGroup

Wreath product of a group G and a group of permutations H, or a generic group H together with the homomorphism a from H to a permutation group.

source
wreath_productMethod
wreath_product(G::T, H::S, a::GAPGroupHomomorphism{S,PermGroup})
wreath_product(G::T, H::PermGroup) where T<: Group

Return the wreath product of the group G and the group H, where H acts on n copies of G through the homomorphism a from H to a permutation group, and n is the number of moved points of Image(a).

If a is not specified, then H must be a group of permutations. In this case, n is NOT the number of moved points, but the degree of H.

If W is a wreath product of G and H, {g_1, ..., g_n} are elements of G and h in H, the element (g_1, ..., h) of W can be obtained by typing

    W(g_1,...,g_n, h).

Examples

julia> G = cyclic_group(3)
<pc group of size 3 with 1 generator>

julia> H = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> W = wreath_product(G,H)
<group of size 18 with 2 generators>

julia> a = gen(W,1)
WreathProductElement(f1,<identity> of ...,())

julia> b = gen(W,2)
WreathProductElement(<identity> of ...,<identity> of ...,(1,2))

julia> a*b
WreathProductElement(f1,<identity> of ...,(1,2))
source
normal_subgroupMethod
normal_subgroup(W::WreathProductGroup)

Return G, where W is the wreath product of G and H.

Examples

julia> G = cyclic_group(3)
<pc group of size 3 with 1 generator>

julia> H = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> W = wreath_product(G,H)
<group of size 18 with 2 generators>

julia> normal_subgroup(W)
<pc group of size 3 with 1 generator>
source
acting_subgroupMethod
acting_subgroup(W::WreathProductGroup)

Return H, where W is the wreath product of G and H.

Examples

julia> G = cyclic_group(3)
<pc group of size 3 with 1 generator>

julia> H = symmetric_group(2)
Sym( [ 1 .. 2 ] )

julia> W = wreath_product(G,H)
<group of size 18 with 2 generators>

julia> acting_subgroup(W)
Sym( [ 1 .. 2 ] )
source
homomorphism_of_wreath_productMethod
homomorphism_of_wreath_product(G::WreathProductGroup)

If W is the wreath product of G and H, then return the homomorphism f from H to Sym(n), where n is the number of copies of G.

source
is_full_wreath_productMethod
is_full_wreath_product(G::WreathProductGroup)

Return whether G is a wreath product of two groups, instead of a proper subgroup.

source
projectionMethod
projection(G::WreathProductGroup)

Return the projection of wreath_product(G,H) onto the permutation group H.

source
embeddingMethod
embedding(G::WreathProductGroup, n::Int)

Return the embedding of the n-th component of G into G.

source