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

/magnus/back_end/SessionManager/include/SMEqSystem.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: SMEqSystem.h,v 1.2 2000/02/28 22:00:41 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 SEIC, SMEqSystem classes.
00009 //
00010 // Principal Authors: Denis Serbin
00011 //
00012 // Status: In progress
00013 //
00014 // Revision History:
00015 //
00016 // Special Notes:
00017 //
00018 //
00019 
00020 #ifndef _SMEQSYSTEM_H_
00021 #define _SMEQSYSTEM_H_
00022 
00023 #include "AlgebraicObject.h"
00024 #include "SMFPGroup.h"
00025 #include "Word.h"
00026 
00027 
00028 //---------------------------------------------------------------------------//
00029 //-------------------------------- SEIC -------------------------------------//
00030 //---------------------------------------------------------------------------//
00031 
00032 class SEIC : protected FEData
00033 {
00034 public:
00035   /////////////////////////////////////////////////////////////////////////
00036   //                                                                     //
00037   // Constructors:                                                       //
00038   //                                                                     //
00039   /////////////////////////////////////////////////////////////////////////
00040   
00041   SEIC(OID eqs_oid);
00042 
00043   ~SEIC( );
00044 
00045   /////////////////////////////////////////////////////////////////////////
00046   //                                                                     //
00047   // Reporting Information:                                              //
00048   //                                                                     //
00049   /////////////////////////////////////////////////////////////////////////
00050 
00051   void putIsSolvedInAbelianization() {
00052     solvedInAbelian = yes;
00053   }
00054   
00055   void putHaveSolutionsInAbelianization( bool sol ) { 
00056     haveSolInAbelian = sol; 
00057   }
00058 
00059   void putIsSolved() {
00060     solved = yes;
00061   }
00062   
00063   void putHaveSolutions( bool sol ) { 
00064     haveSol = sol; 
00065   }
00066   
00067   /////////////////////////////////////////////////////////////////////////
00068   //                                                                     //
00069   // Accessing Information:                                              //
00070   //                                                                     //
00071   /////////////////////////////////////////////////////////////////////////
00072 
00073   bool isSolvedInAbelianization() const { 
00074     return solvedInAbelian; 
00075   }
00076   
00077   bool haveSolutionsInAbelianization( ) const { 
00078     return haveSolInAbelian; 
00079   }
00080 
00081   bool isSolved() const { 
00082     return solved; 
00083   }
00084   
00085   bool haveSolutions( ) const { 
00086     return haveSol; 
00087   }
00088   
00089  
00090 private:
00091   
00092   SEIC(const SEIC&); // Disable copying
00093 
00094   
00095   /////////////////////////////////////////////////////////////////////////
00096   //                                                                     //
00097   // Data Members:                                                       //
00098   //                                                                     //
00099   /////////////////////////////////////////////////////////////////////////
00100 
00101   OID eqSystemOID;
00102   // Need this for composing messages about what has been found.
00103 
00104   bool solvedInAbelian;
00105   bool haveSolInAbelian;
00106   bool solved;
00107   bool haveSol;
00108 };
00109 
00110 //---------------------------------------------------------------------------//
00111 //----------------------------- SMEqSystem ----------------------------------//
00112 //---------------------------------------------------------------------------//
00113 
00114 class SMEqSystem : public AlgebraicObject
00115 {
00116 public:
00117 
00118   /////////////////////////////////////////////////////////////////////////
00119   //                                                                     //
00120   // Constructors:                                                       //
00121   //                                                                     //
00122   /////////////////////////////////////////////////////////////////////////
00123 
00124   SMEqSystem( SMFPGroup& G, FreeGroup F, const VectorOf<Word> v, int nvar, 
00125               const Chars heritage);
00126   
00127   SMEqSystem( SMFPGroup& G ) 
00128     : AlgebraicObject(""), 
00129       theGroup(G), 
00130       seic( oid() ) 
00131     { }
00132   
00133   //@rn Bogus ctor; see `But no' comment in Menu.h.
00134 
00135   /////////////////////////////////////////////////////////////////////////
00136   //                                                                     //
00137   // Accessors:                                                          //
00138   //                                                                     //
00139   /////////////////////////////////////////////////////////////////////////
00140 
00141   VectorOf<Word> getSystem( ) const { return theSystem; };
00142 
00143   SMFPGroup& getParent( ) const { return theGroup; };
00144 
00145   const FreeGroup& getFreeGroup( ) const { return theFreeGroup; };
00146 
00147   int numberOfVariables( ) const { return numOfVar; };
00148 
00149   /////////////////////////////////////////////////////////////////////////
00150   //                                                                     //
00151   // Front End Interfacing:                                              //
00152   //                                                                     //
00153   /////////////////////////////////////////////////////////////////////////
00154 
00155   static const char* type( ) { return "SMEqSystem"; };
00156 
00157   const char* typeID( ) const { return type(); };        // overrides SMObject
00158 
00159   const IconID iconID( ) const { return IconID::systemOfEquations; };
00160   // overrides SMObject
00161 
00162   void viewStructure(ostream& ostr) const;              // overrides SMObject
00163 
00164   void printProperties(ostream& ostr) const;            // overrides SMObject
00165 
00166   void printDefinition(ostream& ostr) const;            // overrides SMObject
00167 
00168 
00169 public:
00170 
00171   SEIC seic; 
00172   // equation information center.
00173 
00174 protected:
00175 
00176   /////////////////////////////////////////////////////////////////////////
00177   //                                                                     //
00178   // Restricted Access:                                                  //
00179   //                                                                     //
00180   /////////////////////////////////////////////////////////////////////////
00181 
00182   void readMessage(istream&) { };                     // overrides SMObject
00183 
00184 
00185 private:
00186 
00187   /////////////////////////////////////////////////////////////////////////
00188   //                                                                     //
00189   // Data Members:                                                       //
00190   //                                                                     //
00191   /////////////////////////////////////////////////////////////////////////
00192 
00193   SMFPGroup& theGroup;
00194   // The group that this equation is over.
00195 
00196   FreeGroup theFreeGroup;
00197   // The free group generated by theGroup's generators, along with the
00198   // variables.
00199 
00200   VectorOf<Word> theSystem;
00201   // A Word in theFreeGroup, represents the equation.
00202 
00203   int numOfVar;
00204   // a number of variables
00205 
00206 };
00207 
00208 #endif

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