PolyBoRi
HasTRepOrExtendedProductCriterion.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_HasTRepOrExtendedProductCriterion_h_
17 #define polybori_groebner_HasTRepOrExtendedProductCriterion_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 #include "GroebnerStrategy.h"
22 
24 
25 
26 inline bool
28  //BooleMonomial m;
30 
32  //if (res)
33  // cout<<"EXTENDED PRODUCT_CRIT";
34  return res;
35 }
36 
37 
43 public:
45  int j;
47  this->strat=&strat;
48  this->j=j;
49  }
50  bool operator() (const Monomial &m){
51  int i = strat->generators.index(m);
52 
53  if (strat->pairs.status.hasTRep(i,j))
54  return true;
55 
56  if (extended_product_criterion(const_cast<const GroebnerStrategy*>(strat)->generators[i],const_cast<const GroebnerStrategy*>(strat)->generators[j])){
57  strat->pairs.status.setToHasTRep(i,j);
59  return true;
60  }
61  return false;
62  }
63  bool operator() (const Exponent &m){
64  int i;
65  i=strat->generators.index(m);
66 
67  if (strat->pairs.status.hasTRep(i,j))
68  return true;
69 
70  if (extended_product_criterion(const_cast<const GroebnerStrategy*>(strat)->generators[i],const_cast<const GroebnerStrategy*>(strat)->generators[j])){
71  strat->pairs.status.setToHasTRep(i,j);
73  return true;
74  }
75  return false;
76  }
77 
78 };
79 
81 
82 #endif /* polybori_HasTRepOrExtendedProductCriterion_h_ */
deg_type deg() const
Degree of the monomial.
Definition: BooleMonomial.h:146
deg_type common_literal_factors_deg(const LiteralFactorization &a, const LiteralFactorization &b)
Definition: LiteralFactorization.cc:319
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
self GCD(const self &) const
Compute the greatest common divisor.
Definition: BooleMonomial.cc:169
size_type index(const KeyType &key) const
Retrieve index associated to key.
Definition: PolyEntryVector.h:99
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
This class defines HasTRepOrExtendedProductCriterion.
Definition: HasTRepOrExtendedProductCriterion.h:42
HasTRepOrExtendedProductCriterion(GroebnerStrategy &strat, int j)
Definition: HasTRepOrExtendedProductCriterion.h:46
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
This class defines PolyEntry.
Definition: PolyEntry.h:32
PairStatusSet status
Definition: PairManager.h:75
ReductionStrategy generators
Definition: GroebnerStrategy.h:204
int j
Definition: HasTRepOrExtendedProductCriterion.h:45
LiteralFactorization literal_factors
Definition: PolyEntryBase.h:53
This class defines GroebnerStrategy.
Definition: GroebnerStrategy.h:41
void setToHasTRep(int ia, int ja)
Definition: PairStatusSet.h:39
bool hasTRep(int ia, int ja) const
Definition: PairStatusSet.h:33
PairManagerWithStrategy< strategy_type > pairs
For compatibility reasons make this a public member.
Definition: PairManagerFacade.h:95
int extendedProductCriterions
Definition: GroebnerStrategy.h:215
Monomial lead
Definition: PolyEntryBase.h:55
bool extended_product_criterion(const PolyEntry &m, const PolyEntry &m2)
Definition: HasTRepOrExtendedProductCriterion.h:27
This class is just a wrapper for using variables from cudd's decicion diagram.
Definition: BooleMonomial.h:50
GroebnerStrategy * strat
Definition: HasTRepOrExtendedProductCriterion.h:44