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

/magnus/back_end/SMApps/include/KernelPresentation.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: KernelPresentation.h,v 1.2 2000/02/28 21:57:14 bormotov Exp $
00003  */
00004 
00005 // Copyright (C) 2000 The New York Group Theory Cooperative
00006 // See magnus/doc/COPYRIGHT for the full notice.
00007 
00008 // Contents: Declaration of the FPNewPresentationARCer, 
00009 //           FPNewPresentationProblem, FPImagePresentationARCer, 
00010 //           FPImagePresentationCM, FPKernelPresentationARCer,
00011 //           FPKernelPresentationCM, KBSupervisorCM,
00012 //           FPKernelPresentationProblem
00013 //           classes.
00014 //
00015 // Principal Authors: Denis Serbin
00016 //
00017 // Status: In progress
00018 //
00019 // Revision History:
00020 //
00021 // Special Notes:
00022 //
00023 //
00024 
00025 #ifndef _KernelPresentationProblem_H_
00026 #define _KernelPresentationProblem_H_
00027 
00028 #include "Supervisor.h"
00029 #include "KBModule.h"
00030 #include "FEData.h"
00031 #include "Word.h"
00032 #include "FPGroup.h"
00033 #include "SMVectorOfWords.h"
00034 #include "Chars.h"
00035 #include "PresentationProblems.h"
00036 
00037 
00038 //---------------------------FPNewPresentationARCer--------------------------//
00039 
00040 class FPNewPresentationARCer : public ARCer 
00041 {
00042 public:
00043   
00044   /////////////////////////////////////////////////////////////////////////
00045   //                                                                     //
00046   // Constructors:                                                       //
00047   //                                                                     //
00048   /////////////////////////////////////////////////////////////////////////
00049 
00050   FPNewPresentationARCer( ComputationManager& boss ) : 
00051     ARCer( boss ),
00052     dntg( false )
00053     { } 
00054 
00055   /////////////////////////////////////////////////////////////////////////
00056   //                                                                     //
00057   // Accessors:                                                          //
00058   //                                                                     //
00059   /////////////////////////////////////////////////////////////////////////
00060 
00061   void setArguments( const KBMachine& kb , 
00062                      const FPGroup& g , 
00063                      const VectorOf<Word>& y );
00064   
00065   FPGroup getRetValue() { return retValue; }
00066   
00067   bool doesntGenerate() { return dntg; }
00068   
00069   // Inherited from ARCer:
00070   // bool takeControl( );
00071 
00072 
00073   /////////////////////////////////////////////////////////////////////////
00074   //                                                                     //
00075   // IPC interaction members:                                            //
00076   //                                                                     //
00077   /////////////////////////////////////////////////////////////////////////
00078 
00079   void runComputation( );
00080  
00081   void writeResults( ostream& );
00082 
00083   void readResults( istream& );
00084 
00085   
00086 private:
00087 
00088   /////////////////////////////////////////////////////////////////////////
00089   //                                                                     //
00090   // Data Members:                                                       //
00091   //                                                                     //
00092   /////////////////////////////////////////////////////////////////////////
00093 
00094   NewPresentation N;
00095   FPGroup G;
00096   VectorOf<Word> newGens;
00097   bool dntg;
00098   
00099   FPGroup retValue;
00100 };
00101 
00102 // -----------------------FPNewPresentationProblem-------------------------- //
00103 
00104 
00105 class FPNewPresentationProblem : public Supervisor
00106 {
00107 public:
00108 
00109   /////////////////////////////////////////////////////////////////////////
00110   //                                                                     //
00111   // Constructors:                                                       //
00112   //                                                                     //
00113   /////////////////////////////////////////////////////////////////////////
00114 
00115   FPNewPresentationProblem( class SMVectorOfWords& );
00116 
00117   /////////////////////////////////////////////////////////////////////////
00118   //                                                                     //
00119   // Accessors:                                                          //
00120   //                                                                     //
00121   /////////////////////////////////////////////////////////////////////////
00122 
00123   /////////////////////////////////////////////////////////////////////////
00124   //                                                                     //
00125   // Front End Interfacing:                                              //
00126   //                                                                     //
00127   /////////////////////////////////////////////////////////////////////////
00128 
00129   void viewStructure(ostream& ostr) const;  // overrides SMObject
00130 
00131   /////////////////////////////////////////////////////////////////////////
00132   //                                                                     //
00133   // Control:                                                            //
00134   //                                                                     //
00135   /////////////////////////////////////////////////////////////////////////
00136 
00137   void takeControl( );         // overrides ComputationManager
00138 
00139   /////////////////////////////////////////////////////////////////////////
00140   //                                                                     //
00141   // State Transitions:                                                  //
00142   //                                                                     //
00143   /////////////////////////////////////////////////////////////////////////
00144 
00145   void start( ) { }              // overrides ComputationManager
00146 
00147   void terminate( ) { }          // overrides ComputationManager
00148 
00149 
00150 private:
00151 
00152   /////////////////////////////////////////////////////////////////////////
00153   //                                                                     //
00154   // Data Members:                                                       //
00155   //                                                                     //
00156   /////////////////////////////////////////////////////////////////////////
00157 
00158   SMVectorOfWords& theVector;
00159   
00160   bool init;
00161   
00162   FPNewPresentationARCer arcer;
00163 
00164   MirrorSubordinate kbSupervisor;
00165 };
00166 
00167 
00168 
00169 //-------------------------FPImagePresentationARCer-------------------------//
00170 
00171 class FPImagePresentationARCer : public ARCer 
00172 {
00173 public:
00174   
00175   /////////////////////////////////////////////////////////////////////////
00176   //                                                                     //
00177   // Constructors:                                                       //
00178   //                                                                     //
00179   /////////////////////////////////////////////////////////////////////////
00180   
00181   FPImagePresentationARCer( ComputationManager& boss ) : 
00182     ARCer( boss ) 
00183     { } 
00184   
00185   /////////////////////////////////////////////////////////////////////////
00186   //                                                                     //
00187   // Accessors:                                                          //
00188   //                                                                     //
00189   /////////////////////////////////////////////////////////////////////////
00190   
00191   void setArguments( const FPGroup& preimage, const FPGroup& image, 
00192                      const VectorOf<Word>& y );
00193   
00194   FPGroup getRetValue() 
00195     { return retValue; }
00196   
00197   VectorOf<Word> getVectorOfImages()
00198     { return newImages; }
00199   
00200   // Inherited from ARCer:
00201   // bool takeControl( );
00202 
00203 
00204   /////////////////////////////////////////////////////////////////////////
00205   //                                                                     //
00206   // IPC interaction members:                                            //
00207   //                                                                     //
00208   /////////////////////////////////////////////////////////////////////////
00209 
00210   void runComputation( );
00211   
00212   void writeResults( ostream& );
00213   
00214   void readResults( istream& );
00215 
00216   
00217 private:
00218 
00219   /////////////////////////////////////////////////////////////////////////
00220   //                                                                     //
00221   // Data Members:                                                       //
00222   //                                                                     //
00223   /////////////////////////////////////////////////////////////////////////
00224 
00225   ImageOfHom Im;
00226   
00227   VectorOf<Word> newImages;
00228   FPGroup retValue;
00229 };
00230 
00231 //---------------------------FPImagePresentationCM--------------------------//
00232 
00233 class FPImagePresentationCM : public ComputationManager
00234 {
00235 public:
00236   
00237   /////////////////////////////////////////////////////////////////////////
00238   //                                                                     //
00239   // Constructors:                                                       //
00240   //                                                                     //
00241   /////////////////////////////////////////////////////////////////////////
00242   
00243   FPImagePresentationCM( class FPKernelPresentationProblem& );
00244   
00245   /////////////////////////////////////////////////////////////////////////
00246   //                                                                     //
00247   // Accessors:                                                          //
00248   //                                                                     //
00249   /////////////////////////////////////////////////////////////////////////
00250 
00251   VectorOf<Word> getVectorOfImages()
00252     { return im; }
00253   
00254   FPGroup getImage()
00255     { return G; }
00256   
00257   /////////////////////////////////////////////////////////////////////////
00258   //                                                                     //
00259   // Control:                                                            //
00260   //                                                                     //
00261   /////////////////////////////////////////////////////////////////////////
00262   
00263   void takeControl( );         // overrides ComputationManager
00264 
00265   /////////////////////////////////////////////////////////////////////////
00266   //                                                                     //
00267   // State Transitions:                                                  //
00268   //                                                                     //
00269   /////////////////////////////////////////////////////////////////////////
00270 
00271   void start( ) { }              // overrides ComputationManager
00272   
00273   void terminate( ) { }          // overrides ComputationManager
00274 
00275 
00276 private:
00277 
00278   /////////////////////////////////////////////////////////////////////////
00279   //                                                                     //
00280   // Data Members:                                                       //
00281   //                                                                     //
00282   /////////////////////////////////////////////////////////////////////////
00283 
00284   SMHomomorphism2& theMap;
00285   FPGroup G;
00286   VectorOf<Word> im;
00287 
00288   FPImagePresentationARCer arcer;
00289 };
00290 
00291 
00292 //-------------------------FPKernelPresentationARCer-------------------------//
00293 
00294 class FPKernelPresentationARCer : public ARCer 
00295 {
00296 public:
00297   
00298   /////////////////////////////////////////////////////////////////////////
00299   //                                                                     //
00300   // Constructors:                                                       //
00301   //                                                                     //
00302   /////////////////////////////////////////////////////////////////////////
00303 
00304   FPKernelPresentationARCer( ComputationManager& boss ) 
00305     : ARCer( boss ) 
00306     { } 
00307 
00308   /////////////////////////////////////////////////////////////////////////
00309   //                                                                     //
00310   // Accessors:                                                          //
00311   //                                                                     //
00312   /////////////////////////////////////////////////////////////////////////
00313 
00314   void setArguments( const KBMachine& kb , const FPGroup& preimage , 
00315                      const FPGroup& image , const VectorOf<Word>& y );
00316   
00317   FPGroup getRetValue() { return retValue; }
00318 
00319   // Inherited from ARCer:
00320   // bool takeControl( );
00321 
00322 
00323   /////////////////////////////////////////////////////////////////////////
00324   //                                                                     //
00325   // IPC interaction members:                                            //
00326   //                                                                     //
00327   /////////////////////////////////////////////////////////////////////////
00328 
00329   void runComputation( );
00330  
00331   void writeResults( ostream& );
00332 
00333   void readResults( istream& );
00334 
00335   
00336 private:
00337 
00338   /////////////////////////////////////////////////////////////////////////
00339   //                                                                     //
00340   // Data Members:                                                       //
00341   //                                                                     //
00342   /////////////////////////////////////////////////////////////////////////
00343 
00344   KernelOfHom K;
00345 
00346   FPGroup retValue;
00347 };
00348 
00349 //-------------------------FPKernelPresentationCM---------------------------//
00350 
00351 class FPKernelPresentationCM : public ComputationManager
00352 {
00353 public:
00354   
00355   /////////////////////////////////////////////////////////////////////////
00356   //                                                                     //
00357   // Constructors:                                                       //
00358   //                                                                     //
00359   /////////////////////////////////////////////////////////////////////////
00360 
00361   FPKernelPresentationCM( class FPKernelPresentationProblem& );
00362 
00363   /////////////////////////////////////////////////////////////////////////
00364   //                                                                     //
00365   // Accessors:                                                          //
00366   //                                                                     //
00367   /////////////////////////////////////////////////////////////////////////
00368   
00369   void setFlag( bool f )
00370     { flag = f; }
00371   
00372   FPGroup getResult()
00373     { return result; }
00374 
00375   /////////////////////////////////////////////////////////////////////////
00376   //                                                                     //
00377   // Control:                                                            //
00378   //                                                                     //
00379   /////////////////////////////////////////////////////////////////////////
00380   
00381   void takeControl( );         // overrides ComputationManager
00382 
00383   /////////////////////////////////////////////////////////////////////////
00384   //                                                                     //
00385   // State Transitions:                                                  //
00386   //                                                                     //
00387   /////////////////////////////////////////////////////////////////////////
00388 
00389   void start( ) { }              // overrides ComputationManager
00390   
00391   void terminate( ) { }          // overrides ComputationManager
00392 
00393 
00394 private:
00395 
00396   /////////////////////////////////////////////////////////////////////////
00397   //                                                                     //
00398   // Data Members:                                                       //
00399   //                                                                     //
00400   /////////////////////////////////////////////////////////////////////////
00401 
00402   FPKernelPresentationProblem& KPP;
00403   bool init;
00404   bool flag;
00405   FPGroup result;
00406   
00407   FPKernelPresentationARCer arcer;
00408 };
00409 
00410 //----------------------------KBSupervisorCM---------------------------------//
00411 
00412 class KBSupervisorCM : public ComputationManager
00413 {
00414 public:
00415 
00416   /////////////////////////////////////////////////////////////////////////
00417   //                                                                     //
00418   // Constructors:                                                       //
00419   //                                                                     //
00420   /////////////////////////////////////////////////////////////////////////
00421 
00422   KBSupervisorCM( class FPKernelPresentationProblem& );
00423     
00424   /////////////////////////////////////////////////////////////////////////
00425   //                                                                     //
00426   // Accessors:                                                          //
00427   //                                                                     //
00428   /////////////////////////////////////////////////////////////////////////
00429 
00430   void setFlag( bool f )
00431     { flag = f; }
00432   
00433   /////////////////////////////////////////////////////////////////////////
00434   //                                                                     //
00435   // Front End Interfacing:                                              //
00436   //                                                                     //
00437   /////////////////////////////////////////////////////////////////////////
00438 
00439   void viewStructure(ostream& ostr) const { }  // overrides SMObject
00440 
00441   /////////////////////////////////////////////////////////////////////////
00442   //                                                                     //
00443   // Control:                                                            //
00444   //                                                                     //
00445   /////////////////////////////////////////////////////////////////////////
00446 
00447   void takeControl( );         // overrides ComputationManager
00448 
00449   /////////////////////////////////////////////////////////////////////////
00450   //                                                                     //
00451   // State Transitions:                                                  //
00452   //                                                                     //
00453   /////////////////////////////////////////////////////////////////////////
00454 
00455   void start( ) { }              // overrides ComputationManager
00456 
00457   void terminate( ) { }          // overrides ComputationManager
00458 
00459   
00460 private:
00461 
00462   /////////////////////////////////////////////////////////////////////////
00463   //                                                                     //
00464   // Data Members:                                                       //
00465   //                                                                     //
00466   /////////////////////////////////////////////////////////////////////////
00467 
00468   FPKernelPresentationProblem& KPP;
00469   bool init;
00470   bool flag;
00471   
00472   KBSupervisorARCer arcer;
00473 };
00474 
00475 
00476 // -----------------------FPKernelPresentationProblem----------------------- //
00477 
00478 class FPKernelPresentationProblem : public Supervisor
00479 {
00480 public:
00481 
00482   /////////////////////////////////////////////////////////////////////////
00483   //                                                                     //
00484   // Constructors:                                                       //
00485   //                                                                     //
00486   /////////////////////////////////////////////////////////////////////////
00487 
00488   FPKernelPresentationProblem( class SMHomomorphism2& );
00489 
00490   /////////////////////////////////////////////////////////////////////////
00491   //                                                                     //
00492   // Accessors:                                                          //
00493   //                                                                     //
00494   /////////////////////////////////////////////////////////////////////////
00495   
00496   SMHomomorphism2& getInitialHomo()
00497     { return theMap; }
00498   
00499   SMHomomorphism2& getHomo()
00500     { return *theMap2; }
00501   
00502   /////////////////////////////////////////////////////////////////////////
00503   //                                                                     //
00504   // Front End Interfacing:                                              //
00505   //                                                                     //
00506   /////////////////////////////////////////////////////////////////////////
00507 
00508   void viewStructure(ostream& ostr) const;  // overrides SMObject
00509 
00510   /////////////////////////////////////////////////////////////////////////
00511   //                                                                     //
00512   // Control:                                                            //
00513   //                                                                     //
00514   /////////////////////////////////////////////////////////////////////////
00515 
00516   void takeControl( );         // overrides ComputationManager
00517 
00518   /////////////////////////////////////////////////////////////////////////
00519   //                                                                     //
00520   // State Transitions:                                                  //
00521   //                                                                     //
00522   /////////////////////////////////////////////////////////////////////////
00523 
00524   void start( ) { }              // overrides ComputationManager
00525 
00526   void terminate( ) { }          // overrides ComputationManager
00527 
00528 
00529 private:
00530 
00531   /////////////////////////////////////////////////////////////////////////
00532   //                                                                     //
00533   // Data Members:                                                       //
00534   //                                                                     //
00535   /////////////////////////////////////////////////////////////////////////
00536 
00537   SMHomomorphism2& theMap;
00538   SMHomomorphism2* theMap2;
00539   bool foundImage;
00540   bool foundKB;
00541   
00542   Subordinate<FPKernelPresentationProblem,FPKernelPresentationCM> kernel;
00543   Subordinate<FPKernelPresentationProblem,FPImagePresentationCM> image;
00544   Subordinate<FPKernelPresentationProblem,KBSupervisorCM> kbs;
00545   
00546 };
00547 
00548 #endif

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