/usr/share/gap/pkg/Polycyclic/gap/pcpgrp/maxsub.gi is in gap-polycyclic 2.11-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #############################################################################
##
#W maxsub.gi Polycyc Bettina Eick
##
## Maximal subgroups of p-power index.
##
#############################################################################
##
#F MaximalSubgroupsByLayer := function( G, pcp, p )
##
## A/B is an efa layer of G. We compute the maximal subgroups of p-index
## of G which do not contain A/B.
##
MaximalSubgroupsByLayer := function( G, pcp, p )
local q, C, invs, max, inv, t, D, new;
# get characteristic
if Length( pcp ) = 0 then return []; fi;
q := RelativeOrdersOfPcp( pcp )[1];
if q <> 0 and q <> p then return []; fi;
if q = 0 then
new := List( pcp, x -> x ^ p );
new := AddIgsToIgs( new, DenominatorOfPcp( pcp ) );
new := SubgroupByIgs( G, new );
new := Pcp( GroupOfPcp( pcp ), new );
else
new := pcp;
fi;
# set up class record
C := rec( );
C.group := G;
C.super := [];
C.factor := Pcp( G, GroupOfPcp( pcp ) );
C.normal := new;
# add field
C.char := p;
C.field := GF(p);
C.dim := Length( pcp );
C.one := IdentityMat( C.dim, C.field );
# add extension info
AddRelatorsCR( C );
AddOperationCR( C );
# if it is a trivial factor
if Length( pcp ) = 1 then
AddInversesCR( C );
t := ComplementClassesCR( C );
fi;
# get maximal subgroups
invs := SMTX.BasesMaximalSubmodules(GModuleByMats(C.mats, C.dim, C.field));
# loop trough
max := [];
for inv in invs do
D := InduceToFactor( C, rec( repr := inv, stab := [] ) );
AddInversesCR( D );
t := ComplementClassesCR( D );
Append( max, t );
od;
return max;
end;
#############################################################################
##
#F MaximalSubgroupClassesByIndex( G, p )
##
## The conjugacy classes of maximal subgroups of p-power index in G.
##
InstallMethod( MaximalSubgroupClassesByIndexOp, "for pcp groups",
[IsPcpGroup, IsPosInt],
function( G, p )
local pcp, max, i, tmp;
# loop over series and determine subgroups
pcp := PcpsOfEfaSeries( G );
max := [];
for i in [1..Length(pcp)] do
Append( max, MaximalSubgroupsByLayer( G, pcp[i], p ) );
od;
# translate to classes and return
for i in [1..Length(max)] do
tmp := ConjugacyClassSubgroups( G, max[i].repr );
SetStabilizerOfExternalSet( tmp, max[i].norm );
max[i] := tmp;
od;
return max;
end );
|