# Homomorphisms Between Matrix Groups¶

AUTHORS:

• David Joyner and William Stein (2006-03): initial version
• David Joyner (2006-05): examples
• Simon King (2011-01): cleaning and improving code
• Volker Braun (2013-1) port to new Parent, libGAP.
class sage.groups.matrix_gps.morphism.MatrixGroupMap(parent)

Set-theoretic map between matrix groups.

EXAMPLES:

sage: from sage.groups.matrix_gps.morphism import MatrixGroupMap
sage: MatrixGroupMap(ZZ.Hom(ZZ))   # mathematical nonsense
MatrixGroup endomorphism of Integer Ring

class sage.groups.matrix_gps.morphism.MatrixGroupMorphism(parent)

Set-theoretic map between matrix groups.

EXAMPLES:

sage: from sage.groups.matrix_gps.morphism import MatrixGroupMap
sage: MatrixGroupMap(ZZ.Hom(ZZ))   # mathematical nonsense
MatrixGroup endomorphism of Integer Ring

class sage.groups.matrix_gps.morphism.MatrixGroupMorphism_im_gens(homset, imgsH, check=True)

Group morphism specified by images of generators.

Some Python code for wrapping GAP’s GroupHomomorphismByImages function but only for matrix groups. Can be expensive if G is large.

EXAMPLES:

sage: F = GF(5); MS = MatrixSpace(F,2,2)
sage: G = MatrixGroup([MS([1,1,0,1])])
sage: H = MatrixGroup([MS([1,0,1,1])])
sage: phi = G.hom(H.gens())
sage: phi
Homomorphism : Matrix group over Finite Field of size 5 with 1 generators (
[1 1]
[0 1]
) --> Matrix group over Finite Field of size 5 with 1 generators (
[1 0]
[1 1]
)
sage: phi(MS([1,1,0,1]))
[1 0]
[1 1]
sage: F = GF(7); MS = MatrixSpace(F,2,2)
sage: F.multiplicative_generator()
3
sage: G = MatrixGroup([MS([3,0,0,1])])
sage: a = G.gens()[0]^2
sage: phi = G.hom([a])

gap()

Return the underlying LibGAP group homomorphism

OUTPUT:

A LibGAP element.

EXAMPLES:

sage: F = GF(5); MS = MatrixSpace(F,2,2)
sage: G = MatrixGroup([MS([1,1,0,1])])
sage: H = MatrixGroup([MS([1,0,1,1])])
sage: phi = G.hom(H.gens())
sage: phi.gap()
CompositionMapping( [ (6,7,8,10,9)(11,13,14,12,15)(16,19,20,18,17)(21,25,22,24,23) ]
-> [ [ [ Z(5)^0, 0*Z(5) ], [ Z(5)^0, Z(5)^0 ] ] ], <action isomorphism> )
sage: type(_)
<type 'sage.libs.gap.element.GapElement'>

image(J, *args, **kwds)

The image of an element or a subgroup.

INPUT:

J – a subgroup or an element of the domain of self.

OUTPUT:

The image of J under self

NOTE:

pushforward is the method that is used when a map is called on anything that is not an element of its domain. For historical reasons, we keep the alias image() for this method.

EXAMPLES:

sage: F = GF(7); MS = MatrixSpace(F,2,2)
sage: F.multiplicative_generator()
3
sage: G = MatrixGroup([MS([3,0,0,1])])
sage: a = G.gens()[0]^2
sage: phi = G.hom([a])
sage: phi.image(G.gens()[0]) # indirect doctest
[2 0]
[0 1]
sage: H = MatrixGroup([MS(a.list())])
sage: H
Matrix group over Finite Field of size 7 with 1 generators (
[2 0]
[0 1]
)


The following tests against trac ticket #10659:

sage: phi(H)   # indirect doctestest
Matrix group over Finite Field of size 7 with 1 generators (
[4 0]
[0 1]
)

kernel()

Return the kernel of self, i.e., a matrix group.

EXAMPLES:

sage: F = GF(7); MS = MatrixSpace(F,2,2)
sage: F.multiplicative_generator()
3
sage: G = MatrixGroup([MS([3,0,0,1])])
sage: a = G.gens()[0]^2
sage: phi = G.hom([a])
sage: phi.kernel()
Matrix group over Finite Field of size 7 with 1 generators (
[6 0]
[0 1]
)

pushforward(J, *args, **kwds)

The image of an element or a subgroup.

INPUT:

J – a subgroup or an element of the domain of self.

OUTPUT:

The image of J under self

NOTE:

pushforward is the method that is used when a map is called on anything that is not an element of its domain. For historical reasons, we keep the alias image() for this method.

EXAMPLES:

sage: F = GF(7); MS = MatrixSpace(F,2,2)
sage: F.multiplicative_generator()
3
sage: G = MatrixGroup([MS([3,0,0,1])])
sage: a = G.gens()[0]^2
sage: phi = G.hom([a])
sage: phi.image(G.gens()[0]) # indirect doctest
[2 0]
[0 1]
sage: H = MatrixGroup([MS(a.list())])
sage: H
Matrix group over Finite Field of size 7 with 1 generators (
[2 0]
[0 1]
)


The following tests against trac ticket #10659:

sage: phi(H)   # indirect doctestest
Matrix group over Finite Field of size 7 with 1 generators (
[4 0]
[0 1]
)

sage.groups.matrix_gps.morphism.to_libgap(x)

Helper to convert x to a LibGAP matrix or matrix group element.

EXAMPLES:

sage: from sage.groups.matrix_gps.morphism import to_libgap
sage: to_libgap(GL(2,3).gen(0))
[ [ Z(3), 0*Z(3) ], [ 0*Z(3), Z(3)^0 ] ]
sage: to_libgap(matrix(QQ, [[1,2],[3,4]]))
[ [ 1, 2 ], [ 3, 4 ] ]


#### Previous topic

Finitely Generated Matrix Groups

#### Next topic

Matrix Group Homsets