ReductionTerms.h
Go to the documentation of this file.
// -*- c++ -*-
//*****************************************************************************
//*****************************************************************************
#ifndef polybori_groebner_ReductionTerms_h_
#define polybori_groebner_ReductionTerms_h_
#include "BoundedDivisorsOf.h"
#include "RelatedTerms.h"
#include "LLReductor.h"
#include "MinimalLeadingTerms.h"
#include "MonomialTerms.h"
#include "LeadingTerms.h"
#include "LeadingTerms00.h"
#include "LeadingTerms11.h"
#include "MonomialPlusOneTerms.h"
#include <polybori/routines/pbori_algo.h> // which
// include basic definitions
#include "groebner_defs.h"
BEGIN_NAMESPACE_PBORIGB
// nf
MonomialSet mod_mon_set(const MonomialSet& as, const MonomialSet &vs);
class ReductionTerms {
typedef ReductionTerms self;
public:
LeadingTerms leadingTerms;
MinimalLeadingTerms minimalLeadingTerms;
LeadingTerms11 leadingTerms11;
LeadingTerms00 leadingTerms00;
LLReductor llReductor;
MonomialTerms monomials;
MonomialPlusOneTerms monomials_plus_one;
ReductionTerms(const BoolePolyRing& ring):
leadingTerms(ring), minimalLeadingTerms(ring),
leadingTerms11(ring), leadingTerms00(ring),
llReductor(ring), monomials(ring), monomials_plus_one(ring) { }
RelatedTerms related(const PolyEntry& entry) const {
MonomialSet empty(entry.p.ring());
bool is00 = entry.literal_factors.is00Factorization();
bool is11 = entry.literal_factors.is11Factorization();
if (!( (is00 && (leadingTerms == leadingTerms00)) ||
(is11 && (leadingTerms == leadingTerms11))) ){
PBORI_ASSERT (entry.p.isOne() || !is00 || !is11);
return RelatedTerms(entry.lead, leadingTerms,
which(is11, leadingTerms11,
is00, leadingTerms00, empty));
}
return RelatedTerms(entry.p.ring());
}
};
END_NAMESPACE_PBORIGB
#endif /* polybori_groebner_ReductionTerms_h_ */
LLReductor.h
polybori::groebner::LeadingTerms11
This class defines LeadingTerms11.
Definition: LeadingTerms11.h:31
polybori::BoolePolynomial::isOne
bool_type isOne() const
Check whether polynomial is constant one.
Definition: BoolePolynomial.h:297
polybori::groebner::MonomialPlusOneTerms
This class defines MonomialPlusOneTerms.
Definition: MonomialPlusOneTerms.h:31
polybori::groebner::ReductionTerms::ReductionTerms
ReductionTerms(const BoolePolyRing &ring)
Initialize term data for given ring.
Definition: ReductionTerms.h:60
polybori::groebner::LiteralFactorization::is11Factorization
bool is11Factorization() const
Definition: LiteralFactorization.cc:400
polybori::groebner::PolyEntryBase::p
Polynomial p
Definition: PolyEntryBase.h:54
END_NAMESPACE_PBORIGB
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
BoundedDivisorsOf.h
polybori::BoolePolynomial::ring
const ring_type & ring() const
Access ring, where this belongs to.
Definition: BoolePolynomial.h:478
polybori::groebner::LiteralFactorization::is00Factorization
bool is00Factorization() const
Definition: LiteralFactorization.cc:408
polybori::groebner::LeadingTerms00
This class defines LeadingTerms00.
Definition: LeadingTerms00.h:32
polybori::BoolePolyRing
This class reinterprets decicion diagram managers as Boolean polynomial rings, adds an ordering and v...
Definition: BoolePolyRing.h:40
MonomialPlusOneTerms.h
BEGIN_NAMESPACE_PBORIGB
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
MinimalLeadingTerms.h
polybori::groebner::PolyEntry
This class defines PolyEntry.
Definition: PolyEntry.h:32
polybori::groebner::ReductionTerms::monomials
MonomialTerms monomials
Definition: ReductionTerms.h:56
polybori::groebner::ReductionTerms::related
RelatedTerms related(const PolyEntry &entry) const
Definition: ReductionTerms.h:67
MonomialTerms.h
polybori::groebner::MonomialSet
polybori::BooleSet MonomialSet
Definition: groebner_defs.h:45
groebner_defs.h
polybori::groebner::ReductionTerms::llReductor
LLReductor llReductor
Definition: ReductionTerms.h:55
RelatedTerms.h
polybori::groebner::mod_mon_set
MonomialSet mod_mon_set(const MonomialSet &as, const MonomialSet &vs)
Definition: nf.cc:855
polybori::groebner::PolyEntryBase::literal_factors
LiteralFactorization literal_factors
Definition: PolyEntryBase.h:53
LeadingTerms11.h
PBORI_ASSERT
#define PBORI_ASSERT(arg)
Definition: pbori_defs.h:118
polybori::groebner::ReductionTerms
This class defines term for ReductionStrategy.
Definition: ReductionTerms.h:46
polybori::groebner::MinimalLeadingTerms
This class defines MinimalLeadingTerms.
Definition: MinimalLeadingTerms.h:29
LeadingTerms00.h
polybori::groebner::MonomialTerms
This class defines MonomialTerms.
Definition: MonomialTerms.h:31
polybori::groebner::ReductionTerms::monomials_plus_one
MonomialPlusOneTerms monomials_plus_one
Definition: ReductionTerms.h:57
polybori::groebner::ReductionTerms::leadingTerms00
LeadingTerms00 leadingTerms00
Definition: ReductionTerms.h:54
polybori::which
const Type & which(bool condition, const Type1 &value1, const Type &value)
Definition: pbori_algo.h:870
polybori::groebner::ReductionTerms::leadingTerms
LeadingTerms leadingTerms
Definition: ReductionTerms.h:51
polybori::groebner::ReductionTerms::leadingTerms11
LeadingTerms11 leadingTerms11
Definition: ReductionTerms.h:53
polybori::groebner::RelatedTerms
This class finds those terms in a given set which are related to given terms.
Definition: RelatedTerms.h:33
polybori::groebner::LeadingTerms
This class defines LeadingTerms.
Definition: LeadingTerms.h:31
polybori::groebner::PolyEntryBase::lead
Monomial lead
Definition: PolyEntryBase.h:55
LeadingTerms.h
polybori::BooleSet
Definition: BooleSet.h:57
pbori_algo.h
polybori::groebner::ReductionTerms::minimalLeadingTerms
MinimalLeadingTerms minimalLeadingTerms
Definition: ReductionTerms.h:52
polybori::groebner::LLReductor
This class defines LLReductor.
Definition: LLReductor.h:34