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)¶ Bases:
sage.categories.morphism.Morphism
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)¶ Bases:
sage.groups.matrix_gps.morphism.MatrixGroupMap
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)¶ Bases:
sage.groups.matrix_gps.morphism.MatrixGroupMorphism
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])
TESTS:
Check that trac ticket #19406 is fixed:
sage: G = GL(2, GF(3)) sage: H = GL(3, GF(2)) sage: mat1 = H([[-1,0,0],[0,0,-1],[0,-1,0]]) sage: mat2 = H([[1,1,1],[0,0,-1],[-1,0,0]]) sage: phi = G.hom([mat1, mat2]) Traceback (most recent call last): ... TypeError: images do not define a group homomorphism
-
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 ofself
OUTPUT:
The image of
J
underself
.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 aliasimage()
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 doctest 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 ofself
OUTPUT:
The image of
J
underself
.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 aliasimage()
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 doctest 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 ] ]