17 #ifndef MSM_SLICE_GUARD
18 #define MSM_SLICE_GUARD
38 const Ideal& subtract,
49 virtual bool baseCase(
bool simplified);
void swap(MsmSlice &a, MsmSlice &b)
Represents a monomial ideal with int exponents.
Invariant: either the slice is a trivial base case, or removeDoubleLcm returns false.
virtual bool getLowerBound(Term &bound, size_t var) const
Calculates a lower bound that depends on var.
MsmSlice(MsmStrategy &strategy)
TermConsumer * getConsumer()
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...
void setToProjOf(const MsmSlice &slice, const Projection &projection, TermConsumer *consumer)
virtual Slice & operator=(const Slice &slice)
Performs a deep copy of slice into this object.
virtual void outerSlice(const Term &pivot)
Sets this object to the outer slice according to pivot.
void oneMoreGeneratorBaseCase()
virtual bool simplifyStep()
Like simplify(), except that only one simplification step is performed.
void swap(MsmSlice &slice)
virtual bool innerSlice(const Term &pivot)
Sets this object to the inner slice according to pivot.
This class represents a slice, which is the central data structure of the Slice Algorithm.
This class is used to transfer terms one at a time from one part of the program to another,...
Term represents a product of variables which does not include a coefficient.