00001 #ifndef mmx_realroot_monomial_ordering_hpp
00002 #define mmx_realroot_monomial_ordering_hpp
00003
00029 namespace mmx {
00030
00032 struct MonomialOrdering {
00033 virtual bool less(const int *m1, int s1, const int *m2, int s2) const =0;
00034 virtual ~MonomialOrdering () {}
00035 };
00036
00038 struct DegRevLex: public MonomialOrdering {
00039 bool less(const int *m1, int s1, const int *m2, int s2) const;
00040 };
00041
00042 struct LexRevDegree: public MonomialOrdering {
00043 bool less(const int *m1, int s1, const int *m2, int s2) const;
00044 };
00045
00047 struct Lex: public MonomialOrdering {
00048 bool less(const int *m1, int s1, const int *m2, int s2) const;
00049 };
00050
00051
00052 }
00053 #endif //mmx_realroot_monomial_ordering_hpp