PolyBoRi
CheckChainCriterion.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_groebner_CheckChainCriterion_h_
17 #define polybori_groebner_CheckChainCriterion_h_
18 
19 // include basic definitions
20 #include "groebner_defs.h"
21 
23 
29 template <class StrategyType>
31 public:
32  typedef StrategyType strategy_type;
33 
34  CheckChainCriterion(strategy_type& strategy, PairStatusSet& status):
35  m_strategy(strategy), m_status(status) {}
36 
38  bool operator()(const Pair& current) {
39  switch (current.getType()) {
40  case IJ_PAIR: return compute(current.ijPair(), current.lm);
41  case VARIABLE_PAIR: return compute(current.variablePair());
42  }
43  return false;
44  }
45 
46 protected:
47  bool compute(const IJPairData& ij, const Exponent& exp) {
48  return m_status.hasTRep(ij.i, ij.j) ||
49  checkPairCriteria(exp, ij.i, ij.j);
50  }
51 
52  bool compute(const VariablePairData& vp) {
53  return m_strategy.checkVariableCriteria(vp.i, vp.v);
54  }
55 
56  bool checkPairCriteria(const Exponent& exp, int i, int j) {
57  if (m_strategy.checkPairCriteria(exp, i, j)) {
58  m_status.setToHasTRep(i, j);
59  return true;
60  }
61  return false;
62  }
63 
64 private:
65  strategy_type& m_strategy;
66  PairStatusSet& m_status;
67 };
68 
70 
71 #endif /* polybori_groebner_CheckChainCriterion_h_ */
const IJPairData & ijPair() const
Definition: PairE.h:85
This class is just a wrapper for using variables for storing indices as interim data structure for Bo...
Definition: BooleExponent.h:34
idx_type v
Definition: VariablePairData.h:31
#define END_NAMESPACE_PBORIGB
Definition: groebner_defs.h:16
Definition: PairLS.h:29
This class defines IJPairData.
Definition: IJPairData.h:28
bool compute(const VariablePairData &vp)
Definition: CheckChainCriterion.h:52
int i
Definition: VariablePairData.h:30
This class defines VariablePairData.
Definition: VariablePairData.h:28
Exponent lm
Definition: PairE.h:40
#define BEGIN_NAMESPACE_PBORIGB
Definition: groebner_defs.h:15
This class defines PairE.
Definition: PairE.h:28
const VariablePairData & variablePair() const
Definition: PairE.h:90
Definition: PairLS.h:28
This class defines CheckChainCriterion.
Definition: CheckChainCriterion.h:30
int getType() const
Definition: PairE.h:32
bool checkPairCriteria(const Exponent &exp, int i, int j)
Definition: CheckChainCriterion.h:56
int i
Definition: IJPairData.h:30
bool compute(const IJPairData &ij, const Exponent &exp)
Definition: CheckChainCriterion.h:47
bool operator()(const Pair &current)
Clean up current and return whether it has a T-representation.
Definition: CheckChainCriterion.h:38
This class defines PairStatusSet.
Definition: PairStatusSet.h:30
CheckChainCriterion(strategy_type &strategy, PairStatusSet &status)
Definition: CheckChainCriterion.h:34
StrategyType strategy_type
Definition: CheckChainCriterion.h:32
int j
Definition: IJPairData.h:31