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 [BW12a, Theorem 1.2] and [BW12b, 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 AlgInv_IsometryGroup (H94E10)

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
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 AlgInv_ClassicalIntersection (H94E11)

In our final example we intersect two quasisimple classical groups. First we construct a symplectic group (Sp)(F1) for a particular skew-symmetric matrix F1.
> 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);
First check that G1 is a group of isometries.
> forall{ g : g in Generators(G1) | g*F1*Transpose(g) eq F1 };
true
Next we construct a quasisimple orthogonal group Ω^ - (F2) for a particular symmetric matrix F2.
> 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);
First check that G2 is a group of isometries.
> forall { g : g in Generators(G2) | g*F2*Transpose(g) eq F2 };
true
Finally compute the intersection of G1 and G2 and ask for the order of this intersection group.
> I := ClassicalIntersection([G1, G2]);
> #I;
14
V2.28, 13 July 2023