00001 // -*- c++ -*- 00002 //***************************************************************************** 00014 //***************************************************************************** 00015 00016 #ifndef polybori_groebner_RelatedTerms_h_ 00017 #define polybori_groebner_RelatedTerms_h_ 00018 00019 #include "RelatedTermsBase.h" 00020 #include <polybori/common/TransformedSequence.h> 00021 00022 // include basic definitions 00023 #include "groebner_defs.h" 00024 00025 BEGIN_NAMESPACE_PBORIGB 00026 00033 class RelatedTerms: 00034 protected RelatedTermsBase { 00035 typedef RelatedTermsBase base; 00036 00037 public: 00038 typedef TransformedSequence<MonomialSet, BoundedDivisorsOf> 00039 divisors_sequence_type; 00040 00042 RelatedTerms(const BoolePolyRing& ring): base(ring) { } 00043 00045 RelatedTerms(const Monomial& lead, const MonomialSet& monomials, 00046 const MonomialSet& ignorable): 00047 base(lead, monomials, ignorable, monomials.diff(ignorable)) { } 00048 00050 const MonomialSet& terms() const { return related_terms(); } 00051 00053 divisors_sequence_type divisors(const MonomialSet& monomials) const { 00054 return divisors_sequence_type(factors(monomials), divisors_of()); 00055 }; 00056 }; 00057 00058 00059 END_NAMESPACE_PBORIGB 00060 00061 #endif /* polybori_groebner_RelatedTerms_h_ */