Go to the documentation of this file.
128 void print(FILE* file)
const;
140 virtual bool baseCase(
bool simplified) = 0;
This class describes the interface of a strategy object for the Slice Algorithm.
virtual bool simplifyStep()=0
Like simplify(), except that only one simplification step is performed.
void resetAndSetVarCount(size_t varCount)
Resets this slice to in an ambient polynomial ring of varCount variables.
const Ideal & getSubtract() const
Returns for a slice .
void clearIdealAndSubtract()
Clears getIdeal() and getSubtract() and does not change getMultiply().
Term _multiply
The of a slice .
Slice(SliceStrategy &strategy)
Construct the slice in a ring of zero variables.
bool pruneSubtract()
Removes those generators of subtract that do not strictly divide the lcm of getIdeal(),...
virtual void outerSlice(const Term &pivot)
Sets this object to the outer slice according to pivot.
virtual bool innerSlice(const Term &pivot)
Sets this object to the inner slice according to pivot.
size_t _lowerBoundHint
A hint that starting simplification through a lower bound at the variable indicated by _lowerBoundHin...
virtual void run(TaskEngine &tasks)
Does whatever work this task represents.
virtual Slice & operator=(const Slice &slice)=0
Performs a deep copy of slice into this object.
const Term & getMultiply() const
Returns for a slice .
virtual bool simplify()
Simplifies this object such that it may become simpler without changing the content.
Term _lcm
The lcm of getIdeal() if _lcmUpdated is true, and otherwise the value is undefind.
size_t getVarCount() const
Returns the number of variables in the ambient ring.
const Term & getLcm() const
Returns the least common multiple of the generators of getIdeal().
virtual void dispose()
Called when the task is no longer used but run has not and will not be called.
bool applyLowerBound()
Calculates a lower bound on the content of the slice using getLowerBound() and calls innerSlice with ...
size_t _varCount
The number of variables in the ambient polynomial ring.
TaskEngine handles a list of tasks that are to be carried out.
This class represents a slice, which is the central data structure of the Slice Algorithm.
A Task object represents a unit of work that is performed when the method run() is called.
void swap(Slice &slice)
Simultaneously set the value of this object to that of slice and vice versa.
Term & getMultiply()
Returns for a slice .
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)
Set this object to be the projection of slice according to projection.
Ideal _ideal
The of a slice .
void singleDegreeSortIdeal(size_t var)
Calls Ideal::singleDegreeSort on getIdeal().
Represents a monomial ideal with int exponents.
SliceStrategy & _strategy
void print(FILE *file) const
Write a text representation of this object to file in a format appropriate for debugging.
bool adjustMultiply()
Ensure that for each var, var appears to the first power in some generator of getIdeal().
virtual bool baseCase(bool simplified)=0
Returns true if this slice is a base case slice, and in that case produces output in a derivative-spe...
bool _lcmUpdated
Indicates whether _lcm is correct.
bool normalize()
Removes those generators of getIdeal() that are strictly divisible by some generator of getSubtract()...
Ideal & getSubtract()
Returns for a slice .
Ideal _subtract
The of a slice .
virtual bool getLowerBound(Term &bound, size_t var) const =0
Calculates a lower bound that depends on var.