Go to the documentation of this file.
28 typedef vector<Exponent*>
Cont;
32 Ideal(
size_t varCount = 0);
199 void print(FILE* file)
const;
200 void print(ostream& out)
const;
280 template<
class Predicate>
296 void reset(
size_t newVarCount);
320 template<
class Predicate>
324 if (newEnd !=
_terms.end()) {
ostream & operator<<(ostream &out, const Ideal &ideal)
bool strictlyContains(const Exponent *term) const
Cont::const_iterator const_iterator
const_iterator begin() const
bool getNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is some non-generic degree.
bool isIncomparable(const Exponent *term) const
void print(FILE *file) const
static void clearStaticCache()
Ideal caches memory allocated with new internally and reuses it to avoid calling new all the time.
Cont::reverse_iterator reverse_iterator
void clearAndSetVarCount(size_t varCount)
void getSupportCounts(Exponent *counts) const
counts[var] will be the number of generators divisible by var.
bool isIrreducible() const
Ideal(size_t varCount=0)
Initialize this object to the zero ideal in varCount variables.
bool removeIf(Predicate pred)
Removes those generators m such that pred(m) evaluates to true.
size_t getTypicalNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the typical non-generic degree.
void product(const Exponent *term)
bool isSquareFree() const
void swap(ExponentAllocator &allocator)
void insertNonMultiples(const Exponent *term, const Ideal &ideal)
void getGcdOfMultiplesOf(Exponent *gcd, const Exponent *divisor)
Sets gcd to the greatest common divisor of those generators that are divisible by divisor.
bool contains(const Exponent *term) const
void colon(const Exponent *by)
void singleDegreeSort(size_t var)
void getLeastExponents(Exponent *least) const
size_t getGeneratorCount() const
bool colonReminimize(const Exponent *colon)
const_iterator end() const
const Exponent * operator[](size_t index) const
bool disjointSupport() const
Returns true if all pairs of generators have disjoint support.
void getGcd(Exponent *gcd) const
Sets gcd to the greatest common divisor of all generators.
ExponentAllocator _allocator
Term represents a product of variables which does not include a coefficient.
void removeStrictMultiples(const Exponent *term)
size_t getVarCount() const
ExponentAllocator(size_t varCount)
void mapExponentsToZeroNoMinimize(const Term &zeroExponents)
Replaces the exponents from zeroExponents with zero and does not remove any non-minimal generators th...
void reset(size_t newVarCount)
void insertReminimize(const Exponent *term)
Ideal & operator=(const Ideal &ideal)
bool operator==(const Ideal &ideal) const
Rereturns true if *this equals ideal.
vector< Exponent * > _terms
void lcm(Word *res, const Word *resEnd, const Word *a, const Word *b)
bool isMinimallyGenerated() const
bool isWeaklyGeneric() const
size_t getMostNonGenericExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the most non-generic degree.
void getGcdAtExponent(Exponent *gcd, size_t var, Exponent exp)
Sets gcd to the greatest common divisor of those generators that raise the variable var to the power ...
void takeRadicalNoMinimize()
Replaces all generators with their support and does not remove any non-minimal generators this may pr...
Represents a monomial ideal with int exponents.
void remove(const_iterator it)
ExponentAllocator & operator=(const ExponentAllocator &)
const_iterator getMultiple(size_t var) const
Cont::const_reverse_iterator const_reverse_iterator
void removeMultiples(const Exponent *term)
void insert(const Exponent *term)
bool useSingleChunking() const
void getLcm(Exponent *lcm) const
Sets lcm to the least common multiple of all generators.
Exponent *& operator[](size_t index)
size_t getTypicalExponent(size_t &var, Exponent &exp)
Sets var and exp such that var^exp is the typical non-zero exponent.
Exponent * _chunkIterator
vector< Exponent * > Cont
vector< Exponent * > _chunks
bool containsIdentity() const
void gcd(Word *res, const Word *resEnd, const Word *a, const Word *b)