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

/magnus/back_end/SessionManager/include/GCM.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: GCM.h,v 1.7 1999/01/13 19:34:50 alex Exp $
00003  */
00004 
00005 // Copyright (C) 1995 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 //
00008 // Contents: Declaration of class GCM
00009 //
00010 // Principal Author: Roger Needham
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _GCM_H_
00019 #define _GCM_H_
00020 
00021 #include "FPGroup.h"
00022 #include "ComputationManager.h"
00023 #include "Supervisor.h"
00024 #include "GIC.h"
00025 
00026 // Computation Managers supervised by a GCM:
00027 
00028 #include "NormalClosure.h"
00029 #include "AbelianInvariants.h"
00030 #include "KBModule.h"
00031 #include "AGModule.h"
00032 #include "ToddCoxeter.h"
00033 #include "HToddCoxeter.h"
00034 #include "NilpotentQuotients.h"
00035 
00036 
00037 //---------------------------------------------------------------------------//
00038 //-------------------------------- GCM --------------------------------------//
00039 //---------------------------------------------------------------------------//
00040 
00041 
00042 class GCM : public Supervisor
00043 {
00044 public:
00045 
00046   /////////////////////////////////////////////////////////////////////////
00047   //                                                                     //
00048   // Constructors:                                                       //
00049   //                                                                     //
00050   /////////////////////////////////////////////////////////////////////////
00051 
00052   GCM( class SMFPGroup& G );
00053 
00054   /////////////////////////////////////////////////////////////////////////
00055   //                                                                     //
00056   // Accessors:                                                          //
00057   //                                                                     //
00058   /////////////////////////////////////////////////////////////////////////
00059 
00060   SMFPGroup& getSMFPGroup( ) const { return theSMFPGroup; }
00061 
00062   /////////////////////////////////////////////////////////////////////////
00063   //                                                                     //
00064   // Front End Interfacing:                                              //
00065   //                                                                     //
00066   /////////////////////////////////////////////////////////////////////////
00067 
00068   void viewStructure(ostream& ostr) const;
00069 
00070   /////////////////////////////////////////////////////////////////////////
00071   //                                                                     //
00072   // Subordinate Computation Managers:                                   //
00073   //                                                                     //
00074   /////////////////////////////////////////////////////////////////////////
00075 
00076   Subordinate<GCM,NormalClosure> normalClosure;
00077 
00078   Subordinate<GCM,AbelianInvariants> abelianInvariants;
00079 
00080   Subordinate<GCM,AbelianPrimes> abelianPrimes;
00081 
00082   Subordinate<GCM,AbelianRank> abelianRank;
00083 
00084   Subordinate<GCM,KBSupervisor> kbSupervisor;
00085 
00086   Subordinate<GCM,AGSupervisor> agSupervisor;
00087 
00088   Subordinate<GCM,NilpotentQuotients> nilpotentQuotients;
00089 
00090   Subordinate<GCM,NGcomputeBasis> computeBasis;
00091 
00092   Subordinate<GCM,ToddCoxeter> theToddCoxeter;
00093 
00094   Subordinate<GCM,HToddCoxeter> ghToddCoxeter;
00095 
00096   /////////////////////////////////////////////////////////////////////////
00097   //                                                                     //
00098   // Control:                                                            //
00099   //                                                                     //
00100   /////////////////////////////////////////////////////////////////////////
00101 
00102   void takeControl( );        // overrides ComputationManager
00103 
00104   /////////////////////////////////////////////////////////////////////////
00105   //                                                                     //
00106   // State Transitions:                                                  //
00107   //                                                                     //
00108   /////////////////////////////////////////////////////////////////////////
00109 
00110   void start( );              // overrides ComputationManager
00111 
00112   void terminate( );          // overrides ComputationManager
00113 
00114 
00115 private:
00116 
00117   /////////////////////////////////////////////////////////////////////////
00118   //                                                                     //
00119   // Data Members:                                                       //
00120   //                                                                     //
00121   /////////////////////////////////////////////////////////////////////////
00122 
00123   class SMFPGroup& theSMFPGroup;
00124 
00125   bool didFastChecks;
00126   // The takeControl method does some sneaky checks of obvious properties
00127   // (this should be formalized, since they are not always that fast).
00128   // This records the first call, so that they are not done over and over.
00129 
00130 };
00131 
00132 #endif

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