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

/magnus/back_end/SMApps/include/NormalClosure.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: NormalClosure.h,v 1.3 1998/08/03 20:24:16 bormotov Exp $
00003  */
00004 
00005 // Copyright (C) 1997 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 
00008 // Contents: Declaration of classes NormalClosureARCer, NormalClosure
00009 //
00010 // Principal Author: Dmitry Bormotov, Dmitry Pechkin
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 //
00017 
00018 #ifndef _NORMALCLOSURE_H_
00019 #define _NORMALCLOSURE_H_
00020 
00021 #include "ComputationManager.h"
00022 #include "SubgroupGraph.h"
00023 #include "FPGroup.h"
00024 
00025 
00026 // ------------------------ NormalClosureARCer ----------------------------- //
00027 
00028 
00029 class NormalClosureARCer : public ARCer2
00030 {
00031 public:
00032 
00033   /////////////////////////////////////////////////////////////////////////
00034   //                                                                     //
00035   // Constructors:                                                       //
00036   //                                                                     //
00037   /////////////////////////////////////////////////////////////////////////
00038 
00039   NormalClosureARCer( ComputationManager& boss );
00040 
00041   ~NormalClosureARCer( );
00042 
00043     
00044   /////////////////////////////////////////////////////////////////////////
00045   //                                                                     //
00046   // Accessors:                                                          //
00047   //                                                                     //
00048   /////////////////////////////////////////////////////////////////////////
00049 
00050   void setArguments( const FPGroup&, const VectorOf<Word>& sgens );
00051 
00052   // Inherited from ARCer:
00053   // bool takeControl( );
00054 
00055   class DecomposeInSubgroupOfFPGroup& getDecomposer() const { 
00056     return *theDecomposer; 
00057   }
00058 
00059   
00060   /////////////////////////////////////////////////////////////////////////
00061   //                                                                     //
00062   // IPC interaction members:                                            //
00063   //                                                                     //
00064   /////////////////////////////////////////////////////////////////////////
00065 
00066   void runComputation( );
00067  
00068   void writeResults( ostream& );
00069 
00070   void readResults( istream& ) { }
00071 
00072   bool readResults2( istream& );
00073 
00074 
00075 private:
00076 
00077   /////////////////////////////////////////////////////////////////////////
00078   //                                                                     //
00079   // Data Members:                                                       //
00080   //                                                                     //
00081   /////////////////////////////////////////////////////////////////////////
00082 
00083   class DecomposeInSubgroupOfFPGroup* theDecomposer;
00084   class DecomposeInSubgroupOfFPGroup* tempDecomposer;
00085 };
00086 
00087 
00088 // ---------------------------- NormalClosure ------------------------------ //
00089 
00090 
00091 class NormalClosure : public ComputationManager
00092 {
00093 public:
00094 
00095   /////////////////////////////////////////////////////////////////////////
00096   //                                                                     //
00097   // Constructors:                                                       //
00098   //                                                                     //
00099   /////////////////////////////////////////////////////////////////////////
00100 
00101   NormalClosure(class GCM& gcm);
00102 
00103   NormalClosure(class SCM& scm);
00104 
00105   /////////////////////////////////////////////////////////////////////////
00106   //                                                                     //
00107   // Accessors:                                                          //
00108   //                                                                     //
00109   /////////////////////////////////////////////////////////////////////////
00110 
00111   Trichotomy isTrivial(const Word& w) const;
00112 
00113   DecomposeInSubgroupOfFPGroup& getDecomposer( );
00114 
00115   SubgroupGraph getSubgroupGraph( ) const;
00116 
00117 
00118   /////////////////////////////////////////////////////////////////////////
00119   //                                                                     //
00120   // Control:                                                            //
00121   //                                                                     //
00122   /////////////////////////////////////////////////////////////////////////
00123 
00124   void takeControl( );         // overrides ComputationManager
00125 
00126   /////////////////////////////////////////////////////////////////////////
00127   //                                                                     //
00128   // State Transitions:                                                  //
00129   //                                                                     //
00130   /////////////////////////////////////////////////////////////////////////
00131 
00132   void start( ) { };          // overrides ComputationManager
00133 
00134   void terminate( ) { };      // overrides ComputationManager
00135 
00136 
00137 private:
00138 
00139   void putHaveWordDecomposer( const DecomposeInSubgroupOfFPGroup& D );
00140   void putHaveCompleteCayleyGraph( const SubgroupGraph& S );
00141 
00142 
00143   /////////////////////////////////////////////////////////////////////////
00144   //                                                                     //
00145   // Data Members:                                                       //
00146   //                                                                     //
00147   /////////////////////////////////////////////////////////////////////////
00148 
00149   NormalClosureARCer arcer;
00150 
00151   class ComputationManager& theCM;
00152   class SMFPGroup& theGroup;
00153   class SMObject& theObject;
00154   //  class GCM& theGCM;
00155 
00156 };
00157 
00158 #endif

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