Go to the documentation of this file.
17 #ifndef HILBERT_STRATEGY_GUARD
18 #define HILBERT_STRATEGY_GUARD
38 virtual void run(
const Ideal& ideal);
42 void freeConsumer(auto_ptr<HilbertIndependenceConsumer> consumer);
45 auto_ptr<HilbertIndependenceConsumer>
newConsumer();
virtual void getPivot(Term &term, Slice &slice)
Used by pivotSplit to obtain a pivot.
ElementDeleter< vector< HilbertIndependenceConsumer * > > _consumerCacheDeleter
A SplitStrategy is an implementation of a split selection strategy for the Slice Algorithm.
virtual void run(const Ideal &ideal)
Run the Slice algorithm.
CoefTermConsumer * _consumer
auto_ptr< HilbertSlice > newHilbertSlice()
void freeConsumer(auto_ptr< HilbertIndependenceConsumer > consumer)
void independenceSplit(auto_ptr< Slice > slice)
TaskEngine handles a list of tasks that are to be carried out.
vector< HilbertIndependenceConsumer * > _consumerCache
This class represents a slice, which is the central data structure of the Slice Algorithm.
Term represents a product of variables which does not include a coefficient.
virtual bool debugIsValidSlice(Slice *slice)
Check that this slice is valid for use with this strategy.
virtual auto_ptr< Slice > allocateSlice()
Directly allocate a slice of the correct type using new.
This class adds code to the SliceStrategy base class that is useful for derived classes.
Represents a monomial ideal with int exponents.
auto_ptr< HilbertIndependenceConsumer > newConsumer()
virtual bool processSlice(TaskEngine &tasks, auto_ptr< Slice > slice)
Process the parameter slice.
IndependenceSplitter _indepSplitter
HilbertStrategy(CoefTermConsumer *consumer, const SplitStrategy *splitStrategy)