// ideal.h
// This class implements a saturated binomial ideal. Such an ideal is
// given by its generators.
// If SUPPORT_DRIVEN_METHODS_EXTENDED are enabled, the generators are not
// stored in a single list, but classified according to their support. This
// representation, together with the subset_tree data structure, allows a
// faster search for reducers.
// The entries of the two-dimensional array "subsets_of_support" are to be
// read as bit vectors with List_Support_Variables components (the constant
// List_Support_Variables is defined in globals.h). So all entries
// are in the range between 0 and 2^List_Support_Variables -1.
// subsets_of_support[i] is an array that contains all binary vectors whose
// support is a subset of that of i, i read as a binary vector.
// number_of_subsets[i] is the number of these subsets, i.e. the length of
// the array subsets_of_support[i].
// If, for example, List_Support_Variables=8, the datastructure subset_tree
// has 6561=8^3 entries.
#ifndef IDEAL_H
#define IDEAL_H
#include "list.h"
#include "matrix.h"
const int Number_of_Lists=1<