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

/magnus/back_end/Equations/include/VertexInfo.h

Go to the documentation of this file.
00001 /*
00002  *   $Id: VertexInfo.h,v 1.1 2000/02/10 09:16:25 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: Definition of class VertexInfo
00009 //
00010 // Principal Author: Copied from Dmitry Pechkin's QEqnSolutions.C
00011 //
00012 // Status: Useable.
00013 //
00014 // Revision History:
00015 //
00016 // Special Notes:
00017 //
00018 // * VertexInfo has been moved to a separate file to ease class
00019 //   template instantiation under gcc 2.95 on Solaris.
00020 
00021 
00022 #ifndef _VertexInfo_H_
00023 #define _VertexInfo_H_
00024 
00025 #include "Word.h"
00026 #include "NielsenTransformations.h"
00027 
00028 
00029 // We can represent elimination process as a directed acyclic graph.
00030 // There is an edge from word A to  word B marked with elementary
00031 // singular endo R if B = R(A).
00032 //
00033 // In fact, the graph is represented as list of VertexInfo structures.
00034 
00035 struct VertexInfo {
00036 
00037   // no default constructor
00038 
00039   VertexInfo(const Word& w, int i, const SingularEndo& se) :
00040     word(w), lastVar(i), eliminator(se) {}
00041 
00042   // copy constructor, operator=, and destructor provided by compiler
00043 
00044   friend inline bool operator==(const VertexInfo& x, const VertexInfo& y) {
00045     return (x.word == y.word && x.lastVar == y.lastVar && x.eliminator == y.eliminator);
00046   }
00047 
00048   friend inline ostream& operator<<(ostream& o, const VertexInfo& x) {
00049     error("called operator<<( ostream&, const VertexInfo& ) "
00050           "which is prohibited");
00051     return o;
00052   }
00053 
00054   // data
00055 
00056   Word word;
00057   // a word with some variables eliminated
00058 
00059   int lastVar;
00060   // last variable eliminated; the word was derived from its parent
00061   // by eliminating lastVar
00062   // this prevents from considering the same vertex twice
00063 
00064   SingularEndo eliminator;
00065   // eliminating endo -- maps the root to the word
00066 };
00067 
00068 #endif

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