00001 #ifndef _REPRING_H_
00002 #define _REPRING_H_
00003
00004 #include "algebras.H"
00005 #include "tables.H"
00006 #include <string>
00007 #include <sstream>
00008 #include <fstream>
00009 #include "my_gmp.H"
00010 using namespace std;
00011
00013
00041 class RepresentationRing : public AugmentedAlgebra<QQ> {
00042 public:
00044 string base_field;
00046 map<long, long> schur_indices;
00048 map< long, Tuple< Polynomial<QQ> > > lambda_operations;
00050 RepresentationRing();
00051
00052 Polynomial<QQ> new_variable(const string& name, const QQ& aug, long index);
00053 virtual void swap_variables_order(long i, long j, list< Polynomial<QQ> >& polys);
00054 virtual void swap_variables_order(long i, long j);
00055 virtual void kill_top_variable(const Polynomial<QQ>& replacement,list< Polynomial<QQ> >& polys);
00056 virtual void kill_top_variable(const Polynomial<QQ>& replacement);
00057
00058
00060
00079 virtual long read_variables(ifstream& thefile, Tuple< Polynomial<QQ> >& thevars);
00081
00103 bool read_from_GAP_file(const string& name);
00104 friend ostream& operator<<(ostream& os, const RepresentationRing& R);
00105
00106 };
00107
00109
00119 class RealRepresentationRing : public RepresentationRing {
00120 public:
00121 map< string, string > conjugates;
00122
00123
00124
00125 RealRepresentationRing();
00127
00165 virtual long read_variables(ifstream& thefile, Tuple< Polynomial<QQ> >& thevars);
00166
00167 };
00168
00169 #endif
00170
00171