17 #ifndef MSM_STRATEGY_GUARD
18 #define MSM_STRATEGY_GUARD
41 const Ideal& initialSubtract);
43 virtual void run(
const Ideal& ideal);
virtual bool processSlice(TaskEngine &tasks, auto_ptr< Slice > slice)
Process the parameter slice.
A SplitStrategy is an implementation of a split selection strategy for the Slice Algorithm.
size_t getLabelSplitVariable(const Slice &slice)
This class represents a slice, which is the central data structure of the Slice Algorithm.
virtual bool debugIsValidSlice(Slice *slice)
Check that this slice is valid for use with this strategy.
Represents a monomial ideal with int exponents.
auto_ptr< Ideal > _initialSubtract
A TermGrader assigns a value, the degree, to each monomial.
This class is used to transfer terms one at a time from one part of the program to another...
IndependenceSplitter _indep
TaskEngine handles a list of tasks that are to be carried out.
void labelSplit(auto_ptr< Slice > slice)
TermTranslator handles translation between terms whose exponents are infinite precision integers and ...
MsmStrategy(TermConsumer *consumer, const SplitStrategy *splitStrategy)
This class adds code to the SliceStrategy base class that is useful for derived classes.
auto_ptr< MsmSlice > newMsmSlice()
virtual auto_ptr< Slice > allocateSlice()
Directly allocate a slice of the correct type using new.
virtual void getPivot(Term &pivot, Slice &slice)
Used by pivotSplit to obtain a pivot.
virtual void run(const Ideal &ideal)
Run the Slice algorithm.
void independenceSplit(auto_ptr< Slice > slice)
Invariant: either the slice is a trivial base case, or removeDoubleLcm returns false.
Term represents a product of variables which does not include a coefficient.