next | previous | forward | backward | up | top | index | toc | Macaulay2 website
FastLinAlg :: isCodimAtLeast

isCodimAtLeast -- returns true if we can quickly see whether the codim is at least a given number

Synopsis

Description

The computes a partial Groebner basis, takes the initial terms, and checks whether that (partial) initial ideal has codimension at least n. The following example made up of some minors of the following matrix, is no accessible via standard executions of either minors or codim even on a subset of the minors.

i1 : R = ZZ/127[x_1 .. x_(12)];
i2 : P = minors(3,genericMatrix(R,x_1,3,4));

o2 : Ideal of R
i3 : C = res (R^1/(P^3));
i4 : myDiff = C.dd_3;

             30       12
o4 : Matrix R   <--- R
i5 : r = rank myDiff;
i6 : time isCodimAtLeast(3, chooseGoodMinors(15, r, myDiff, Strategy=>StrategyDefaultNonRandom))
     -- used 0.817706 seconds

o6 = true

The function works by computing gb(I, PairLimit=>f(i)) for successive values of i. Here f(i) is a function that takes t, some approximation of the base degree value of the polynomial ring (for example, in a standard graded polynomial ring, this is probably expected to be \{1\}). And i is a counting variable. You can provide your own function by calling isCodimAtLeast(n, I, SPairsFunction=>( (i) -> f(i) ). Perhaps more commonly however, the user may want to instead tell the function to compute for larger values of i. This is done via the option PairLimit. This is the max value of i to consider before the function gives up.

i7 : time isCodimAtLeast(3, chooseGoodMinors(15, r, myDiff, Strategy=>StrategyDefaultNonRandom), PairLimit => 3, Verbose=>true)
isCodimAtLeast: Computing codim of monomials based on ideal generators.
     -- used 0.800313 seconds

o7 = true
i8 : time isCodimAtLeast(3, chooseGoodMinors(15, r, myDiff, Strategy=>StrategyDefaultNonRandom), PairLimit => 15, Verbose=>true)
isCodimAtLeast: Computing codim of monomials based on ideal generators.
     -- used 0.815101 seconds

o8 = true

Notice in the first case the function returned null, because the depth of search was not high enough. The second returned true, but it did so as soon as the answer was found (and before we hit the PairLimit limit).

Ways to use isCodimAtLeast :

For the programmer

The object isCodimAtLeast is a method function with options.