# Base for Classical Matrix Groups¶

This module implements the base class for matrix groups that have various famous names, like the general linear group.

EXAMPLES:

sage: SL(2, ZZ)
Special Linear Group of degree 2 over Integer Ring
sage: G = SL(2,GF(3)); G
Special Linear Group of degree 2 over Finite Field of size 3
sage: G.is_finite()
True
sage: G.conjugacy_classes_representatives()
(
[1 0]  [0 2]  [0 1]  [2 0]  [0 2]  [0 1]  [0 2]
[0 1], [1 1], [2 1], [0 2], [1 2], [2 2], [1 0]
)
sage: G = SL(6,GF(5))
sage: G.gens()
(
[2 0 0 0 0 0]  [4 0 0 0 0 1]
[0 3 0 0 0 0]  [4 0 0 0 0 0]
[0 0 1 0 0 0]  [0 4 0 0 0 0]
[0 0 0 1 0 0]  [0 0 4 0 0 0]
[0 0 0 0 1 0]  [0 0 0 4 0 0]
[0 0 0 0 0 1], [0 0 0 0 4 0]
)

class sage.groups.matrix_gps.named_group.NamedMatrixGroup_gap(degree, base_ring, special, sage_name, latex_string, gap_command_string, category=None)

Base class for “named” matrix groups using LibGAP

INPUT:

• degree – integer. The degree (number of rows/columns of matrices).

• base_ring – ring. The base ring of the matrices.

• special – boolean. Whether the matrix group is special, that is, elements have determinant one.

• latex_string – string. The latex representation.

• gap_command_string – string. The GAP command to construct the matrix group.

EXAMPLES:

sage: G = GL(2, GF(3))
sage: from sage.groups.matrix_gps.named_group import NamedMatrixGroup_gap
sage: isinstance(G, NamedMatrixGroup_gap)
True

class sage.groups.matrix_gps.named_group.NamedMatrixGroup_generic(degree, base_ring, special, sage_name, latex_string, category=None, invariant_form=None)

Base class for “named” matrix groups

INPUT:

• degree – integer; the degree (number of rows/columns of matrices)

• base_ring – ring; the base ring of the matrices

• special – boolean; whether the matrix group is special, that is, elements have determinant one

• sage_name – string; the name of the group

• latex_string – string; the latex representation

• category – (optional) a subcategory of sage.categories.groups.Groups passed to the constructor of sage.groups.matrix_gps.matrix_group.MatrixGroup_generic

• invariant_form – (optional) square-matrix of the given degree over the given base_ring describing a bilinear form to be kept invariant by the group

EXAMPLES:

sage: G = GL(2, QQ)
sage: from sage.groups.matrix_gps.named_group import NamedMatrixGroup_generic
sage: isinstance(G, NamedMatrixGroup_generic)
True


See the examples for GU(), SU(), Sp(), etc. as well.

sage.groups.matrix_gps.named_group.normalize_args_invariant_form(R, d, invariant_form)

Normalize the input of a user defined invariant bilinear form for orthogonal, unitary and symplectic groups.

Further informations and examples can be found in the defining functions (GU(), SU(), Sp(), etc.) for unitary, symplectic groups, etc.

INPUT:

• R – instance of the integral domain which should become the base_ring of the classical group

• d – integer giving the dimension of the module the classical group is operating on

• invariant_form – (optional) instances being accepted by the matrix-constructor that define a $$d \times d$$ square matrix over R describing the bilinear form to be kept invariant by the classical group

OUTPUT:

None if invariant_form was not specified (or None). A matrix if the normalization was possible; otherwise an error is raised.

AUTHORS:

sage.groups.matrix_gps.named_group.normalize_args_vectorspace(*args, **kwds)

Normalize the arguments that relate to a vector space.

INPUT:

Something that defines an affine space. For example

• An affine space itself:

• A – affine space

• A vector space:

• V – a vector space

• Degree and base ring:

• degree – integer. The degree of the affine group, that is, the dimension of the affine space the group is acting on.

• ring – a ring or an integer. The base ring of the affine space. If an integer is given, it must be a prime power and the corresponding finite field is constructed.

• var='a' – optional keyword argument to specify the finite field generator name in the case where ring is a prime power.

OUTPUT:

A pair (degree, ring).