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