# Symplectic Linear Groups#

EXAMPLES:

sage: G = Sp(4, GF(7));  G
Symplectic Group of degree 4 over Finite Field of size 7

sage: # needs sage.libs.gap
sage: g = prod(G.gens());  g
[3 0 3 0]
[1 0 0 0]
[0 1 0 1]
[0 2 0 0]
sage: m = g.matrix()
sage: m * G.invariant_form() * m.transpose() == G.invariant_form()
True
sage: G.order()
276595200
>>> from sage.all import *
>>> G = Sp(Integer(4), GF(Integer(7)));  G
Symplectic Group of degree 4 over Finite Field of size 7

>>> # needs sage.libs.gap
>>> g = prod(G.gens());  g
[3 0 3 0]
[1 0 0 0]
[0 1 0 1]
[0 2 0 0]
>>> m = g.matrix()
>>> m * G.invariant_form() * m.transpose() == G.invariant_form()
True
>>> G.order()
276595200

AUTHORS:

• David Joyner (2006-03): initial version, modified from special_linear (by W. Stein)

• Volker Braun (2013-1) port to new Parent, libGAP, extreme refactoring.

• Sebastian Oehms (2018-8) add option for user defined invariant bilinear form and bug-fix in invariant_form() (see Issue #26028)

sage.groups.matrix_gps.symplectic.Sp(n, R, var='a', invariant_form=None)[source]#

Return the symplectic group.

The special linear group $$GL( d, R )$$ consists of all $$d \times d$$ matrices that are invertible over the ring $$R$$ with determinant one.

Note

This group is also available via groups.matrix.Sp().

INPUT:

• n – a positive integer

• R – ring or an integer; if an integer is specified, the corresponding finite field is used

• var – (default: 'a') variable used to represent generator of the finite field, if needed

• invariant_form – (optional) instances being accepted by the matrix-constructor which define a $$n \times n$$ square matrix over R describing the alternating form to be kept invariant by the symplectic group

EXAMPLES:

sage: Sp(4, 5)
Symplectic Group of degree 4 over Finite Field of size 5

sage: Sp(4, IntegerModRing(15))
Symplectic Group of degree 4 over Ring of integers modulo 15

sage: Sp(3, GF(7))
Traceback (most recent call last):
...
ValueError: the degree must be even
>>> from sage.all import *
>>> Sp(Integer(4), Integer(5))
Symplectic Group of degree 4 over Finite Field of size 5

>>> Sp(Integer(4), IntegerModRing(Integer(15)))
Symplectic Group of degree 4 over Ring of integers modulo 15

>>> Sp(Integer(3), GF(Integer(7)))
Traceback (most recent call last):
...
ValueError: the degree must be even

Using the invariant_form option:

sage: m = matrix(QQ, 4,4, [[0, 0, 1, 0], [0, 0, 0, 2], [-1, 0, 0, 0], [0, -2, 0, 0]])
sage: Sp4m = Sp(4, QQ, invariant_form=m)
sage: Sp4 = Sp(4, QQ)
sage: Sp4 == Sp4m
False
sage: Sp4.invariant_form()
[ 0  0  0  1]
[ 0  0  1  0]
[ 0 -1  0  0]
[-1  0  0  0]
sage: Sp4m.invariant_form()
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]
sage: pm = Permutation([2,1,4,3]).to_matrix()
sage: g = Sp4(pm); g in Sp4; g
True
[0 1 0 0]
[1 0 0 0]
[0 0 0 1]
[0 0 1 0]
sage: Sp4m(pm)
Traceback (most recent call last):
...
TypeError: matrix must be symplectic with respect to the alternating form
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]

sage: Sp(4,3, invariant_form=[[0,0,0,1],[0,0,1,0],[0,2,0,0], [2,0,0,0]])
Traceback (most recent call last):
...
NotImplementedError: invariant_form for finite groups is fixed by GAP
>>> from sage.all import *
>>> m = matrix(QQ, Integer(4),Integer(4), [[Integer(0), Integer(0), Integer(1), Integer(0)], [Integer(0), Integer(0), Integer(0), Integer(2)], [-Integer(1), Integer(0), Integer(0), Integer(0)], [Integer(0), -Integer(2), Integer(0), Integer(0)]])
>>> Sp4m = Sp(Integer(4), QQ, invariant_form=m)
>>> Sp4 = Sp(Integer(4), QQ)
>>> Sp4 == Sp4m
False
>>> Sp4.invariant_form()
[ 0  0  0  1]
[ 0  0  1  0]
[ 0 -1  0  0]
[-1  0  0  0]
>>> Sp4m.invariant_form()
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]
>>> pm = Permutation([Integer(2),Integer(1),Integer(4),Integer(3)]).to_matrix()
>>> g = Sp4(pm); g in Sp4; g
True
[0 1 0 0]
[1 0 0 0]
[0 0 0 1]
[0 0 1 0]
>>> Sp4m(pm)
Traceback (most recent call last):
...
TypeError: matrix must be symplectic with respect to the alternating form
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]

>>> Sp(Integer(4),Integer(3), invariant_form=[[Integer(0),Integer(0),Integer(0),Integer(1)],[Integer(0),Integer(0),Integer(1),Integer(0)],[Integer(0),Integer(2),Integer(0),Integer(0)], [Integer(2),Integer(0),Integer(0),Integer(0)]])
Traceback (most recent call last):
...
NotImplementedError: invariant_form for finite groups is fixed by GAP
class sage.groups.matrix_gps.symplectic.SymplecticMatrixGroup_generic(degree, base_ring, special, sage_name, latex_string, category=None, invariant_form=None)[source]#

Bases: NamedMatrixGroup_generic

Symplectic Group over arbitrary rings.

EXAMPLES:

sage: Sp43 = Sp(4,3); Sp43
Symplectic Group of degree 4 over Finite Field of size 3
sage: latex(Sp43)
\text{Sp}_{4}(\Bold{F}_{3})

sage: Sp4m = Sp(4, QQ, invariant_form=(0, 0, 1, 0,  0, 0, 0, 2,
....:                                  -1, 0, 0, 0, 0, -2, 0, 0)); Sp4m
Symplectic Group of degree 4 over Rational Field
with respect to alternating bilinear form
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]
sage: latex(Sp4m)
\text{Sp}_{4}(\Bold{Q})\text{ with respect to alternating bilinear form}\left(\begin{array}{rrrr}
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 2 \\
-1 & 0 & 0 & 0 \\
0 & -2 & 0 & 0
\end{array}\right)
>>> from sage.all import *
>>> Sp43 = Sp(Integer(4),Integer(3)); Sp43
Symplectic Group of degree 4 over Finite Field of size 3
>>> latex(Sp43)
\text{Sp}_{4}(\Bold{F}_{3})

>>> Sp4m = Sp(Integer(4), QQ, invariant_form=(Integer(0), Integer(0), Integer(1), Integer(0),  Integer(0), Integer(0), Integer(0), Integer(2),
...                                  -Integer(1), Integer(0), Integer(0), Integer(0), Integer(0), -Integer(2), Integer(0), Integer(0))); Sp4m
Symplectic Group of degree 4 over Rational Field
with respect to alternating bilinear form
[ 0  0  1  0]
[ 0  0  0  2]
[-1  0  0  0]
[ 0 -2  0  0]
>>> latex(Sp4m)
\text{Sp}_{4}(\Bold{Q})\text{ with respect to alternating bilinear form}\left(\begin{array}{rrrr}
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 2 \\
-1 & 0 & 0 & 0 \\
0 & -2 & 0 & 0
\end{array}\right)
invariant_form()[source]#

Return the quadratic form preserved by the symplectic group.

OUTPUT: a matrix

EXAMPLES:

sage: Sp(4, QQ).invariant_form()
[ 0  0  0  1]
[ 0  0  1  0]
[ 0 -1  0  0]
[-1  0  0  0]
>>> from sage.all import *
>>> Sp(Integer(4), QQ).invariant_form()
[ 0  0  0  1]
[ 0  0  1  0]
[ 0 -1  0  0]
[-1  0  0  0]