This file is indexed.

/usr/share/gap/pkg/AutPGrp/gap/orbstab.gi is in gap-autpgrp 1.5-2.

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  orbstab.gi              AutPGrp package                      Bettina Eick
##
#H  @(#)$Id: orbstab.gi,v 1.4 2003/08/18 12:10:28 gap Exp $
##
Revision.("autpgrp/gap/orbstab_gi") :=
    "@(#)$Id: orbstab.gi,v 1.4 2003/08/18 12:10:28 gap Exp $";

#############################################################################
##
#F BasesCompositionSeriesThrough( M, base )
##
BasesCompositionSeriesThrough := function( M, base )
    local full, chop, indu, smll, i, facb;

    full := IdentityMat( M.dimension, M.field );
    chop := [[]];

    # chop N
    if Length( base ) > 0 then
        indu := MTX.InducedActionSubmoduleNB( M, base );
        smll := MTX.BasesCompositionSeries( indu );
        for i in [2..Length( smll )] do
            smll[i] := smll[i] * base;
            Add( chop, EcheloniseMat( smll[i] ) );
        od;
    fi;

    # chop M/N
    if Length( base ) < Length( full ) then
        indu := MTX.InducedActionFactorModuleWithBasis( M, base );
        facb := indu[2];
        indu := indu[1];
        smll := MTX.BasesCompositionSeries( indu );
        for i in [2..Length( smll )] do
            smll[i] := smll[i] * facb;
            Append( smll[i], base );
            Add( chop, EcheloniseMat( smll[i] ) );
        od;
    fi;

    return chop;
end;

#############################################################################
##
#F PGOrbitStabilizer( <A>, <baseU>, <baseN>, <interrupt> )
##
InstallGlobalFunction( PGOrbitStabilizer, 
    function( A, baseU, baseN, interrupt )
    local u, n, l, baseM, str, glMats, agMats, mats, modu, chop;

    # set up and catch some trivial cases 
    u := Length( baseU );
    n := Length( baseN );
    if u = 0 or ( A.glOrder = 1 and Length( A.agOrder ) = 0 ) then
        return; 
    fi;

    l := Length( baseU[1] );
    baseM := IdentityMat( l, A.field );
    if l = u then return; fi;

    # print some info
    Info( InfoAutGrp, 3, "  dim U = ",u, "  dim N = ",n, "  dim M = ",l );

    # check interrupt
    if interrupt then
        str := Interrupt("chop M/N and N: (y/n)");
        if str = "y" then
            CHOP_MULT := true;
        elif str = "n" then
            CHOP_MULT := false;
        else
            Print("not a valid argument");
            return;
        fi;
    fi;

    # compute series
    glMats := List( A.glAutos, x -> x!.mat );
    agMats := List( A.agAutos, x -> x!.mat );
    mats   := Filtered( Concatenation( glMats, agMats ), x -> x<>1 );
    modu := GModuleByMats( mats, l, A.field );
    chop := [[], baseN, baseM];

    if CHOP_MULT then
        chop := BasesCompositionSeriesThrough( modu, chop[2] );
    fi;

    PGOrbitStabilizerBySeries( A, baseU, chop );
end );