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