nondegenerateBorels -- construct all nondegenerate strongly stable ideals of given length

Synopsis

• Usage:
nondegenerateBorels(d, S)
• Inputs:
• d, an integer, the length of the desired ideals in S$• S, a ring, a polynomial ring • Optional inputs: • Sort => , default value false, whether to sort the generators of each ideal in a slightly more natural way • Outputs: • a list, of all strongly stable ideals in$S$which are saturated, are (affine) dimension one, have degree$d\$, and have no linear forms in their ideal

Description

This is a simplified interface to the stronglyStableIdeals function.

For example, the following are all of the strongly stable ideals with degree 7, and their Betti tables.

 i1 : S = ZZ/101[a..d]; i2 : Bs = nondegenerateBorels(7, S); i3 : netList Bs +---------------------------------------+ | 2 2 5 | o3 = |ideal (b*c, a*c, b , a*b, a , c ) | +---------------------------------------+ | 2 2 2 4 | |ideal (a*c, b , a*b, a , b*c , c ) | +---------------------------------------+ | 2 3 2 2 3 | |ideal (a*c, a*b, a , c , b*c , b c, b )| +---------------------------------------+ | 2 2 3 2 2 | |ideal (b , a*b, a , c , b*c , a*c ) | +---------------------------------------+ i4 : netList pack(4, Bs/minimalBetti) +--------------+--------------+---------------+--------------+ | 0 1 2 3| 0 1 2 3| 0 1 2 3| 0 1 2 3| o4 = |total: 1 6 8 3|total: 1 6 8 3|total: 1 7 10 4|total: 1 6 8 3| | 0: 1 . . .| 0: 1 . . .| 0: 1 . . .| 0: 1 . . .| | 1: . 5 6 2| 1: . 4 4 1| 1: . 3 3 1| 1: . 3 2 .| | 2: . . . .| 2: . 1 2 1| 2: . 4 7 3| 2: . 3 6 3| | 3: . . . .| 3: . 1 2 1| | | | 4: . 1 2 1| | | | +--------------+--------------+---------------+--------------+

Using the Sort option as follows gives a somewhat more natural ordering. Sometimes computations involving the groebnerSratum ideal will be either much faster or slower with this option. But it is often worth trying it both ways, if your computations are slow.

 i5 : Bs2 = nondegenerateBorels(7, S, Sort => true); i6 : netList Bs2 +---------------------------------------+ | 2 2 5 | o6 = |ideal (a , a*b, b , a*c, b*c, c ) | +---------------------------------------+ | 2 2 2 4 | |ideal (a , a*b, b , a*c, b*c , c ) | +---------------------------------------+ | 2 3 2 2 3 | |ideal (a , a*b, a*c, b , b c, b*c , c )| +---------------------------------------+ | 2 2 2 2 3 | |ideal (a , a*b, b , a*c , b*c , c ) | +---------------------------------------+

This is a convenience function. Here is the simple code:

 i7 : code methods nondegenerateBorels o7 = -- code for method: nondegenerateBorels(ZZ,Ring) /usr/share/Macaulay2/QuaternaryQuartics.m2:116:47-122:5: --source code: nondegenerateBorels(ZZ, Ring) := List => opts -> (d, S) -> ( Bs := stronglyStableIdeals(d, S); Bs = select(Bs, i -> all(i_*, f -> degree f =!= {1})); if opts.Sort then Bs = Bs/(i -> ideal sort(gens i, MonomialOrder => Descending, DegreeOrder => Ascending)); Bs )