16 #ifndef polybori_groebner_SlimgbReduction_h_
17 #define polybori_groebner_SlimgbReduction_h_
39 std::priority_queue<Polynomial, std::vector<Polynomial>,
LMLessCompare> to_reduce;
53 template <
int variant>
61 template <
int variant>
65 throw std::runtime_error(
"Empty result in SlimgbReduction.");
75 while (!(to_reduce.empty())){
77 std::vector<Polynomial> curr;
78 curr.push_back(to_reduce.top());
82 while ((!(to_reduce.empty())) && (to_reduce.top().lead()==lm)){
83 curr.push_back(to_reduce.top());
90 int index=strat->generators.select1(lm);
92 Polynomial p_high=(lm/strat->generators[index].lead)*strat->generators[index].p;
98 if (!(curr[i].isZero())){
99 to_reduce.push(curr[i]);
111 if (!(curr[i].isZero())){
113 to_reduce.push(curr[i]);
118 result.push_back(reductor);
122 result.push_back(curr[0]);