Package sage :: Package groups :: Package matrix_gps :: Module matrix_group
[hide private]
[frames] | no frames]

Module matrix_group

source code


Matrix Groups

AUTHORS:
   William Stein -- initial version
   David Joyner  -- degree, base_ring, _contains_, list, random, order 
                    methods; examples (2006-03-15)
   William Stein (2006-12) -- rewrite
   DJ (2007-12) -- Added invariant_generators (with M Albrecht, S King)

This class is designed for computing with matrix groups defined by a
relatively (small) finite set of generating matrices.

EXAMPLES:
    sage: F = GF(3)
    sage: gens = [matrix(F,2, [1,0, -1,1]), matrix(F, 2, [1,1,0,1])]
    sage: G = MatrixGroup(gens)
    sage: G.conjugacy_class_representatives()
    [
    [1 0]
    [0 1],
    [0 1]
    [2 1],
    [0 1]
    [2 2],
    [0 2]
    [1 1],
    [0 2]
    [1 2],
    [0 1]
    [2 0],
    [2 0]
    [0 2]
    ]    

Loading and saving work:
    sage: G = GL(2,5); G
    General Linear Group of degree 2 over Finite Field of size 5
    sage: loads(dumps(G)) == G
    True
    sage: g = G.1; g
    [4 1]
    [4 0]
    sage: loads(dumps(g)) == g
    True



Classes [hide private]
  MatrixGroup_generic
  MatrixGroup_gap
  MatrixGroup_gap_finite_field
  MatrixGroup_gens
EXAMPLES: A ValueError is raised if one of the generators is not invertible.
  MatrixGroup_gens_finite_field
Functions [hide private]
 
is_MatrixGroup(x)
EXAMPLES:...
source code
 
MatrixGroup(gens)
Return the matrix group with given generators.
source code
Function Details [hide private]

is_MatrixGroup(x)

source code 

EXAMPLES:
    sage: is_MatrixGroup(MatrixSpace(QQ,3))
    False
    sage: is_MatrixGroup(Mat(QQ,3))
    False
    sage: is_MatrixGroup(GL(2,ZZ))
    True
    sage: is_MatrixGroup(MatrixGroup([matrix(2,[1,1,0,1])]))
    True

MatrixGroup(gens)

source code 

Return the matrix group with given generators.

INPUT:
     gens -- list of matrices in a matrix space or matrix group

EXAMPLES:
    sage: F = GF(5)
    sage: gens = [matrix(F,2,[1,2, -1, 1]), matrix(F,2, [1,1, 0,1])]
    sage: G = MatrixGroup(gens); G
    Matrix group over Finite Field of size 5 with 2 generators: 
     [[[1, 2], [4, 1]], [[1, 1], [0, 1]]]

In the second example, the generators are a matrix over $\ZZ$, a
matrix over a finite field, and the integer $2$.  SAGE determines
that they both canonically map to matrices over the finite field,
so creates that matrix group there.    
    sage: gens = [matrix(2,[1,2, -1, 1]), matrix(GF(7), 2, [1,1, 0,1]), 2]
    sage: G = MatrixGroup(gens); G
    Matrix group over Finite Field of size 7 with 3 generators: 
     [[[1, 2], [6, 1]], [[1, 1], [0, 1]], [[2, 0], [0, 2]]]

Each generator must be invertible:
    sage: G = MatrixGroup([matrix(ZZ,2,[1,2,3,4])])
    Traceback (most recent call last):
    ...
    ValueError: each generator must be an invertible matrix but one is not:
    [1 2]
    [3 4]

Some groups aren't supported:
    sage: SL(2, CC).gens()
    Traceback (most recent call last):
    ...
    NotImplementedError: Matrix group over Complex Field with 53 bits of precision not implemented.
    sage: G = SL(0, QQ)
    Traceback (most recent call last):
    ...
    ValueError: The degree must be at least 1