PolyBoRi
DegOrderHelper.h
Go to the documentation of this file.
00001 // -*- c++ -*-
00002 //*****************************************************************************
00014 //*****************************************************************************
00015 
00016 #ifndef polybori_groebner_DegOrderHelper_h_
00017 #define polybori_groebner_DegOrderHelper_h_
00018 
00019 // include basic definitions
00020 #include "groebner_defs.h"
00021 #include "ReductionStrategy.h"
00022 #include "add_up.h"
00023 
00024 BEGIN_NAMESPACE_PBORIGB
00025 
00030 class DegOrderHelper{
00031     public:
00032     static bool irreducible_lead(const Monomial& m, const ReductionStrategy& strat){
00033       return PBORINAME::groebner::irreducible_lead(m,strat);
00034           }
00035     static Polynomial::ordered_iterator begin(const Polynomial & p){
00036         return p.orderedBegin();
00037     }
00038     static Polynomial::ordered_iterator end(const Polynomial & p){
00039         return p.orderedEnd();
00040     }
00041     static Polynomial nf(const ReductionStrategy& strat, const Polynomial& p, const Monomial& m){
00042         return nf3_degree_order(strat,p,m);
00043     }
00044     typedef Polynomial::ordered_iterator iterator_type;
00045     const static bool isDegreeOrder=true;
00046     const static bool isLexicographicalOrder=false;
00047     static bool knowRestIsIrreducible(const iterator_type& it, const ReductionStrategy & strat){
00048       return false;
00049     }
00050     static Polynomial sum_range(std::vector<Monomial>& vec,iterator_type it, iterator_type end, Polynomial init){
00051       return add_up_generic(vec, init);
00052       }
00053     
00054 };
00055 
00056 END_NAMESPACE_PBORIGB
00057 
00058 #endif /* polybori_DegOrderHelper_h_ */