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