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

/magnus/back_end/SMApps/include/FreeIsPartOfBasisProblem.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: FreeIsPartOfBasisProblem.h,v 1.1.1.1 1996/12/05 19:45:06 bormotov Exp */
00003 
00004 // Copyright (C) 1995 The New York Group Theory Cooperative
00005 // See magnus/doc/COPYRIGHT for the full notice.
00006 
00007 // Contents: Declarations of classes 
00008 //           FreeIsPartOfBasisProblem, FreeIsPartOfBasis
00009 //           FreeGeneralIsPartOfBasisProblem, FreeGeneralIsPartOfBasis
00010 //
00011 // Principal Author: Dmitry Bormotov
00012 //
00013 // Status: in progress
00014 //
00015 // Revision History:
00016 //
00017 
00018 
00019 #ifndef _FREE_IS_PART_OF_BASIS_PROBLEM_H_
00020 #define _FREE_IS_PART_OF_BASIS_PROBLEM_H_
00021 
00022 
00023 #include "Supervisor.h"
00024 #include "GeneralWhitehead.h"
00025 #include "GAIsPartOfBasis.h"
00026 #include "SMSetOfWords.h"
00027 #include "SMWord.h"
00028 
00029 // --------------------------- GAIsPartOfBasisArcer ------------------------ //
00030 
00031 
00032 class GAIsPartOfBasisArcer : public ARCer
00033 {
00034 public:
00035 
00036   /////////////////////////////////////////////////////////////////////////
00037   //                                                                     //
00038   // Constructors:                                                       //
00039   //                                                                     //
00040   /////////////////////////////////////////////////////////////////////////
00041 
00042   GAIsPartOfBasisArcer( ComputationManager& );
00043 
00044   ~GAIsPartOfBasisArcer( ) { }
00045 
00046 
00047   /////////////////////////////////////////////////////////////////////////
00048   //                                                                     //
00049   // Accessors:                                                          //
00050   //                                                                     //
00051   /////////////////////////////////////////////////////////////////////////
00052 
00053   void setArguments( FreeGroup f,Word w );
00054 
00055   Chars getComputationFileName() const { return compFile.getFileName();}
00056   Chars getResultFileName() const { return resultFile.getFileName();}
00057   const VectorOf<Word>& getAutomorphism() const { return theAuto;}
00058   // Inherited from ARCer:
00059   // bool takeControl( );
00060 
00061 
00062   /////////////////////////////////////////////////////////////////////////
00063   //                                                                     //
00064   // IPC interaction members:                                            //
00065   //                                                                     //
00066   /////////////////////////////////////////////////////////////////////////
00067 
00068   void runComputation( );
00069 
00070   void writeResults( ostream& );
00071 
00072   void readResults( istream& );
00073 
00074   
00075 private:
00076 
00077   /////////////////////////////////////////////////////////////////////////
00078   //                                                                     //
00079   // Private functions:                                                  //
00080   //                                                                     //
00081   /////////////////////////////////////////////////////////////////////////
00082 
00083   /////////////////////////////////////////////////////////////////////////
00084   //                                                                     //
00085   // Data Members:                                                       //
00086   //                                                                     //
00087   /////////////////////////////////////////////////////////////////////////
00088   
00089   Word theWord;
00090   FreeGroup theGroup;
00091   File compFile;
00092   File resultFile;
00093   VectorOf<Word> theAuto;
00094 };
00095 
00096 
00097 
00098 // ---------------------------- GAIsPartOfBasisCM ------------------------- //
00099 
00100 
00101 class GAIsPartOfBasisCM : public ComputationManager
00102 {
00103 public:
00104 
00105   /////////////////////////////////////////////////////////////////////////
00106   //                                                                     //
00107   // Constructors:                                                       //
00108   //                                                                     //
00109   /////////////////////////////////////////////////////////////////////////
00110 
00111   GAIsPartOfBasisCM( class FreeIsPartOfBasisProblem&  );
00112 
00113   //  ~GeneticWPCM( );
00114 
00115   /////////////////////////////////////////////////////////////////////////
00116   //                                                                     //
00117   // Accessors:                                                          //
00118   //                                                                     //
00119   /////////////////////////////////////////////////////////////////////////
00120    
00121   Trichotomy getAnswer() const { return answer;}
00122   
00123   Chars getComputationFileName() const { return arcer.getComputationFileName();}
00124   
00125   Chars getResultFileName() const { return arcer.getResultFileName();}
00126 
00127   const VectorOf<Word>& getAutomorphism() const { return arcer.getAutomorphism();}
00128 
00129   /////////////////////////////////////////////////////////////////////////
00130   //                                                                     //
00131   // Control:                                                            //
00132   //                                                                     //
00133   /////////////////////////////////////////////////////////////////////////
00134 
00135   void takeControl( );         // overrides ComputationManager
00136 
00137   /////////////////////////////////////////////////////////////////////////
00138   //                                                                     //
00139   // State Transitions:                                                  //
00140   //                                                                     //
00141   /////////////////////////////////////////////////////////////////////////
00142 
00143   void start( );              // overrides ComputationManager
00144 
00145   void terminate( );          // overrides ComputationManager
00146 
00147 
00148 private:
00149 
00150   /////////////////////////////////////////////////////////////////////////
00151   //                                                                     //
00152   // Data Members:                                                       //
00153   //                                                                     //
00154   /////////////////////////////////////////////////////////////////////////
00155 
00156   GAIsPartOfBasisArcer arcer;
00157   Trichotomy answer;
00158   const class SMWord& theWord;
00159   bool linkHasBeenSent;
00160 };
00161 
00162 // ------------------------ FreeIsPartOfBasis ------------------------------ //
00163 
00164 
00165 class FreeIsPartOfBasis : public ComputationManager
00166 {
00167 public:
00168 
00169   /////////////////////////////////////////////////////////////////////////
00170   //                                                                     //
00171   // Constructors:                                                       //
00172   //                                                                     //
00173   /////////////////////////////////////////////////////////////////////////
00174 
00175   FreeIsPartOfBasis(class FreeIsPartOfBasisProblem& problemObject );
00176 
00177   ~FreeIsPartOfBasis( );
00178 
00179   /////////////////////////////////////////////////////////////////////////
00180   //                                                                     //
00181   // Accessors:                                                          //
00182   //                                                                     //
00183   /////////////////////////////////////////////////////////////////////////
00184 
00185   Trichotomy answer( ) const { return theAnswer; }
00186   // This not report the result to the FE, but just sits and waits to
00187   // be polled through this member. yes => conjugate, no => not conjugate,
00188   // dontknow => not done yet.
00189 
00190   Map getAutomorphism( ) const;
00191   // Returns a valid result when answer() returns yes, otherwise
00192   // it is an error.
00193 
00194   Chars getFileName( ) { return theFileName; }
00195   // Returns name of the file with computation details
00196 
00197 
00198   /////////////////////////////////////////////////////////////////////////
00199   //                                                                     //
00200   // Control:                                                            //
00201   //                                                                     //
00202   /////////////////////////////////////////////////////////////////////////
00203 
00204   void takeControl( );         // overrides ComputationManager
00205 
00206   /////////////////////////////////////////////////////////////////////////
00207   //                                                                     //
00208   // State Transitions:                                                  //
00209   //                                                                     //
00210   /////////////////////////////////////////////////////////////////////////
00211 
00212   void start( ) { };              // overrides ComputationManager
00213 
00214   void terminate( ) { };          // overrides ComputationManager
00215 
00216 
00217 private:
00218 
00219   /////////////////////////////////////////////////////////////////////////
00220   //                                                                     //
00221   // Data Members:                                                       //
00222   //                                                                     //
00223   /////////////////////////////////////////////////////////////////////////
00224 
00225   bool linkHasBeenSent;
00226   
00227   const class SMWord& theWord;
00228 
00229   Trichotomy theAnswer;
00230   
00231   FreeGroup theGroup;
00232   
00233   Map theAutomorphism;
00234 
00235   GeneralWhitehead* GW;
00236 
00237   Chars theFileName; 
00238   // Keeps name of the file containing details of the computation.
00239 
00240 };
00241 
00242 
00243 // -------------------- FreeIsPartOfBasisProblem --------------------------- //
00244 
00245 
00246 class FreeIsPartOfBasisProblem : public Supervisor
00247 {
00248 public:
00249 
00250   /////////////////////////////////////////////////////////////////////////
00251   //                                                                     //
00252   // Constructors:                                                       //
00253   //                                                                     //
00254   /////////////////////////////////////////////////////////////////////////
00255 
00256   FreeIsPartOfBasisProblem(const class SMWord& w);
00257 
00258 
00259   /////////////////////////////////////////////////////////////////////////
00260   //                                                                     //
00261   // Accessors:                                                          //
00262   //                                                                     //
00263   /////////////////////////////////////////////////////////////////////////
00264 
00265   const class SMWord& getWord( ) const { return theWord; }
00266 
00267 
00268   /////////////////////////////////////////////////////////////////////////
00269   //                                                                     //
00270   // Front End Interfacing:                                              //
00271   //                                                                     //
00272   /////////////////////////////////////////////////////////////////////////
00273 
00274   void viewStructure(ostream& ostr) const;  // overrides SMObject
00275 
00276 
00277   /////////////////////////////////////////////////////////////////////////
00278   //                                                                     //
00279   // Control:                                                            //
00280   //                                                                     //
00281   /////////////////////////////////////////////////////////////////////////
00282 
00283   void takeControl( );         // overrides ComputationManager
00284 
00285 
00286   /////////////////////////////////////////////////////////////////////////
00287   //                                                                     //
00288   // State Transitions:                                                  //
00289   //                                                                     //
00290   /////////////////////////////////////////////////////////////////////////
00291 
00292   void start( ) { };          // overrides ComputationManager
00293 
00294   void terminate( ) { };      // overrides ComputationManager
00295 
00296 
00297 private:
00298 
00299   /////////////////////////////////////////////////////////////////////////
00300   //                                                                     //
00301   // Data Members:                                                       //
00302   //                                                                     //
00303   /////////////////////////////////////////////////////////////////////////
00304 
00305   const SMWord& theWord;
00306  
00307   bool link1HasBeenSent;
00308   bool link2HasBeenSent;
00309   
00310 
00311   /////////////////////////////////////////////////////////////////////////
00312   //                                                                     //
00313   // Subordinate Computation Managers:                                   //
00314   //                                                                     //
00315   /////////////////////////////////////////////////////////////////////////
00316 
00317   Subordinate<FreeIsPartOfBasisProblem, FreeIsPartOfBasis> freeIsPartOfBasis;
00318   Subordinate<FreeIsPartOfBasisProblem, GAIsPartOfBasisCM> gaIsPartOfBasisCM;
00319 
00320 };
00321 
00322 
00323 // --------------------- FreeGeneralIsPartOfBasis -------------------------- //
00324 
00325 
00326 class FreeGeneralIsPartOfBasis : public ComputationManager
00327 {
00328 public:
00329 
00330   /////////////////////////////////////////////////////////////////////////
00331   //                                                                     //
00332   // Constructors:                                                       //
00333   //                                                                     //
00334   /////////////////////////////////////////////////////////////////////////
00335 
00336   FreeGeneralIsPartOfBasis( class FreeGeneralIsPartOfBasisProblem&
00337                             problemObject );
00338 
00339   ~FreeGeneralIsPartOfBasis( );
00340 
00341   /////////////////////////////////////////////////////////////////////////
00342   //                                                                     //
00343   // Accessors:                                                          //
00344   //                                                                     //
00345   /////////////////////////////////////////////////////////////////////////
00346 
00347   Trichotomy answer( ) const { return theAnswer; }
00348   // This not report the result to the FE, but just sits and waits to
00349   // be polled through this member. yes => conjugate, no => not conjugate,
00350   // dontknow => not done yet.
00351 
00352   Map getAutomorphism( ) const;
00353   // Returns a valid result when answer() returns yes, otherwise
00354   // it is an error.
00355 
00356   Chars getFileName( ) { return theFileName; }
00357   // Returns name of the file with computation details
00358 
00359 
00360   /////////////////////////////////////////////////////////////////////////
00361   //                                                                     //
00362   // Control:                                                            //
00363   //                                                                     //
00364   /////////////////////////////////////////////////////////////////////////
00365 
00366   void takeControl( );         // overrides ComputationManager
00367 
00368 
00369   /////////////////////////////////////////////////////////////////////////
00370   //                                                                     //
00371   // State Transitions:                                                  //
00372   //                                                                     //
00373   /////////////////////////////////////////////////////////////////////////
00374 
00375   void start( ) { };           // overrides ComputationManager
00376 
00377   void terminate( ) { };       // overrides ComputationManager
00378 
00379 
00380 private:
00381 
00382   /////////////////////////////////////////////////////////////////////////
00383   //                                                                     //
00384   // Data Members:                                                       //
00385   //                                                                     //
00386   /////////////////////////////////////////////////////////////////////////
00387 
00388   const class SMSetOfWords& theSet;
00389 
00390   Trichotomy theAnswer;
00391   
00392   FreeGroup theGroup;
00393   
00394   Map theAutomorphism;
00395 
00396   GeneralWhitehead* GW;
00397 
00398   Chars theFileName; 
00399   // Keeps name of the file containing details of the computation.
00400 
00401 };
00402 
00403 
00404 // ------------------- FreeGeneralIsPartOfBasisProblem --------------------- //
00405 
00406 
00407 class FreeGeneralIsPartOfBasisProblem : public Supervisor
00408 {
00409 public:
00410 
00411   /////////////////////////////////////////////////////////////////////////
00412   //                                                                     //
00413   // Constructors:                                                       //
00414   //                                                                     //
00415   /////////////////////////////////////////////////////////////////////////
00416 
00417   FreeGeneralIsPartOfBasisProblem( const class SMSetOfWords& );
00418 
00419 
00420   /////////////////////////////////////////////////////////////////////////
00421   //                                                                     //
00422   // Accessors:                                                          //
00423   //                                                                     //
00424   /////////////////////////////////////////////////////////////////////////
00425 
00426   const class SMSetOfWords& getSetOfWords( ) const { return theSet; }
00427 
00428 
00429   /////////////////////////////////////////////////////////////////////////
00430   //                                                                     //
00431   // Front End Interfacing:                                              //
00432   //                                                                     //
00433   /////////////////////////////////////////////////////////////////////////
00434 
00435   void viewStructure(ostream& ostr) const;  // overrides SMObject
00436 
00437 
00438   /////////////////////////////////////////////////////////////////////////
00439   //                                                                     //
00440   // Control:                                                            //
00441   //                                                                     //
00442   /////////////////////////////////////////////////////////////////////////
00443 
00444   void takeControl( );         // overrides ComputationManager
00445 
00446 
00447   /////////////////////////////////////////////////////////////////////////
00448   //                                                                     //
00449   // State Transitions:                                                  //
00450   //                                                                     //
00451   /////////////////////////////////////////////////////////////////////////
00452 
00453   void start( ) { };          // overrides ComputationManager
00454 
00455   void terminate( ) { };      // overrides ComputationManager
00456 
00457 
00458 private:
00459 
00460   /////////////////////////////////////////////////////////////////////////
00461   //                                                                     //
00462   // Data Members:                                                       //
00463   //                                                                     //
00464   /////////////////////////////////////////////////////////////////////////
00465 
00466   const SMSetOfWords& theSet;
00467   
00468   bool linkHasBeenSent;
00469 
00470 
00471   /////////////////////////////////////////////////////////////////////////
00472   //                                                                     //
00473   // Subordinate Computation Managers:                                   //
00474   //                                                                     //
00475   /////////////////////////////////////////////////////////////////////////
00476 
00477   Subordinate<FreeGeneralIsPartOfBasisProblem, FreeGeneralIsPartOfBasis>
00478     freeIsPartOfBasis;
00479 };
00480 
00481 #endif

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