Intersections of Classical Groups#

The main application of the \(*\)-algebra machinery is to the study of the group preserving each form in a system of forms; the so-called isometry group of the system. An essentially equivalent (but perhaps more familiar) problem is that of computing the intersection of a set of classical groups defined on a common vector space. The main functions are implementations of the algorithms presented in [Brooksbank and Wilson, 2012, Theorem 1.2] and [Brooksbank and Wilson, 2012, Theorem 1.1].

IsometryGroup(S : parameters): SeqEnum -> GrpMat#
Autos           : SeqEnum                    Default: [0,..,0]
DisplayStructure: BoolElt                    Default: false

Given a sequence \(S\) containing a system of reflexive forms, this function returns the group of isometries of the system. In addition to allowing the individual forms to be degenerate, the function handles degenerate systems.

The field automorphisms associated to the individual forms are specified using the parameter Autos; the default is that all forms in the system are bilinear over their common base ring. As well as finding generators for the isometry group, the procedure determines the structure of this group. The parameter DisplayStructure may be used to display this structure.

Example: Isometry Group (ex-575942)#

We compute the isometry group of the system of forms associated to a particular \(p\)-group.

> G := ClassicalSylow(Sp (4, 5^2), 5);
> S := PGroupToForms(G);
> Parent(S[1]);
Full Matrix Algebra of degree 6 over GF(5)
> I := IsometryGroup(S : DisplayStructure := true);
   G
   |   GL ( 1 , 5 ^ 1 )
   *
   |   5 ^ 4    (unipotent radical)
   1
> #I;
2500

Run in calculator

ClassicalIntersection(S): SeqEnum -> GrpMat#

Given a sequence \(S\) containing a number of classical groups, each one of which preserves (up to similarity) a unique nondegenerate reflexive form on a common finite vector space \(V\), this function returns the intersection of the groups. It is not required that a classical group \(G\) in \(S\) be the full group of isometries.

Example: Classical Intersection (ex-95a8b7)#

In our final example we intersect two quasisimple classical groups. First we construct a symplectic group \({\rm Sp}(F_1)\) for a particular skew-symmetric matrix \(F_1\).

> K := GF(3);
> M := UpperTriangularMatrix
>        (K,[0,2,1,0,1,2,1,1,1,2,0,0,1,2,1,0,1,0,1,2,2]);
> F1 := M - Transpose(M);
> G1 := IsometryGroup(F1);

Run in calculator

First check that G1 is a group of isometries.

> forall{ g : g in Generators(G1) | g*F1*Transpose(g) eq F1 };
true

Run in calculator

Next we construct a quasisimple orthogonal group \(\Omega^-(F_2)\) for a particular symmetric matrix \(F_2\).

> F2 := SymmetricMatrix
>         (K, [1,2,0,1,2,2,1,0,2,2,1,0,0,0,1,2,1,1,0,1,0]);
> C := TransformForm(F2, "orthogonalminus");
> G := OmegaMinus(6, 3);
> G2 := G^(C^-1);

Run in calculator

First check that G2 is a group of isometries.

> forall { g : g in Generators(G2) | g*F2*Transpose(g) eq F2 };
true

Run in calculator

Finally compute the intersection of \(G_1\) and \(G_2\) and ask for the order of this intersection group.

> I := ClassicalIntersection([G1, G2]);
> #I;
14

Run in calculator