Products of groups

Direct products

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)
Symmetric group of degree 3

julia> K = symmetric_group(2)
Symmetric group of degree 2

julia> G = direct_product(H,K)
Direct product of
  symmetric group of degree 3
  symmetric group of degree 2

julia> elements(G)
12-element Vector{Oscar.BasicGAPGroupElem{DirectProductGroup}}:
 ()
 (4,5)
 (2,3)
 (2,3)(4,5)
 (1,3,2)
 (1,3,2)(4,5)
 (1,3)
 (1,3)(4,5)
 (1,2,3)
 (1,2,3)(4,5)
 (1,2)
 (1,2)(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, SubPcGroup, FPGroup, SubFPGroup.

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)
Symmetric group of degree 3

julia> K = symmetric_group(2)
Symmetric group of degree 2

julia> G = direct_product(H, K)
Direct product of
  symmetric group of degree 3
  symmetric group of degree 2

julia> inj1 = canonical_injection(G, 1)
Group homomorphism
  from symmetric group of degree 3
  to H x K

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 symmetric group of degree 2
  to H x K

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)
Symmetric group of degree 3

julia> K = symmetric_group(2)
Symmetric group of degree 2

julia> G = direct_product(H, K)
Direct product of
  symmetric group of degree 3
  symmetric group of degree 2

julia> proj1 = canonical_projection(G, 1)
Group homomorphism
  from H x K
  to symmetric group of degree 3

julia> proj2 = canonical_projection(G, 2)
Group homomorphism
  from H x K
  to symmetric group of degree 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

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.

Examples

julia> Q = quaternion_group(8)
Pc group of order 8

julia> C = cyclic_group(2)
Pc group of order 2

julia> A = automorphism_group(Q)
Automorphism group of
  pc group of order 8

julia> au = A(hom(Q,Q,[Q[1],Q[2]],[Q[1]^3,Q[2]^3]))
[ x, y ] -> [ x*y2, y*y2 ]

julia> f = hom(C,A,[C[1]],[au])
Group homomorphism
  from pc group of order 2
  to automorphism group of pc group of order 8

julia> G = semidirect_product(Q,f,C)
Semidirect product of
  normal group: pc group of order 8
  acting group: pc group of order 2

julia> derived_subgroup(G)
(Subgroup of Q : C, Hom: subgroup of semidirect product of groups -> semidirect product of groups)
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

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)
Symmetric group of degree 2

julia> W = wreath_product(G,H)
Wreath product with
  base group: pc group of order 3
  top group: symmetric group of degree 2

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)
Symmetric group of degree 2

julia> W = wreath_product(G,H)
Wreath product with
  base group: pc group of order 3
  top group: symmetric group of degree 2

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)
Symmetric group of degree 2

julia> W = wreath_product(G,H)
Wreath product with
  base group: pc group of order 3
  top group: symmetric group of degree 2

julia> acting_subgroup(W)
Symmetric group of degree 2
source
homomorphism_of_wreath_productMethod
homomorphism_of_wreath_product(W::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(W::WreathProductGroup)

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

source
canonical_projectionMethod
canonical_projection(W::WreathProductGroup)

If W is the wreath product of G and H, then return the projection of W onto the permutation group H.

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

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

source
canonical_injectionsMethod
canonical_injections(W::WreathProductGroup)

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

source

Technicalities

DirectProductGroupType
DirectProductGroup

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

source
SemidirectProductGroupType
SemidirectProductGroup{S,T}

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

source
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