File: grppcprp.gi

package info (click to toggle)
gap 4.15.1-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 110,212 kB
  • sloc: ansic: 97,261; xml: 48,343; cpp: 13,946; sh: 4,900; perl: 1,650; javascript: 255; makefile: 252; ruby: 9
file content (49 lines) | stat: -rw-r--r-- 1,621 bytes parent folder | download
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
#############################################################################
##
##  This file is part of GAP, a system for computational discrete algebra.
##  This file's authors include Frank Celler, Bettina Eick.
##
##  Copyright of GAP belongs to its developers, whose names are too numerous
##  to list here. Please refer to the COPYRIGHT file for details.
##
##  SPDX-License-Identifier: GPL-2.0-or-later
##
##  This file contains the methods for properties of polycyclic groups.
##

InstallMethod( IsNilpotentGroup,
               "method for pc groups",
               true,
               [IsGroup and CanEasilyComputePcgs],
               0,
function( G )
    local w;
    w := LGWeights( SpecialPcgs(G) );
    return Last(w)[1] = 1;
end);

InstallMethod( IsSupersolvableGroup,
               "method for pc groups",
               true,
               [IsGroup and CanEasilyComputePcgs],
               0,
function( G )
    local pr, spec, pcgs, p, sub, fac, mats, modu, facs;
    pr := PrimeDivisors(Size(G));
    spec := SpecialPcgs(G);
    pcgs := InducedPcgs( spec, FrattiniSubgroup( G ) );
    for p in pr do
        sub := InducedPcgsByPcSequenceAndGenerators( spec, pcgs,
               GeneratorsOfGroup( PCore(G, p) ) );
        if Length(sub) > Length(pcgs) then
            fac := sub mod pcgs;
            mats := LinearOperationLayer( G, fac );
            modu := GModuleByMats( mats, GF(p) );
            facs := MTX.CompositionFactors( modu );
            if not ForAll( facs, x -> x.dimension = 1 ) then
                return false;
            fi;
        fi;
    od;
    return true;
end);