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

/magnus/back_end/SMApps/include/SubgroupProblems.h

Go to the documentation of this file.
00001 // Copyright (C) 1995 The New York Group Theory Cooperative
00002 // See magnus/doc/COPYRIGHT for the full notice.
00003 //
00004 // Contents: Declaration of classes IsSGAbelian, IsSGCentral, IsSGNilpotent,
00005 //           IsSGTrivial.
00006 //
00007 // Principal Author: Dmitry Bormotov
00008 //
00009 // Status: in progress
00010 //
00011 // Revision History:
00012 //
00013 
00014 
00015 #ifndef _SubgroupProblems_h_
00016 #define _SubgroupProblems_h_
00017 
00018 
00019 #include "Supervisor.h"
00020 #include "SetOfWordsChecker.h"
00021 #include "CommutatorsChecker.h"
00022 #include "NilpotentProblems.h"
00023 #include "ToddCoxeter.h"
00024 #include "Subgroup.h"
00025 #include "GeneticProblems.h"
00026 
00027 
00028 // --------------------------- IsSGAbelian --------------------------------- //
00029 
00030 
00031 class IsSGAbelian : public Supervisor
00032 {
00033 
00034 public:
00035 
00036   /////////////////////////////////////////////////////////////////////////
00037   //                                                                     //
00038   // Constructors:                                                       //
00039   //                                                                     //
00040   /////////////////////////////////////////////////////////////////////////
00041 
00042   IsSGAbelian( class SMSubgroup& );
00043 
00044   /////////////////////////////////////////////////////////////////////////
00045   //                                                                     //
00046   // Accessors:                                                          //
00047   //                                                                     //
00048   /////////////////////////////////////////////////////////////////////////
00049 
00050   /////////////////////////////////////////////////////////////////////////
00051   //                                                                     //
00052   // Front End Interfacing:                                              //
00053   //                                                                     //
00054   /////////////////////////////////////////////////////////////////////////
00055 
00056   void viewStructure(ostream& ostr) const;  // overrides SMObject
00057 
00058   /////////////////////////////////////////////////////////////////////////
00059   //                                                                     //
00060   // Control:                                                            //
00061   //                                                                     //
00062   /////////////////////////////////////////////////////////////////////////
00063 
00064   void takeControl( );         // overrides ComputationManager
00065 
00066   /////////////////////////////////////////////////////////////////////////
00067   //                                                                     //
00068   // State Transitions:                                                  //
00069   //                                                                     //
00070   /////////////////////////////////////////////////////////////////////////
00071 
00072   void start( ) { }            // overrides ComputationManager
00073 
00074   void terminate( ) { }        // overrides ComputationManager
00075 
00076 
00077 private:
00078 
00079   /////////////////////////////////////////////////////////////////////////
00080   //                                                                     //
00081   // Data Members:                                                       //
00082   //                                                                     //
00083   /////////////////////////////////////////////////////////////////////////
00084 
00085   SMSubgroup& theSubgroup;
00086 
00087   SetOfWordsChecker theChecker;
00088 
00089 
00090   // GCM components this uses; only for automatic ARC passing:
00091 
00092   MirrorSubordinate normalClosure;
00093 
00094   MirrorSubordinate abelianInvariants;
00095 
00096   MirrorSubordinate kbSupervisor;
00097 
00098   MirrorSubordinate agSupervisor;
00099 
00100   MirrorSubordinate nilpotentQuotients;
00101 
00102   Subordinate<IsSGAbelian,NilpotentWPInQuotients> nilpotentWPInQuotients;
00103 
00104   MirrorSubordinate computeBasis;
00105 
00106   Subordinate<IsSGAbelian,NilpotentWP> nilpotentWP;
00107 
00108   Subordinate<IsSGAbelian, GeneticWPCM> genetic;
00109 };
00110 
00111 
00112 // --------------------------- IsSGCentral --------------------------------- //
00113 
00114 
00115 class IsSGCentral : public Supervisor
00116 {
00117 
00118 public:
00119 
00120   /////////////////////////////////////////////////////////////////////////
00121   //                                                                     //
00122   // Constructors:                                                       //
00123   //                                                                     //
00124   /////////////////////////////////////////////////////////////////////////
00125 
00126   IsSGCentral( class SMSubgroup& );
00127 
00128   /////////////////////////////////////////////////////////////////////////
00129   //                                                                     //
00130   // Accessors:                                                          //
00131   //                                                                     //
00132   /////////////////////////////////////////////////////////////////////////
00133 
00134   /////////////////////////////////////////////////////////////////////////
00135   //                                                                     //
00136   // Front End Interfacing:                                              //
00137   //                                                                     //
00138   /////////////////////////////////////////////////////////////////////////
00139 
00140   void viewStructure(ostream& ostr) const;  // overrides SMObject
00141 
00142   /////////////////////////////////////////////////////////////////////////
00143   //                                                                     //
00144   // Control:                                                            //
00145   //                                                                     //
00146   /////////////////////////////////////////////////////////////////////////
00147 
00148   void takeControl( );         // overrides ComputationManager
00149 
00150   /////////////////////////////////////////////////////////////////////////
00151   //                                                                     //
00152   // State Transitions:                                                  //
00153   //                                                                     //
00154   /////////////////////////////////////////////////////////////////////////
00155 
00156   void start( ) { }            // overrides ComputationManager
00157 
00158   void terminate( ) { }        // overrides ComputationManager
00159 
00160 
00161 private:
00162 
00163   /////////////////////////////////////////////////////////////////////////
00164   //                                                                     //
00165   // Data Members:                                                       //
00166   //                                                                     //
00167   /////////////////////////////////////////////////////////////////////////
00168 
00169   SMSubgroup& theSubgroup;
00170 
00171   SetOfWordsChecker theChecker;
00172 
00173 
00174   // GCM components this uses; only for automatic ARC passing:
00175 
00176   MirrorSubordinate normalClosure;
00177 
00178   MirrorSubordinate abelianInvariants;
00179 
00180   MirrorSubordinate kbSupervisor;
00181 
00182   MirrorSubordinate agSupervisor;
00183 
00184   MirrorSubordinate nilpotentQuotients;
00185 
00186   Subordinate<IsSGCentral,NilpotentWPInQuotients> nilpotentWPInQuotients;
00187 
00188   MirrorSubordinate computeBasis;
00189 
00190   Subordinate<IsSGCentral,NilpotentWP> nilpotentWP;
00191 
00192   Subordinate<IsSGCentral, GeneticWPCM> genetic;
00193 };
00194 
00195 
00196 // ---------------------------- IsSGNilpotent ------------------------------ //
00197 
00198 
00199 class IsSGNilpotent : public Supervisor
00200 {
00201 
00202 public:
00203 
00204   /////////////////////////////////////////////////////////////////////////
00205   //                                                                     //
00206   // Constructors:                                                       //
00207   //                                                                     //
00208   /////////////////////////////////////////////////////////////////////////
00209 
00210   IsSGNilpotent( const class SMSubgroup& S, int nilpClass = 2 );
00211 
00212 
00213   /////////////////////////////////////////////////////////////////////////
00214   //                                                                     //
00215   // Accessors:                                                          //
00216   //                                                                     //
00217   /////////////////////////////////////////////////////////////////////////
00218 
00219   /////////////////////////////////////////////////////////////////////////
00220   //                                                                     //
00221   // Front End Interfacing:                                              //
00222   //                                                                     //
00223   /////////////////////////////////////////////////////////////////////////
00224 
00225   void viewStructure(ostream& ostr) const;  // overrides SMObject
00226 
00227   /////////////////////////////////////////////////////////////////////////
00228   //                                                                     //
00229   // Control:                                                            //
00230   //                                                                     //
00231   /////////////////////////////////////////////////////////////////////////
00232 
00233   void takeControl( );         // overrides ComputationManager
00234 
00235   /////////////////////////////////////////////////////////////////////////
00236   //                                                                     //
00237   // State Transitions:                                                  //
00238   //                                                                     //
00239   /////////////////////////////////////////////////////////////////////////
00240 
00241   void start( ) { }           // overrides ComputationManager
00242 
00243   void terminate( ) { }       // overrides ComputationManager
00244 
00245 
00246 private:
00247 
00248   /////////////////////////////////////////////////////////////////////////
00249   //                                                                     //
00250   // Data Members:                                                       //
00251   //                                                                     //
00252   /////////////////////////////////////////////////////////////////////////
00253 
00254   const SMSubgroup& theSubgroup;
00255 
00256   int theClass;
00257 
00258   CommutatorsChecker theChecker;
00259 
00260   CommutatorsCheckerARCer theArcer;
00261 
00262 
00263   // GCM components this uses; only for automatic ARC passing:
00264 
00265   MirrorSubordinate normalClosure;
00266 
00267   MirrorSubordinate abelianInvariants;
00268 
00269   MirrorSubordinate kbSupervisor;
00270 
00271   MirrorSubordinate agSupervisor;
00272 
00273   MirrorSubordinate nilpotentQuotients;
00274 
00275   Subordinate<IsSGNilpotent,NilpotentWPInQuotients> nilpotentWPInQuotients;
00276 
00277 };
00278 
00279 
00280 // --------------------------- IsSGTrivial --------------------------------- //
00281 
00282 
00283 class IsSGTrivial : public Supervisor
00284 {
00285 
00286 public:
00287 
00288   /////////////////////////////////////////////////////////////////////////
00289   //                                                                     //
00290   // Constructors:                                                       //
00291   //                                                                     //
00292   /////////////////////////////////////////////////////////////////////////
00293 
00294   IsSGTrivial(  class SMSubgroup& );
00295 
00296   /////////////////////////////////////////////////////////////////////////
00297   //                                                                     //
00298   // Accessors:                                                          //
00299   //                                                                     //
00300   /////////////////////////////////////////////////////////////////////////
00301 
00302   /////////////////////////////////////////////////////////////////////////
00303   //                                                                     //
00304   // Front End Interfacing:                                              //
00305   //                                                                     //
00306   /////////////////////////////////////////////////////////////////////////
00307 
00308   void viewStructure(ostream& ostr) const;  // overrides SMObject
00309 
00310   /////////////////////////////////////////////////////////////////////////
00311   //                                                                     //
00312   // Control:                                                            //
00313   //                                                                     //
00314   /////////////////////////////////////////////////////////////////////////
00315 
00316   void takeControl( );         // overrides ComputationManager
00317 
00318   /////////////////////////////////////////////////////////////////////////
00319   //                                                                     //
00320   // State Transitions:                                                  //
00321   //                                                                     //
00322   /////////////////////////////////////////////////////////////////////////
00323 
00324   void start( ) { }            // overrides ComputationManager
00325 
00326   void terminate( ) { }        // overrides ComputationManager
00327 
00328 
00329 private:
00330 
00331   /////////////////////////////////////////////////////////////////////////
00332   //                                                                     //
00333   // Data Members:                                                       //
00334   //                                                                     //
00335   /////////////////////////////////////////////////////////////////////////
00336 
00337   SMSubgroup& theSubgroup;
00338 
00339   SetOfWordsChecker theChecker;
00340 
00341 
00342   // GCM components this uses; only for automatic ARC passing:
00343 
00344   MirrorSubordinate normalClosure;
00345 
00346   MirrorSubordinate abelianInvariants;
00347 
00348   MirrorSubordinate kbSupervisor;
00349 
00350   MirrorSubordinate agSupervisor;
00351 
00352   MirrorSubordinate nilpotentQuotients;
00353 
00354   Subordinate<IsSGTrivial,NilpotentWPInQuotients> nilpotentWPInQuotients;
00355 
00356   MirrorSubordinate computeBasis;
00357 
00358   Subordinate<IsSGTrivial,NilpotentWP> nilpotentWP;
00359 
00360   Subordinate<IsSGTrivial, GeneticWPCM> genetic;
00361 };
00362 
00363 
00364 //---------------------------------------------------------------------------//
00365 //--------------------------- SGIndexProblem --------------------------------//
00366 //---------------------------------------------------------------------------//
00367 
00368 
00369 class SGIndexProblem : public Supervisor
00370 {
00371 public:
00372 
00373   /////////////////////////////////////////////////////////////////////////
00374   //                                                                     //
00375   // Constructors:                                                       //
00376   //                                                                     //
00377   /////////////////////////////////////////////////////////////////////////
00378 
00379   SGIndexProblem(SMSubgroup& subgroup);
00380 
00381   /////////////////////////////////////////////////////////////////////////
00382   //                                                                     //
00383   // Front End Interfacing:                                              //
00384   //                                                                     //
00385   /////////////////////////////////////////////////////////////////////////
00386 
00387   void viewStructure(ostream& ostr) const;  // overrides SMObject
00388 
00389   /////////////////////////////////////////////////////////////////////////
00390   //                                                                     //
00391   // Control:                                                            //
00392   //                                                                     //
00393   /////////////////////////////////////////////////////////////////////////
00394 
00395   void takeControl( );         // overrides ComputationManager
00396 
00397   /////////////////////////////////////////////////////////////////////////
00398   //                                                                     //
00399   // State Transitions:                                                  //
00400   //                                                                     //
00401   /////////////////////////////////////////////////////////////////////////
00402 
00403   void start( ) { }              // overrides ComputationManager
00404 
00405   void terminate( ) { }          // overrides ComputationManager
00406 
00407 
00408 private:
00409 
00410   /////////////////////////////////////////////////////////////////////////
00411   //                                                                     //
00412   // Data Members:                                                       //
00413   //                                                                     //
00414   /////////////////////////////////////////////////////////////////////////
00415 
00416   SMSubgroup& theSubgroup;
00417   
00418   MirrorSubordinate sgToddCoxeter;
00419   MirrorSubordinate sgGHToddCoxeter;
00420 };
00421 
00422 
00423 // ---------------------------SGPresentationProblem--------------------------//
00424 
00425 class ApproxMethodARCer : public ARCer
00426 {
00427  public:
00428 
00429   /////////////////////////////////////////////////////////////////////////
00430   //                                                                     //
00431   // Constructors:                                                       //
00432   //                                                                     //
00433   /////////////////////////////////////////////////////////////////////////
00434   
00435   ApproxMethodARCer( ComputationManager& boss ) 
00436     : ARCer( boss ) , sg( FPGroup() ) , tmpOutput( ) 
00437   { } 
00438   
00439   void setArguments( const FPGroup& g , const VectorOf<Word>& v );
00440   
00441   /////////////////////////////////////////////////////////////////////////
00442   //                                                                     //
00443   // Accessors:                                                          //
00444   //                                                                     //
00445   /////////////////////////////////////////////////////////////////////////
00446 
00447   FPGroup getRetValue( );
00448   Chars tmpOutputFilename();
00449 
00450   /////////////////////////////////////////////////////////////////////////
00451   //                                                                     //
00452   // IPC interaction members:                                            //
00453   //                                                                     //
00454   /////////////////////////////////////////////////////////////////////////
00455 
00456   void runComputation( );
00457  
00458   void writeResults( ostream& );
00459 
00460   void readResults( istream& );
00461 
00462   
00463 private:
00464 
00465   /////////////////////////////////////////////////////////////////////////
00466   //                                                                     //
00467   // Data Members:                                                       //
00468   //                                                                     //
00469   /////////////////////////////////////////////////////////////////////////
00470 
00471   Subgroup sg;
00472   File tmpOutput;
00473   FPGroup result;
00474 };
00475 
00476 class ApproxMethod : public ComputationManager
00477 {
00478 public:
00479   
00480   /////////////////////////////////////////////////////////////////////////
00481   //                                                                     //
00482   // Constructors:                                                       //
00483   //                                                                     //
00484   /////////////////////////////////////////////////////////////////////////
00485 
00486   ApproxMethod( class SGPresentationProblem& sgp );
00487      
00488   /////////////////////////////////////////////////////////////////////////
00489   //                                                                     //
00490   // Accessors:                                                          //
00491   //                                                                     //
00492   /////////////////////////////////////////////////////////////////////////
00493 
00494   FPGroup getResult();
00495   Chars tmpOutputFilename();  
00496    
00497   /////////////////////////////////////////////////////////////////////////
00498   //                                                                     //
00499   // Control:                                                            //
00500   //                                                                     //
00501   /////////////////////////////////////////////////////////////////////////
00502 
00503   void takeControl( );         // overrides ComputationManager
00504 
00505   /////////////////////////////////////////////////////////////////////////
00506   //                                                                     //
00507   // State Transitions:                                                  //
00508   //                                                                     //
00509   /////////////////////////////////////////////////////////////////////////
00510 
00511   void start( );              // overrides ComputationManager
00512 
00513   void terminate( );          // overrides ComputationManager
00514 
00515 
00516 private:
00517 
00518   /////////////////////////////////////////////////////////////////////////
00519   //                                                                     //
00520   // Data Members:                                                       //
00521   //                                                                     //
00522   /////////////////////////////////////////////////////////////////////////
00523 
00524   SMSubgroup& theSubgroup;
00525   FPGroup result;
00526   ApproxMethodARCer arcer;
00527 };
00528 
00529 
00530 class TCMethodARCer : public ARCer
00531 {
00532  public:
00533 
00534   /////////////////////////////////////////////////////////////////////////
00535   //                                                                     //
00536   // Constructors:                                                       //
00537   //                                                                     //
00538   /////////////////////////////////////////////////////////////////////////
00539   
00540   TCMethodARCer( ComputationManager& boss ) 
00541     : ARCer( boss ) , sg( FPGroup() ) , 
00542       pr( ) , tmpOutput( ) 
00543   { } 
00544 
00545   void setArguments( const FPGroup& g , const VectorOf<Word>& v ,
00546                      const PermutationRepresentation& prep );
00547   
00548   /////////////////////////////////////////////////////////////////////////
00549   //                                                                     //
00550   // Accessors:                                                          //
00551   //                                                                     //
00552   /////////////////////////////////////////////////////////////////////////
00553 
00554   FPGroup getRetValue( );
00555   Chars tmpOutputFilename();
00556   
00557   /////////////////////////////////////////////////////////////////////////
00558   //                                                                     //
00559   // IPC interaction members:                                            //
00560   //                                                                     //
00561   /////////////////////////////////////////////////////////////////////////
00562 
00563   void runComputation( );
00564  
00565   void writeResults( ostream& );
00566 
00567   void readResults( istream& );
00568 
00569   
00570 private:
00571 
00572   /////////////////////////////////////////////////////////////////////////
00573   //                                                                     //
00574   // Data Members:                                                       //
00575   //                                                                     //
00576   /////////////////////////////////////////////////////////////////////////
00577 
00578   Subgroup sg;
00579   PermutationRepresentation pr;
00580   File tmpOutput;
00581   FPGroup result;
00582 };
00583 
00584 class TCMethod : public ComputationManager
00585 {
00586 public:
00587 
00588   /////////////////////////////////////////////////////////////////////////
00589   //                                                                     //
00590   // Constructors:                                                       //
00591   //                                                                     //
00592   /////////////////////////////////////////////////////////////////////////
00593 
00594   TCMethod( class SGPresentationProblem& sgp );
00595 
00596   /////////////////////////////////////////////////////////////////////////
00597   //                                                                     //
00598   // Accessors:                                                          //
00599   //                                                                     //
00600   /////////////////////////////////////////////////////////////////////////
00601 
00602   FPGroup getResult();
00603   Chars tmpOutputFilename();
00604     
00605   /////////////////////////////////////////////////////////////////////////
00606   //                                                                     //
00607   // Control:                                                            //
00608   //                                                                     //
00609   /////////////////////////////////////////////////////////////////////////
00610 
00611   void takeControl( );         // overrides ComputationManager
00612 
00613   /////////////////////////////////////////////////////////////////////////
00614   //                                                                     //
00615   // State Transitions:                                                  //
00616   //                                                                     //
00617   /////////////////////////////////////////////////////////////////////////
00618 
00619   void start( );              // overrides ComputationManager
00620 
00621   void terminate( );          // overrides ComputationManager
00622 
00623 
00624 private:
00625 
00626   /////////////////////////////////////////////////////////////////////////
00627   //                                                                     //
00628   // Data Members:                                                       //
00629   //                                                                     //
00630   /////////////////////////////////////////////////////////////////////////
00631 
00632   SMSubgroup& theSubgroup;
00633   Bool init;
00634   FPGroup result;
00635   TCMethodARCer arcer;
00636 };
00637 
00638 class SGPresentationProblem : public Supervisor
00639 {
00640 public:
00641 
00642   /////////////////////////////////////////////////////////////////////////
00643   //                                                                     //
00644   // Constructors:                                                       //
00645   //                                                                     //
00646   /////////////////////////////////////////////////////////////////////////
00647 
00648   SGPresentationProblem(SMSubgroup& s);
00649 
00650   /////////////////////////////////////////////////////////////////////////
00651   //                                                                     //
00652   // Front End Interfacing:                                              //
00653   //                                                                     //
00654   /////////////////////////////////////////////////////////////////////////
00655 
00656   void viewStructure(ostream& ostr) const;  // overrides SMObject
00657 
00658   /////////////////////////////////////////////////////////////////////////
00659   //                                                                     //
00660   // Accessors:                                                          //
00661   //                                                                     //
00662   /////////////////////////////////////////////////////////////////////////
00663 
00664   SMSubgroup& getTestSubgroup(); 
00665   
00666   /////////////////////////////////////////////////////////////////////////
00667   //                                                                     //
00668   // Control:                                                            //
00669   //                                                                     //
00670   /////////////////////////////////////////////////////////////////////////
00671 
00672   void takeControl( );         // overrides ComputationManager
00673 
00674   /////////////////////////////////////////////////////////////////////////
00675   //                                                                     //
00676   // State Transitions:                                                  //
00677   //                                                                     //
00678   /////////////////////////////////////////////////////////////////////////
00679 
00680   void start( );               // overrides ComputationManager
00681 
00682   void terminate( );           // overrides ComputationManager
00683 
00684 
00685 private:
00686 
00687   /////////////////////////////////////////////////////////////////////////
00688   //                                                                     //
00689   // Data Members:                                                       //
00690   //                                                                     //
00691   /////////////////////////////////////////////////////////////////////////
00692 
00693   SMSubgroup& theSubgroup;
00694   Bool done;
00695   Bool term;
00696   
00697   Subordinate<SGPresentationProblem,ApproxMethod> am;
00698   Subordinate<SGPresentationProblem,TCMethod> tcm;
00699   MirrorSubordinate sgToddCoxeter;
00700 };
00701 
00702 
00703 //--------------------------------SGRewriteWordProblem--------------------//
00704 
00705 class RewriteWordARCer : public ARCer
00706 {
00707 public:
00708 
00709   /////////////////////////////////////////////////////////////////////////
00710   //                                                                     //
00711   // Constructors:                                                       //
00712   //                                                                     //
00713   /////////////////////////////////////////////////////////////////////////
00714   
00715   RewriteWordARCer( ComputationManager& boss ) 
00716     : ARCer( boss ),
00717       retValue(),
00718       theWord(),
00719       F(),
00720       rank( 0 ),
00721       tmpOutput(),
00722       pr(NULL)
00723     { } 
00724   
00725   void setArguments(const PermutationRepresentation&,
00726                     const FreeGroup&,const Word&);
00727   
00728   Chars tmpOutputFilename();
00729   
00730   int getRank();
00731   
00732   Word getRepresentative();
00733   
00734   Word rewrite(const PermutationRepresentation&,const VectorOf<Word>&,
00735                const FreeGroup& F,const Word&,bool);
00736   
00737   /////////////////////////////////////////////////////////////////////////
00738   //                                                                     //
00739   // Accessors:                                                          //
00740   //                                                                     //
00741   /////////////////////////////////////////////////////////////////////////
00742 
00743   Word getRetValue() const{ return retValue; }
00744 
00745   // Inherited from ARCer:
00746   // bool takeControl( );
00747  
00748   /////////////////////////////////////////////////////////////////////////
00749   //                                                                     //
00750   // IPC interaction members:                                            //
00751   //                                                                     //
00752   /////////////////////////////////////////////////////////////////////////
00753 
00754   void runComputation( );
00755  
00756   void writeResults( ostream& );
00757 
00758   void readResults( istream& );
00759 
00760   
00761 private:
00762 
00763   /////////////////////////////////////////////////////////////////////////
00764   //                                                                     //
00765   // Data Members:                                                       //
00766   //                                                                     //
00767   /////////////////////////////////////////////////////////////////////////
00768 
00769   Word retValue;
00770   Word theWord;
00771   FreeGroup F;
00772   int rank;
00773   File tmpOutput;
00774   PermutationRepresentation* pr;
00775 };
00776 
00777 class SGRewriteWordProblem : public Supervisor
00778 {
00779 public:
00780 
00781   /////////////////////////////////////////////////////////////////////////
00782   //                                                                     //
00783   // Constructors:                                                       //
00784   //                                                                     //
00785   /////////////////////////////////////////////////////////////////////////
00786 
00787   SGRewriteWordProblem(SMSubgroup& s,SMWord& w);
00788 
00789   /////////////////////////////////////////////////////////////////////////
00790   //                                                                     //
00791   // Front End Interfacing:                                              //
00792   //                                                                     //
00793   /////////////////////////////////////////////////////////////////////////
00794 
00795   void viewStructure(ostream& ostr) const;  // overrides SMObject
00796 
00797   /////////////////////////////////////////////////////////////////////////
00798   //                                                                     //
00799   // Control:                                                            //
00800   //                                                                     //
00801   /////////////////////////////////////////////////////////////////////////
00802 
00803   void takeControl( );         // overrides ComputationManager
00804 
00805   /////////////////////////////////////////////////////////////////////////
00806   //                                                                     //
00807   // State Transitions:                                                  //
00808   //                                                                     //
00809   /////////////////////////////////////////////////////////////////////////
00810 
00811   void start( ) { }              // overrides ComputationManager
00812 
00813   void terminate( ) { }          // overrides ComputationManager
00814 
00815 
00816 private:
00817 
00818   /////////////////////////////////////////////////////////////////////////
00819   //                                                                     //
00820   // Data Members:                                                       //
00821   //                                                                     //
00822   /////////////////////////////////////////////////////////////////////////
00823 
00824   SMWord& theWord;
00825   SMSubgroup& theSubgroup;
00826   bool init;
00827   
00828   RewriteWordARCer arcer;
00829   MirrorSubordinate sgToddCoxeter;
00830   
00831 };
00832 
00833 #endif
00834 
00835 
00836 
00837 
00838 

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