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.
virtual unique_ptr< Slice > allocateSlice()
Directly allocate a slice of the correct type using new.
virtual bool debugIsValidSlice(Slice *slice)
Check that this slice is valid for use with this strategy.
virtual bool processSlice(TaskEngine &tasks, unique_ptr< Slice > slice)
Process the parameter slice.
IndependenceSplitter _indep
void independenceSplit(unique_ptr< Slice > slice)
unique_ptr< MsmSlice > newMsmSlice()
unique_ptr< Ideal > _initialSubtract
virtual void getPivot(Term &pivot, Slice &slice)
Used by pivotSplit to obtain a pivot.
void labelSplit(unique_ptr< Slice > slice)
virtual void run(const Ideal &ideal)
Run the Slice algorithm.
MsmStrategy(TermConsumer *consumer, const SplitStrategy *splitStrategy)
size_t getLabelSplitVariable(const Slice &slice)
SliceStrategyCommon(const SplitStrategy *splitStrategy)
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.