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
|
// Copyright (C) 2000 The New York Group Theory Cooperative
// See magnus/doc/COPYRIGHT for the full notice.
// Contents: Declaration of KernelOfHom, ImageOfHom, NewPresentation
// classes.
//
// Principal Authors: Denis Serbin
//
// Status: Useable
//
// Revision History:
//
// Special Notes:
//
//
#ifndef _PRESENTATION_PROBLEMS_H_
#define _PRESENTATION_PROBLEMS_H_
#include "FPGroup.h"
#include "FPGroupRep.h"
#include "KBMachine.h"
#include "RKBPackage.h"
#include "File.h"
#include "Subgroup.h"
class KernelOfHom
{
public:
KernelOfHom( const FPGroup& d, const FPGroup& r, const KBMachine& k, const VectorOf<Word> v ) :
domain( d ),
range( r ),
kb( k ),
images( v )
{ }
KernelOfHom( ) :
domain(),
range(),
kb(),
images()
{ }
FPGroup getKernelPresentation( );
// computes a presentation for the kernel of homomorphism
private:
FPGroup domain;
FPGroup range;
KBMachine kb;
VectorOf<Word> images;
};
class ImageOfHom
{
public:
ImageOfHom( const FPGroup& d, const FPGroup& r, const VectorOf<Word> v ) :
domain( d ),
range( r ),
images( v )
{ }
ImageOfHom() :
domain(),
range(),
images()
{ }
FPGroup getImageOfHomo( VectorOf<Word>& v );
// compute the image of homomorphism and returns new generators in v
private:
FPGroup domain;
FPGroup range;
VectorOf<Word> images;
};
class NewPresentation
{
public:
NewPresentation( const FPGroup& g, const KBMachine& k, const VectorOf<Word> v ) :
G( g ),
kb( k ),
newBasis( v )
{ }
NewPresentation( ) :
G( ),
kb( ),
newBasis( )
{ }
FPGroup getNewPresentation( );
// returns a presentation for the group on given generators
private:
FPGroup G;
KBMachine kb;
VectorOf<Word> newBasis;
};
#endif
|