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
|
// Copyright (C) 1996 The New York Group Theory Cooperative
// See magnus/doc/COPYRIGHT for the full notice.
// Contents: Definition of class GroupFastChecks
//
// Principal Author: Dmitry Bormotov
//
// Status: Usable
//
// Usage: Should contain various fast checks applicable in BE & SM.
//
// Special Notes:
//
// Revision History:
//
#ifndef _GroupFastChecks_h_
#define _GroupFastChecks_h_
#include "FPGroup.h"
// --------------------------- GroupFastChecks ------------------------------ //
class GroupFastChecks {
public:
/////////////////////////////////////////////////////////////////////////
// //
// Constructors: //
// //
/////////////////////////////////////////////////////////////////////////
GroupFastChecks( const FPGroup& G ) :
theGroup( G ),
numOfGens( G.numberOfGenerators() ),
relators( G.getRelators() )
{ }
// Default & copy contructors, operator = provided by compiler.
/////////////////////////////////////////////////////////////////////////
// //
// Accessors: //
// //
/////////////////////////////////////////////////////////////////////////
bool hasTrivialPresentation( ) {
return ( numOfGens == 0 && relators.cardinality() == 0 );
}
// True if the entered presentation has form < ; >.
bool numOfRelsLessNumOfGens( ) {
return ( relators.cardinality() < numOfGens );
}
// True if the number of relators is less than the number of generators.
bool existsGenWithExpSumZeroInEveryRelator( Generator& );
// True if there's such generator exponent sum of which is equal to
// zero in every relator. The generator'll be return as well.
VectorOf<int> getExpSumOfGen( const Generator& g);
// Return exponent sums of g in the group relators.
int GCDOfExpSumOfGen( const Generator& g );
// Return the GCD of exponent sums of g in the group relators.
private:
/////////////////////////////////////////////////////////////////////////
// //
// Data Members: //
// //
/////////////////////////////////////////////////////////////////////////
FPGroup theGroup; // the group to work with
int numOfGens; // number of generators of the group
SetOf<Word> relators; // group relators
};
#endif
|