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

/magnus/back_end/SMApps/include/ExtendToHomProblem.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: ExtendToHomProblem.h,v 1.7 1998/04/19 00:24:26 bormotov 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 classes ExtendToHomChecker, ExtendToHomProblem
00009 //
00010 // Principal Author: Dmitry Bormotov
00011 //
00012 // Status: in progress
00013 //
00014 // Revision History:
00015 //
00016 
00017 
00018 #ifndef _EXTEND_TO_HOM_PROBLEM_H_
00019 #define _EXTEND_TO_HOM_PROBLEM_H_
00020 
00021 
00022 #include "Supervisor.h"
00023 #include "FPGroup.h"
00024 #include "SMMap.h"
00025 #include "CommutatorIterator.h"
00026 #include "NilpotentProblems.h"
00027 #include "GeneticProblems.h"
00028 
00029 class ExtendToHomChecker;
00030 
00031 /*
00032 // ------------------ CheckRelatorsInNilpotentARCer ------------------------ //
00033 
00034 
00035 class CheckRelatorsInNilpotentARCer : public ARCer
00036 {
00037 public:
00038 
00039   /////////////////////////////////////////////////////////////////////////
00040   //                                                                     //
00041   // Constructors:                                                       //
00042   //                                                                     //
00043   /////////////////////////////////////////////////////////////////////////
00044 
00045   CheckRelatorsInNilpotentARCer( ComputationManager& boss ) 
00046     : ARCer( boss ) { } 
00047 
00048 
00049   /////////////////////////////////////////////////////////////////////////
00050   //                                                                     //
00051   // Accessors:                                                          //
00052   //                                                                     //
00053   /////////////////////////////////////////////////////////////////////////
00054 
00055   void setArguments( ExtendToHomChecker* );
00056 
00057   bool getRetValue() { return retValue; }
00058 
00059   // Inherited from ARCer:
00060   // bool takeControl( );
00061 
00062 
00063   /////////////////////////////////////////////////////////////////////////
00064   //                                                                     //
00065   // IPC interaction members:                                            //
00066   //                                                                     //
00067   /////////////////////////////////////////////////////////////////////////
00068 
00069   void runComputation( );
00070  
00071   void writeResults( ostream& );
00072 
00073   void readResults( istream& );
00074 
00075   
00076 private:
00077 
00078   /////////////////////////////////////////////////////////////////////////
00079   //                                                                     //
00080   // Data Members:                                                       //
00081   //                                                                     //
00082   /////////////////////////////////////////////////////////////////////////
00083 
00084   ExtendToHomChecker* theExtendToHomChecker;
00085   
00086   bool retValue;
00087 };
00088 */
00089 
00090 // ------------------------ ExtendToHomChecker ----------------------------- //
00091 
00092 
00093 class ExtendToHomChecker
00094 {
00095 public:
00096 
00097   ExtendToHomChecker(class ExtendToHomProblem& boss, class SMMap& );
00098 
00099   Trichotomy doesExtendToHom( );
00100 
00101   Chars getExplanation( ) const { return explanation; } 
00102 
00103   Trichotomy preliminaryCheckings();
00104 
00105   bool checkRelatorsInNilpotent() const;
00106 
00107 private:
00108   class ExtendToHomProblem& theBoss;
00109   class SMMap& theMap;
00110   const Map M;
00111   
00112   class SMFPGroup& theDomain;
00113   class SMFPGroup& theRange;
00114 
00115   FPGroup G1;
00116   FPGroup G2;
00117   SetOf<Word> relators;
00118   
00119   class GIC& gic1;
00120   class GIC& gic2;
00121   class GCM& gcm1;
00122   class GCM& gcm2;
00123 
00124   int theClass;
00125   bool triedAbelianization;
00126 //  bool triedPreliminaryCheckings;
00127 
00128   Chars explanation;
00129 
00130   // Private functions:
00131 
00132   SetOf<Word> getAllRelators( class SMFPGroup& ) const;
00133 };
00134 
00135 
00136 // ----------------------- ExtendToHomProblem ------------------------------ //
00137 
00138 
00139 class ExtendToHomProblem : public Supervisor
00140 {
00141 public:
00142 
00143   /////////////////////////////////////////////////////////////////////////
00144   //                                                                     //
00145   // Constructors:                                                       //
00146   //                                                                     //
00147   /////////////////////////////////////////////////////////////////////////
00148 
00149   ExtendToHomProblem( class SMMap& );
00150 
00151   /////////////////////////////////////////////////////////////////////////
00152   //                                                                     //
00153   // Accessors:                                                          //
00154   //                                                                     //
00155   /////////////////////////////////////////////////////////////////////////
00156 
00157   Trichotomy answer( ) const { return theAnswer; }
00158   Trichotomy nilpWPAnswer( ) ;
00159   Trichotomy nilpWPInQuotAnswer( ) ;
00160   
00161 
00162   /////////////////////////////////////////////////////////////////////////
00163   //                                                                     //
00164   // Front End Interfacing:                                              //
00165   //                                                                     //
00166   /////////////////////////////////////////////////////////////////////////
00167 
00168   void viewStructure(ostream& ostr) const;  // overrides SMObject
00169 
00170   /////////////////////////////////////////////////////////////////////////
00171   //                                                                     //
00172   // Control:                                                            //
00173   //                                                                     //
00174   /////////////////////////////////////////////////////////////////////////
00175 
00176   void takeControl( );         // overrides ComputationManager
00177 
00178   /////////////////////////////////////////////////////////////////////////
00179   //                                                                     //
00180   // State Transitions:                                                  //
00181   //                                                                     //
00182   /////////////////////////////////////////////////////////////////////////
00183 
00184   void start( );              // overrides ComputationManager
00185 
00186   void terminate( );          // overrides ComputationManager
00187 
00188 
00189 private:
00190 
00191 
00192   /////////////////////////////////////////////////////////////////////////
00193   //                                                                     //
00194   // Private functions:                                                  //
00195   //                                                                     //
00196   /////////////////////////////////////////////////////////////////////////
00197 
00198   void sendResultMessage( Chars );
00199 
00200 
00201   /////////////////////////////////////////////////////////////////////////
00202   //                                                                     //
00203   // Data Members:                                                       //
00204   //                                                                     //
00205   /////////////////////////////////////////////////////////////////////////
00206 
00207   SMMap& theMap;
00208   const SMFPGroup& theDomain;
00209   const SMFPGroup& theRange;
00210 
00211   int theClass;
00212 
00213   ExtendToHomChecker theChecker;
00214 
00215   // Housekeeping members:
00216 
00217   Trichotomy theAnswer;
00218   Chars explanation;
00219 
00220 
00221   // GCM components this uses; only for automatic ARC passing:
00222 
00223   MirrorSubordinate normalClosure;
00224   MirrorSubordinate abelianInvariants;
00225   MirrorSubordinate kbSupervisor;
00226   MirrorSubordinate agSupervisor;
00227   MirrorSubordinate nilpotentQuotients;
00228   Subordinate<ExtendToHomProblem,NilpotentWPInQuotients> nilpotentWPInQuotients;
00229   MirrorSubordinate computeBasis;
00230   Subordinate<ExtendToHomProblem,NilpotentWP> nilpotentWP;
00231   Subordinate<ExtendToHomProblem, GeneticWPCM> genetic;
00232 };
00233 
00234 #endif
00235 

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