32 Slice(strategy, ideal, subtract, multiply),
44 if (!
getLcm().isSquareFree())
104 bound.
gcd(bound, *it);
virtual void consume(const Polynomial &poly)
void computeCoefficient(Ideal &ideal)
const mpz_class & getLastCoefficient()
void setToProjOf(const Slice &slice, const Projection &projection, CoefTermConsumer *consumer)
virtual bool getLowerBound(Term &bound, size_t var) const
Calculates a lower bound that depends on var.
virtual bool baseCase(bool simplified)
Returns true if this slice is a base case slice, and in that case produces output in a derivative-spe...
virtual Slice & operator=(const Slice &slice)
Performs a deep copy of slice into this object.
virtual bool simplifyStep()
Like simplify(), except that only one simplification step is performed.
HilbertSlice(HilbertStrategy &strategy)
CoefTermConsumer * _consumer
void swap(HilbertSlice &slice)
Represents a monomial ideal with int exponents.
Cont::const_iterator const_iterator
const_iterator end() const
This class represents a slice, which is the central data structure of the Slice Algorithm.
size_t _varCount
The number of variables in the ambient polynomial ring.
Ideal _ideal
The of a slice .
virtual Slice & operator=(const Slice &slice)=0
Performs a deep copy of slice into this object.
const Ideal & getIdeal() const
Returns for a slice .
void setToProjOf(const Slice &slice, const Projection &projection)
Set this object to be the projection of slice according to projection.
void swap(Slice &slice)
Simultaneously set the value of this object to that of slice and vice versa.
bool pruneSubtract()
Removes those generators of subtract that do not strictly divide the lcm of getIdeal(),...
void clearIdealAndSubtract()
Clears getIdeal() and getSubtract() and does not change getMultiply().
bool applyLowerBound()
Calculates a lower bound on the content of the slice using getLowerBound() and calls innerSlice with ...
Term & getMultiply()
Returns for a slice .
const Term & getLcm() const
Returns the least common multiple of the generators of getIdeal().
Term represents a product of variables which does not include a coefficient.
static void decrement(Exponent *a, size_t varCount)
Decrements each positive entry of a by one.
static void gcd(Exponent *res, const Exponent *a, const Exponent *b, size_t varCount)
Sets res equal to the greatest common divisor of a and b.
size_t getSizeOfSupport(const Word *a, size_t varCount)
void swap(hashtable< _Val, _Key, _HF, _Extract, _EqKey, _All > &__ht1, hashtable< _Val, _Key, _HF, _Extract, _EqKey, _All > &__ht2)