Computes up to b successive random links, using a regular sequence among the generators of I, and outputs the numbers of generators. If I is licci, such a sequence must terminate in an ideal with c = codim I generators in at most linkageBound I steps.
Every perfect codimension 2 ideal (nxn minors of an (nx(n+1) matrix) is licci, but other ideals of minors are generally not, as illustrated below.
i1 : setRandomSeed 0 o1 = 0 |
i2 : needsPackage "RandomIdeals" o2 = RandomIdeals o2 : Package |
i3 : S = ZZ/32003[x_0..x_6] o3 = S o3 : PolynomialRing |
i4 : L = idealChainFromShelling(S,randomShelling(7,3,8)) o4 = {monomialIdeal (x , x , x ), monomialIdeal (x , x , x x ), monomialIdeal 0 1 3 1 3 0 5 ------------------------------------------------------------------------ (x , x x , x x , x x ), monomialIdeal (x , x x x , x x , x x ), 3 1 4 0 5 1 5 3 0 1 4 0 5 1 5 ------------------------------------------------------------------------ monomialIdeal (x , x x x , x x , x x x ), monomialIdeal (x , x x x , 3 0 1 4 1 5 0 4 5 3 0 1 4 ------------------------------------------------------------------------ x x , x x x x ), monomialIdeal (x , x x x , x x x , x x x , x x x x ), 1 5 0 4 5 6 3 0 1 4 0 1 5 1 4 5 0 4 5 6 ------------------------------------------------------------------------ monomialIdeal (x x , x x , x x x , x x x , x x , x x x , x x x x )} 0 3 2 3 0 1 4 0 1 5 3 5 1 4 5 0 4 5 6 o4 : List |
i5 : apply(L, I-> {linkageBound I, linkageBound(I, UseNormalModule =>true)}) o5 = {{0, 0}, {0, 0}, {6, 2}, {12, 2}, {18, 2}, {24, 2}, {30, 14}, {36, 18}} o5 : List |
i6 : scan(L, I ->print isLicci(I, UseNormalModule => true)) true true true true true true true false |
linkageBound I can be very large; linkageBound(I, UseNormalModule => true) can be slow.
The object isLicci is a method function with options.