This file is indexed.

/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 );