|
| Ideal (size_t varCount=0) |
| Initialize this object to the zero ideal in varCount variables.
|
|
| Ideal (const Term &term) |
| Initialize this object to the ideal generated by term.
|
|
| Ideal (const Ideal &ideal) |
| Initialize this object to be a copy of ideal.
|
|
| ~Ideal () |
|
const_iterator | begin () const |
|
const_iterator | end () const |
|
const Exponent * | operator[] (size_t index) const |
|
iterator | begin () |
|
iterator | end () |
|
Exponent *& | operator[] (size_t index) |
|
size_t | getVarCount () const |
|
size_t | getGeneratorCount () const |
|
bool | isIncomparable (const Exponent *term) const |
|
bool | contains (const Exponent *term) const |
|
bool | containsIdentity () const |
|
bool | strictlyContains (const Exponent *term) const |
|
bool | isMinimallyGenerated () const |
|
bool | isZeroIdeal () const |
|
bool | isIrreducible () const |
|
bool | isSquareFree () const |
|
bool | isStronglyGeneric () |
|
bool | isWeaklyGeneric () const |
|
bool | disjointSupport () const |
| Returns true if all pairs of generators have disjoint support.
|
|
void | getLcm (Exponent *lcm) const |
| Sets lcm to the least common multiple of all generators.
|
|
void | getGcd (Exponent *gcd) const |
| Sets gcd to the greatest common divisor of all generators.
|
|
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 exp.
|
|
void | getGcdOfMultiplesOf (Exponent *gcd, const Exponent *divisor) |
| Sets gcd to the greatest common divisor of those generators that are divisible by divisor.
|
|
void | getLeastExponents (Exponent *least) const |
|
void | getSupportCounts (Exponent *counts) const |
| counts[var] will be the number of generators divisible by var.
|
|
size_t | getTypicalExponent (size_t &var, Exponent &exp) |
| Sets var and exp such that var^exp is the typical non-zero exponent.
|
|
size_t | getMostNonGenericExponent (size_t &var, Exponent &exp) |
| Sets var and exp such that var^exp is the most non-generic degree.
|
|
size_t | getTypicalNonGenericExponent (size_t &var, Exponent &exp) |
| Sets var and exp such that var^exp is the typical non-generic degree.
|
|
bool | getNonGenericExponent (size_t &var, Exponent &exp) |
| Sets var and exp such that var^exp is some non-generic degree.
|
|
const_iterator | getMultiple (size_t var) const |
|
bool | operator== (const Ideal &ideal) const |
| Rereturns true if *this equals ideal.
|
|
void | print (FILE *file) const |
|
void | print (ostream &out) const |
|
void | insert (const Exponent *term) |
|
void | insert (const Ideal &ideal) |
|
void | insert (size_t var, Exponent e) |
|
void | insertReminimize (const Exponent *term) |
|
void | insertReminimize (size_t var, Exponent e) |
|
void | minimize () |
|
void | sortReverseLex () |
|
void | sortLex () |
|
void | singleDegreeSort (size_t var) |
|
void | product (const Exponent *term) |
|
void | colon (const Exponent *by) |
|
void | colon (size_t var, Exponent e) |
|
bool | colonReminimize (const Exponent *colon) |
|
bool | colonReminimize (size_t var, Exponent e) |
|
void | remove (const_iterator it) |
|
void | removeMultiples (const Exponent *term) |
|
void | removeMultiples (size_t var, Exponent e) |
|
void | insertNonMultiples (const Exponent *term, const Ideal &ideal) |
|
void | insertNonMultiples (size_t var, Exponent e, const Ideal &ideal) |
|
void | removeStrictMultiples (const Exponent *term) |
|
void | removeDuplicates () |
|
void | clear () |
|
void | clearAndSetVarCount (size_t varCount) |
|
void | mapExponentsToZeroNoMinimize (const Term &zeroExponents) |
| Replaces the exponents from zeroExponents with zero and does not remove any non-minimal generators this may produce.
|
|
void | takeRadicalNoMinimize () |
| Replaces all generators with their support and does not remove any non-minimal generators this may produce.
|
|
Ideal & | operator= (const Ideal &ideal) |
|
void | swap (Ideal &ideal) |
|
template<class Predicate > |
bool | removeIf (Predicate pred) |
| Removes those generators m such that pred(m) evaluates to true.
|
|
Represents a monomial ideal with int exponents.
Definition at line 27 of file Ideal.h.
size_t Ideal::getMostNonGenericExponent |
( |
size_t & |
var, |
|
|
Exponent & |
exp |
|
) |
| |
Sets var and exp such that var^exp is the most non-generic degree.
A unordered pair of generators a and b is non-generic if a and b raise some var to the same non-zero exponent and lcm(a,b) is not strictly divisible by any generator. The most non-generic degree is the exponent that occurs most often as the shared degree for non-generic pairs. In case of ties some deterministic choice is made.
The return value is the number of non-generic pairs that concern the most non-generic degree. If there are no non-generic pairs (i.e. the ideal is generic) then the return value is zero and var=exp=0.
This method is not const since it may re-arrange the generators for efficiency.
Definition at line 271 of file Ideal.cpp.
size_t Ideal::getTypicalExponent |
( |
size_t & |
var, |
|
|
Exponent & |
exp |
|
) |
| |
Sets var and exp such that var^exp is the typical non-zero exponent.
The typical exponent is the exponent of a specific variable that occurs most often among the generators. In case of ties some deterministic choice is made. If there are no non-zero generators then var=exp=0 is chosen and the return value is zero. The returned value is the number of times the typical non-zero exponent occurs.
This method is not const since it may re-arrange the generators for efficiency.
Definition at line 236 of file Ideal.cpp.
size_t Ideal::getTypicalNonGenericExponent |
( |
size_t & |
var, |
|
|
Exponent & |
exp |
|
) |
| |
Sets var and exp such that var^exp is the typical non-generic degree.
A unordered pair of generators a and b is non-generic if a and b raise some var to the same non-zero exponent and lcm(a,b) is not strictly divisible by any generator. A degree var^exp is non-generic if it occurs as the shared degree for some non-generic pair. The typical non-generic degree is the non-generic degree that occurs most often among all generators. So it does not matter how non-generic the degree is, just that it is non-generic at all.
The return value is the number of generators that raise var to exp. If there are no non-generic pairs (i.e. the ideal is generic) then the return value is zero and var=exp=0.
This method is not const since it may re-arrange the generators for efficiency.
Definition at line 325 of file Ideal.cpp.
void Ideal::mapExponentsToZeroNoMinimize |
( |
const Term & |
zeroExponents | ) |
|
Replaces the exponents from zeroExponents with zero and does not remove any non-minimal generators this may produce.
If a generator raises var to precisely the power t, and zeroExponents also raises var to precisely the power t, then that generator is changed to instead raise var to the power zero.
Definition at line 652 of file Ideal.cpp.