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 keyword argument 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(3)

julia> K = symmetric_group(2)
Sym(2)

julia> G = direct_product(H,K)
Direct product of
 Sym(3)
 Sym(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 keyword argument 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
cartesian_powerMethod
cartesian_power(G::GAPGroup, n::Int)

Return the direct product of n copies of 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 keyword argument 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
canonical_injectionMethod
canonical_injection(G::DirectProductGroup, j::Int)

Return the injection of the j-th component of G into G, for j = 1,...,#factors of G. It is not defined for proper subgroups of direct products.

Examples

julia> H = symmetric_group(3)
Sym(3)

julia> K = symmetric_group(2)
Sym(2)

julia> G = direct_product(H, K)
Direct product of
 Sym(3)
 Sym(2)

julia> inj1 = canonical_injection(G, 1)
Group homomorphism
  from Sym(3)
  to direct product of
   Sym(3)
   Sym(2)

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

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

julia> inj2 = canonical_injection(G, 2)
Group homomorphism
  from Sym(2)
  to direct product of
   Sym(3)
   Sym(2)

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

julia> inj2(k)
(4,5)

julia> inj1(h)*inj2(k)
(1,2,3)(4,5)
source
canonical_injectionsMethod
canonical_injections(G::DirectProductGroup)

Return the injection of the j-th component of G into G, for all j = 1,...,#factors of G. It is not defined for proper subgroups of direct products.

source
canonical_projectionMethod
canonical_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(3)

julia> K = symmetric_group(2)
Sym(2)

julia> G = direct_product(H, K)
Direct product of
 Sym(3)
 Sym(2)

julia> proj1 = canonical_projection(G, 1)
Group homomorphism
  from direct product of
   Sym(3)
   Sym(2)
  to Sym(3)

julia> proj2 = canonical_projection(G, 2)
Group homomorphism
  from direct product of
   Sym(3)
   Sym(2)
  to Sym(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
canonical_projectionsMethod
canonical_projection(G::DirectProductGroup)

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

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
canonical_injectionMethod
canonical_injection(G::SemidirectProductGroup, n::Int)

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

source
canonical_projectionMethod
canonical_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 order 3

julia> H = symmetric_group(2)
Sym(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 order 3

julia> H = symmetric_group(2)
Sym(2)

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

julia> normal_subgroup(W)
Pc group of order 3
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 order 3

julia> H = symmetric_group(2)
Sym(2)

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

julia> acting_subgroup(W)
Sym(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
canonical_projectionMethod
canonical_projection(G::WreathProductGroup)

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

source
canonical_injectionMethod
canonical_injection(G::WreathProductGroup, n::Int)

Return the injection of the n-th component of G into G. It is not defined for proper subgroups of wreath products.

source
canonical_injectionsMethod
canonical_injections(G::WreathProductGroup)

Return the injection of the n-th component of G into G for all n. It is not defined for proper subgroups of wreath products.

source