Macaulay2 » Documentation
Packages » QuaternaryQuartics :: nondegenerateBorels
next | previous | forward | backward | up | index | toc

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

Synopsis

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/local/share/Macaulay2/QuaternaryQuartics
     .m2:117:46-122:4: --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
         )

See also

Ways to use nondegenerateBorels :

For the programmer

The object nondegenerateBorels is a method function with options.