# 21.17 Orthogonal Linear Groups

Module: sage.groups.matrix_gps.orthogonal

Orthogonal Linear Groups

Paraphrased from the GAP manual: The general orthogonal group consists of those matrices over the field that respect a non-singular quadratic form specified by . (Use the GAP command InvariantQuadraticForm to determine this form explicitly.) The value of must be 0 for odd (and can optionally be omitted in this case), respectively one of or for even .

SpecialOrthogonalGroup returns a group isomorphic to the special orthogonal group , which is the subgroup of all those matrices in the general orthogonal group that have determinant one. (The index of in is if is odd, but if is even.)

WARNING: GAP notation: GO([e,] d, q), SO([e,] d, q) ([...] denotes and optional value)

SAGE notation: GO(d, GF(q), e=0), SO( d, GF(q), e=0)

There is no Python trick I know of to allow the first argument to have the default value e=0 and leave the other two arguments as non-default. This forces us into non-standard notation.

Author Log:

• David Joyner: initial version (2006-3)
• David Joyner (2006-05): added examples, _latex_, __str__, gens, as_matrix_group
• William Stein (2006-12-09): rewrite

Module-level Functions

 GO( n, R, [e=0])
Return the general orthogonal group.

 SO( n, R, [e=0], [var=a])
Return the special orthogonal group of degree over the ring .

INPUT:
n -- the degree
R -- ring
e -- a parameter for orthogonal groups only depending
on the invariant form


sage: G = SO(3,GF(5))
sage: G.gens()
[
[2 0 0]
[0 3 0]
[0 0 1],
[3 2 3]
[0 2 0]
[0 3 1],
[1 4 4]
[4 0 0]
[2 0 4]
]
sage: G = SO(3,GF(5))
sage: G.as_matrix_group()
Matrix group over Finite Field of size 5 with 3 generators:
[[[2, 0, 0], [0, 3, 0], [0, 0, 1]], [[3, 2, 3], [0, 2, 0], [0, 3, 1]], [[1,
4, 4], [4, 0, 0], [2, 0, 4]]]


Class: GeneralOrthogonalGroup_finite_field

class GeneralOrthogonalGroup_finite_field

Class: GeneralOrthogonalGroup_generic

class GeneralOrthogonalGroup_generic

sage: GO( 3, GF(7), 0)
General Orthogonal Group of degree 3, form parameter 0, over the Finite
Field of size 7
sage: GO( 3, GF(7), 0).order()
672
sage: GO( 3, GF(7), 0).random()  ## random output
[1 6 6]
[3 2 6]
[3 6 5]


This wraps GAP's command "InvariantQuadraticForm". From the GAP documentation:

INPUT:
self -- a matrix group G

OUTPUT:
Q -- the matrix satisfying the property: The quadratic
form q on the natural vector space V on which G acts
is given by $q(v) = v Q v^t$, and the invariance
under G is given by the equation $q(v) = q(v M)$ for
all $v \in V$ and $M \in G$.


sage: G = GO( 4, GF(7), 1)
[0 1 0 0]
[0 0 0 0]
[0 0 3 0]
[0 0 0 1]


Special Functions: _gap_init_, _latex_, _repr_

 _gap_init_( self)

sage: GO( 3, GF(7), 0)._gap_init_()
'GO(0, 3, 7)'


 _latex_( self)

sage: G = GO(3,GF(5))
sage: latex(G)
ext{GO}_{3}(5, 0)


 _repr_( self)
String representation of self.

sage: GO(3,7)
General Orthogonal Group of degree 3, form parameter 0, over the Finite
Field of size 7


Class: OrthogonalGroup

class OrthogonalGroup
 OrthogonalGroup( self, n, R, [e=0], [var=a])
INPUT:
n -- the degree
R -- the base ring
e -- a parameter for orthogonal groups only depending
on the invariant form
var -- variable used to define field of definition of
actual matrices in this group.


Functions: invariant_form

 invariant_form( self)
Return the invariant form of this orthogonal group.

TODO: What is the point of this? What does it do? How does it work?

sage: G = SO( 4, GF(7), 1)
sage: G.invariant_form()
1


Class: SpecialOrthogonalGroup_finite_field

class SpecialOrthogonalGroup_finite_field

Class: SpecialOrthogonalGroup_generic

class SpecialOrthogonalGroup_generic

       sage: G = SO( 4, GF(7), 1); G
Special Orthogonal Group of degree 4, form parameter 1, over the
Finite Field of size 7
sage: G._gap_init_()
'SO(1, 4, 7)'
sage: G.random()
[4 2 5 6]
[0 3 2 4]
[5 3 5 2]
[1 1 6 2]


Return the quadratic form on the space on which this group that satisfies the equation for all and .

OUTPUT: Q - matrix that defines the invariant quadratic form.

sage: G = SO( 4, GF(7), 1)
[0 1 0 0]
[0 0 0 0]
[0 0 3 0]
[0 0 0 1]


Special Functions: _gap_init_, _latex_, _repr_

 _gap_init_( self)

sage: G = SO(3,GF(5))
sage: G._gap_init_()
'SO(0, 3, 5)'


 _latex_( self)

sage: G = SO(3,GF(5))
sage: latex(G)
ext{SO}_{3}(\mathbf{F}_{5}, 0)


 _repr_( self)

sage: G = SO(3,GF(5))
sage: G
Special Orthogonal Group of degree 3, form parameter 0, over the Finite
Field of size 5