File: collect.gd

package info (click to toggle)
gap-polycyclic 2.17-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 2,796 kB
  • sloc: xml: 3,018; javascript: 155; makefile: 124
file content (130 lines) | stat: -rw-r--r-- 4,822 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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#############################################################################
##
#W  collect.gd                 Polycyclic                       Werner Nickel
##

#############################################################################
##
##  First we need a new representation for a power-conjugate collector, which
##  will  implement the  generic collector  for  groups given by a polycyclic
##  presentation.
##
#R  IsFromTheLeftCollectorRep( <obj> )
##
DeclareRepresentation( "IsFromTheLeftCollectorRep",
                        IsPowerConjugateCollector and IsPositionalObjectRep, [] );

BindGlobal( "FromTheLeftCollectorFamily",
    NewFamily( "FromTheLeftCollector", IsFromTheLeftCollectorRep ) );

#############################################################################
##
#P  The following property is set if a collector presents a nilpotent group
##  and has a weight array and a second commute array.  . . . . . . . . . . .
##
DeclareProperty( "IsWeightedCollector", IsPolycyclicCollector );

#############################################################################
##
#P  The following property is set if a collector presents a nilpotent group
##  and has Hall polynomials (computed by Deep Thought)
##
DeclareProperty( "IsPolynomialCollector", IsFromTheLeftCollectorRep );

#############################################################################
##
#P  The following property is used to dispatch between a GAP level collector
##  and the kernel collector.  By default the property is false.  Its main
##  use is for debugging purposes.
##
DeclareProperty( "UseLibraryCollector", IsFromTheLeftCollectorRep  );

#############################################################################
##
#V  The following variables are global flags mainly intended for debugging
##  purposes.
##
BindGlobal( "USE_LIBRARY_COLLECTOR", false );
BindGlobal( "DEBUG_COMBINATORIAL_COLLECTOR", false );
BindGlobal( "USE_COMBINATORIAL_COLLECTOR", false );

#############################################################################
##
##  Next the operation for creating a from-the-left collector is defined.
##
#O  FromTheLeftCollector. . . . . . . . . . . . . . . . . . . . . . . . . . .
##
DeclareOperation( "FromTheLeftCollector", [IsObject] );

#############################################################################
##
##  This is the inverse operation for ObjByExponents.
##
#O  ExponentsByObj
##
DeclareOperation( "ExponentsByObj", [IsPolycyclicCollector, IsObject] );

#############################################################################
##
##  These operations should be defined in the GAP library.
##
#O  GetPower
#O  GetConjugate
##
DeclareOperation( "GetPower", [IsPolycyclicCollector, IsObject] );
DeclareOperation( "GetConjugate",
        [IsPolycyclicCollector, IsObject, IsObject] );

#############################################################################
##
#I  InfoFromTheLeftCollector
#I  InfoCombinatorialFromTheLeftCollector
##
DeclareInfoClass( "InfoFromTheLeftCollector" );
DeclareInfoClass( "InfoCombinatorialFromTheLeftCollector" );

############################################################################
##
#F  NumberOfGenerators
#F  FromTheLeftCollector_SetCommute
#F  FromTheLeftCollector_CompletePowers
#F  FromTheLeftCollector_CompleteConjugate
##
DeclareGlobalFunction( "NumberOfGenerators" );
DeclareGlobalFunction( "FromTheLeftCollector_SetCommute" );
DeclareGlobalFunction( "FromTheLeftCollector_CompletePowers" );
DeclareGlobalFunction( "FromTheLeftCollector_CompleteConjugate" );

############################################################################
##
#F  IsPcpNormalFormObj( <ftl>, <w> )
##
DeclareGlobalFunction( "IsPcpNormalFormObj" );

############################################################################
##
#P  IsPolycyclicPresentation
##
## checks whether the input-presentation is a polycyclic presentation, i.e.
## whether the right-hand-sides of the relations are normal.
##
DeclareProperty( "IsPolycyclicPresentation", IsFromTheLeftCollectorRep );

#############################################################################
##
#H The following indices point into a from the left collector.  They are used
##  in addition to the ones  defined in the GAP source file src/objcftl.h/.c.
##  Eventually,  there  will be  one  place for  defining  the  indices of  a
##  from-the-left collector.
##
BindGlobal( "PC_PCP_ELEMENTS_FAMILY", 22 );
BindGlobal( "PC_PCP_ELEMENTS_TYPE",   23 );

BindGlobal( "PC_COMMUTATORS",               24 );
BindGlobal( "PC_INVERSECOMMUTATORS",        25 );
BindGlobal( "PC_COMMUTATORSINVERSE",        26 );
BindGlobal( "PC_INVERSECOMMUTATORSINVERSE", 27 );

BindGlobal( "PC_NILPOTENT_COMMUTE", 28 );
BindGlobal( "PC_WEIGHTS",           29 );
BindGlobal( "PC_ABELIAN_START",     30 );