# Permutation group homomorphisms¶

AUTHORS:

• David Joyner (2006-03-21): first version
• David Joyner (2008-06): fixed kernel and image to return a group, instead of a string.

EXAMPLES:

sage: G = CyclicPermutationGroup(4)
sage: H = DihedralGroup(4)
sage: g = G([(1,2,3,4)])
sage: phi = PermutationGroupMorphism_im_gens(G, H, map(H, G.gens()))
sage: phi.image(G)
Subgroup of (Dihedral group of order 8 as a permutation group) generated by [(1,2,3,4)]
sage: phi.kernel()
Subgroup of (Cyclic group of order 4 as a permutation group) generated by [()]
sage: phi.image(g)
(1,2,3,4)
sage: phi(g)
(1,2,3,4)
sage: phi.codomain()
Dihedral group of order 8 as a permutation group
sage: phi.codomain()
Dihedral group of order 8 as a permutation group
sage: phi.domain()
Cyclic group of order 4 as a permutation group
class sage.groups.perm_gps.permgroup_morphism.PermutationGroupMorphism

A set-theoretic map between PermutationGroups.

image(J)

J must be a subgroup of G. Computes the subgroup of H which is the image of J.

EXAMPLES:

sage: G = CyclicPermutationGroup(4)
sage: H = DihedralGroup(4)
sage: g = G([(1,2,3,4)])
sage: phi = PermutationGroupMorphism_im_gens(G, H, map(H, G.gens()))
sage: phi.image(G)
Subgroup of (Dihedral group of order 8 as a permutation group) generated by [(1,2,3,4)]
sage: phi.image(g)
(1,2,3,4)
sage: G = PSL(2,7)
sage: D = G.direct_product(G)
sage: H = D[0]
sage: pr1 = D[3]
sage: pr1.image(G)
Subgroup of (The projective special linear group of degree 2 over Finite Field of size 7) generated by [(3,7,5)(4,8,6), (1,2,6)(3,4,8)]
sage: G.is_isomorphic(pr1.image(G))
True
kernel()

Returns the kernel of this homomorphism as a permutation group.

EXAMPLES:

sage: G = CyclicPermutationGroup(4)
sage: H = DihedralGroup(4)
sage: g = G([(1,2,3,4)])
sage: phi = PermutationGroupMorphism_im_gens(G, H, [1])
sage: phi.kernel()
Subgroup of (Cyclic group of order 4 as a permutation group) generated by [(1,2,3,4)]
sage: G = PSL(2,7)
sage: D = G.direct_product(G)
sage: H = D[0]
sage: pr1 = D[3]
sage: G.is_isomorphic(pr1.kernel())
True
range()

Returns the codomain of this morphism. This method is deprecated. Please use codomain() instead.

EXAMPLES:

sage: G = PSL(2,7)
sage: D, iota1, iota2, pr1, pr2 = G.direct_product(G)
sage: pr1.range()
See http://trac.sagemath.org/10334 for details.
Permutation Group with generators [(3,7,5)(4,8,6), (1,2,6)(3,4,8)]
class sage.groups.perm_gps.permgroup_morphism.PermutationGroupMorphism_from_gap(G, H, gap_hom)

This is a Python trick to allow Sage programmers to create a group homomorphism using GAP using very general constructions. An example of its usage is in the direct_product instance method of the PermutationGroup_generic class in permgroup.py.

Basic syntax:

PermutationGroupMorphism_from_gap(domain_group, range_group,’phi:=gap_hom_command;’,’phi’) And don’t forget the line: from sage.groups.perm_gps.permgroup_morphism import PermutationGroupMorphism_from_gap in your program.

EXAMPLES:

sage: from sage.groups.perm_gps.permgroup_morphism import PermutationGroupMorphism_from_gap
sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
sage: H = G.subgroup([G([(1,2,3,4)])])
sage: PermutationGroupMorphism_from_gap(H, G, gap.Identity)
Permutation group morphism:
From: Subgroup of (Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]) generated by [(1,2,3,4)]
To:   Permutation Group with generators [(1,2)(3,4), (1,2,3,4)]
Defn: Identity
class sage.groups.perm_gps.permgroup_morphism.PermutationGroupMorphism_id

INPUT:

There can be one or two arguments of this init method. If it is one argument, it must be a hom space. If it is two arguments, it must be two parent structures that will be domain and codomain of the map-to-be-created.

TESTS:

sage: from sage.categories.map import Map

Using a hom space:

sage: Map(Hom(QQ, ZZ, Rings()))
Generic map:
From: Rational Field
To:   Integer Ring

Using domain and codomain:

sage: Map(QQ['x'], SymmetricGroup(6))
Generic map:
From: Univariate Polynomial Ring in x over Rational Field
To:   Symmetric group of order 6! as a permutation group
class sage.groups.perm_gps.permgroup_morphism.PermutationGroupMorphism_im_gens(G, H, gens=None, images=None)

Some python code for wrapping GAP’s GroupHomomorphismByImages function but only for permutation groups. Can be expensive if G is large. Returns “fail” if gens does not generate self or if the map does not extend to a group homomorphism, self - other.

EXAMPLES:

sage: G = CyclicPermutationGroup(4)
sage: H = DihedralGroup(4)
sage: phi = PermutationGroupMorphism_im_gens(G, H, map(H, G.gens())); phi
Permutation group morphism:
From: Cyclic group of order 4 as a permutation group
To:   Dihedral group of order 8 as a permutation group
Defn: [(1,2,3,4)] -> [(1,2,3,4)]
sage: g = G([(1,3),(2,4)]); g
(1,3)(2,4)
sage: phi(g)
(1,3)(2,4)
sage: images = ((4,3,2,1),)
sage: phi = PermutationGroupMorphism_im_gens(G, G, images)
sage: g = G([(1,2,3,4)]); g
(1,2,3,4)
sage: phi(g)
(1,4,3,2)

AUTHORS:

• David Joyner (2006-02)
sage.groups.perm_gps.permgroup_morphism.is_PermutationGroupMorphism(f)

Returns True if the argument f is a PermutationGroupMorphism.

EXAMPLES:

sage: from sage.groups.perm_gps.permgroup_morphism import is_PermutationGroupMorphism
sage: G = CyclicPermutationGroup(4)
sage: H = DihedralGroup(4)
sage: phi = PermutationGroupMorphism_im_gens(G, H, map(H, G.gens()))
sage: is_PermutationGroupMorphism(phi)
True

#### Previous topic

Permutation group elements

#### Next topic

Rubik’s cube group functions