Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

/magnus/back_end/NilpotentGroup/include/LCSQuotients.h

Go to the documentation of this file.
00001 // Copyright (C) 1994 The New York Group Theory Cooperative
00002 // See magnus/doc/COPYRIGHT for the full notice.
00003 //
00004 // Contents: Definition of classes LCSQuotient, LCSQuotientSeries
00005 //
00006 // Principal Author: Eugene Paderin
00007 //
00008 // Status: Draft
00009 //
00010 // Description:
00011 //
00012 // The LCSQuotient of weight k is an abelian factor G_k / G_{k+1},
00013 // where G_i is an i-th term of the lover central series (LCS).
00014 //
00015 // Special Notes:
00016 //
00017 //
00018 // Revision History:
00019 //
00020 
00021 #ifndef _LCS_QUOTIENTS_H_
00022 #define _LCS_QUOTIENTS_H_
00023 
00024 #include "PolyWord.h"
00025 #include "AbelianGroup.h"
00026 #include "MalcevSet.h"
00027 //#include <iostream.h>
00028 
00029 
00030 //========================================================================
00031 //====================== BasisWord =======================================
00032 //========================================================================
00033 
00034 //@ep maybe it will be a real class some day. Now it is designed for 
00035 //    internal use only.
00036 
00037 
00038 struct BasisWord {
00039 
00040   //-------- Fictive operators for VectorOf templates ----------------
00041 
00042   friend bool operator == (const BasisWord& w1, const BasisWord& w2);
00043   friend ostream& operator << (ostream& s, const BasisWord& w);
00044 
00045 
00046   //-------- IPC tools -----------------------------------------------
00047 
00048   friend ostream& operator < ( ostream& s, const BasisWord& w );
00049   // IPC output
00050 
00051   friend istream& operator > ( istream& s, BasisWord& w );
00052   // IPC input
00053 
00054   //-------- Data ----------------------------------------------------
00055 
00056   PolyWord theWord;
00057   //the word in terms of basic commutators
00058 
00059   int theWeight;
00060   //its weight in the group
00061 
00062   int theOrder;
00063   //its order (0 means infinite)
00064 
00065   int theLocalNumber;
00066   // its ordinal number in the LCS quotient, 1-based
00067   // (basic words of finite and infinite orders are numerated separately) 
00068 
00069   int theGlobalNumber;
00070   // its ordinal number in the group basis, 1-based
00071 
00072   Chars theName;
00073   // the name of the word
00074 
00075 };
00076 
00077 
00078 //========================================================================
00079 //==================== LCSQuotient =======================================
00080 //========================================================================
00081 
00082 
00083 class LCSQuotient {
00084 
00085 public:
00086 
00087   //----------------------------------------------------------------------
00088   //  Constructors / initializers
00089   //----------------------------------------------------------------------
00090   
00091   LCSQuotient() : abelianization( FPGroup() ) { }
00092   //default constructor 
00093 
00094 
00095   friend bool operator == (const LCSQuotient& q1, const LCSQuotient& q2);
00096   // comparison operator (fictive to fool the VectorOf templates
00097 
00098   friend ostream& operator << (ostream& s, const LCSQuotient& q);
00099   // to fool the VectorOf templates
00100 
00101   friend ostream& operator < ( ostream& s, const LCSQuotient& q );
00102   // IPC output
00103 
00104   friend istream& operator > ( istream& s, LCSQuotient& q );
00105   // IPC input
00106 
00107   //--------------------------------------------------------------------
00108   //   Data
00109   //--------------------------------------------------------------------
00110 
00111   AbelianGroup abelianization;
00112   VectorOf<BasisWord> generators;
00113   int infNumber;
00114   int numerationShift;
00115   MalcevSet basis;
00116 };
00117 
00118 
00119 #endif
00120 
00121 

Generated at Tue Jun 19 09:49:37 2001 for Magnus Classes by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001