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– 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- Rdescribing 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_formoption:- 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]