File: idgrp6.g

package info (click to toggle)
gap4-gdat 4.2-2
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 78,948 kB
  • ctags: 10,624
  • sloc: ansic: 25,214; fortran: 12,279; ada: 6,377; asm: 4,623; cpp: 2,332; lisp: 910; cs: 503; ruby: 466; yacc: 284; tcl: 167; makefile: 51
file content (62 lines) | stat: -rw-r--r-- 1,795 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
50
51
52
53
54
55
56
57
58
59
60
61
62
#############################################################################
##
#W  idgrp6.g                 GAP group library             Hans Ulrich Besche
##                                               Bettina Eick, Eamonn O'Brien
##
##  This file contains the identification routines for groups of order
##  1152 and 1920.
##
Revision.idgrp6_g :=
    "@(#)$ $";

#############################################################################
##
## tell GAP about the component
##
DeclareComponent("id6","1.0");

#############################################################################
##
#F ID_AVAILABLE_FUNCS[ 6 ]
##
ID_AVAILABLE_FUNCS[ 6 ] := function( size )

    if size in [ 1152, 1920 ] then
        return rec( func := 15, lib := 6 );
    fi;

    return fail;
end;

#############################################################################
##
#F ID_GROUP_FUNCS[ 15 ]( G, inforec )
##
## size 1152 or 1920
##
ID_GROUP_FUNCS[ 15 ] := function( G, inforec )
    local sid;

    if IsNilpotentGroup( G ) then
        sid := IdGroup( SylowSubgroup( G, 2 ) )[ 2 ];
        if Size( G ) = 1152 and
                            IsElementaryAbelian( SylowSubgroup( G, 3 ) ) then
            return sid + 2328;
        else
            return sid;
        fi;
    fi;

    if not IsBound( ID_GROUP_TREE.next[ Size( G ) ] ) then
        ID_GROUP_TREE.next[ Size(G) ] := rec( fp := [ 1, 2 ],
          next := [ rec( fp := [ 1 .. 500 ], next := [] ) ] );
    fi;

    if IsSolvable( G ) and IsNormal( G, HallSubgroup( G, [ 3, 5 ] ) ) then
        sid := IdGroup( SylowSubgroup( G, 2 ) )[ 2 ];
        return ID_GROUP_FUNCS[ 8 ]( G, inforec, [ Size( G ), 1, 
               ( sid - 1 ) mod 500 + 1, sid ] );
    fi;

    return ID_GROUP_FUNCS[ 8 ]( G, inforec, [ Size( G ), 2 ] );
end;