Macaulay2 » Documentation
Packages » MonomialOrbits > orbitRepresentatives
next | previous | forward | backward | up | index | toc

orbitRepresentatives -- find representatives of monomial ideals under permutations of variables

Synopsis

Description

This method generates a list of representatives of the orbits of monomial ideals with given minimal generator degrees under the group of permutations of the variables.

If the option MonomialType is set to "SquareFree", then only ideals of square-free monomials are considered.

The program works by induction on the number of generators; given the list L of orbit representatives for the ideals minimally generated by the first k of the generators, the program adds all possible generators of the (k+1)-st degree to each of ideals in L in a certain order, and then removes those in the list that can be obtained by a permutation of variables from one that is earlier in the list.

Because the generators are constrained to be minimal generators, it is advantageous to specify the low degrees of generators first.

Note that degs is specified as a VisibleList, which could be either a list or a sequence.

i1 : S = ZZ/101[a..d];
i2 : L = orbitRepresentatives(S,(2,2,2))

                      2        2                   2            
o2 = {monomialIdeal (a , a*b, b ), monomialIdeal (a , a*b, a*c),
     ------------------------------------------------------------------------
                     2                             2        2                
     monomialIdeal (a , a*b, b*c), monomialIdeal (a , a*b, c ), monomialIdeal
     ------------------------------------------------------------------------
       2                             2   2   2                   2   2       
     (a , a*b, c*d), monomialIdeal (a , b , c ), monomialIdeal (a , b , c*d),
     ------------------------------------------------------------------------
                     2
     monomialIdeal (a , b*c, b*d), monomialIdeal (a*b, a*c, b*c),
     ------------------------------------------------------------------------
     monomialIdeal (a*b, a*c, a*d), monomialIdeal (a*b, a*c, b*d)}

o2 : List
i3 : #L

o3 = 11
i4 : tally apply(L, m->betti res m)

                  0 1 2
o4 = Tally{total: 1 3 2 => 4  }
               0: 1 . .
               1: . 3 2
                  0 1 2 3
           total: 1 3 3 1 => 2
               0: 1 . . .
               1: . 3 . .
               2: . . 3 .
               3: . . . 1
                  0 1 2 3
           total: 1 3 3 1 => 2
               0: 1 . . .
               1: . 3 3 1
                  0 1 2 3
           total: 1 3 3 1 => 3
               0: 1 . . .
               1: . 3 1 .
               2: . . 2 1

o4 : Tally
i5 : L' = orbitRepresentatives(S,(2,2,2), MonomialType => "SquareFree")

o5 = {monomialIdeal (a*b, a*c, b*c), monomialIdeal (a*b, a*c, a*d),
     ------------------------------------------------------------------------
     monomialIdeal (a*b, a*c, b*d)}

o5 : List
i6 : #L'

o6 = 3
i7 : tally apply(L', m->betti res m)

                  0 1 2
o7 = Tally{total: 1 3 2 => 2  }
               0: 1 . .
               1: . 3 2
                  0 1 2 3
           total: 1 3 3 1 => 1
               0: 1 . . .
               1: . 3 3 1

o7 : Tally
i8 : I = monomialIdeal"a2,b2,c2,d2"

                     2   2   2   2
o8 = monomialIdeal (a , b , c , d )

o8 : MonomialIdeal of S
i9 : L'' = orbitRepresentatives(S,I,{2,2,2})

                      2        2             2   2                   2      
o9 = {monomialIdeal (a , a*b, b , a*c, b*c, c , d ), monomialIdeal (a , a*b,
     ------------------------------------------------------------------------
      2        2        2                   2        2        2        2
     b , a*c, c , a*d, d ), monomialIdeal (a , a*b, b , a*c, c , b*d, d )}

o9 : List
i10 : tally apply(L'', m->betti res m)

                   0 1  2  3 4
o10 = Tally{total: 1 7 13 10 3 => 1}
                0: 1 .  .  . .
                1: . 7  8  2 .
                2: . .  5  8 3
                   0 1  2  3 4
            total: 1 7 14 11 3 => 1
                0: 1 .  .  . .
                1: . 7  8  3 .
                2: . .  6  8 3
                   0 1  2 3 4
            total: 1 7 12 8 2 => 1
                0: 1 .  . . .
                1: . 7  9 4 1
                2: . .  3 3 .
                3: . .  . 1 1

o10 : Tally

Multi-gradings are also allowed:

i11 : S = ZZ/101[x_0..x_3, Degrees=>{{1,2},{2,1},{1,1},{1,0}}];
i12 : orbitRepresentatives(S,{{2,2},{2,1}})

                           2                                             2
o12 = {monomialIdeal (x , x ), monomialIdeal (x , x x ), monomialIdeal (x ,
                       1   2                   1   0 3                   2 
      -----------------------------------------------------------------------
      x x ), monomialIdeal (x x , x x )}
       2 3                   0 3   2 3

o12 : List

Since the input data specifies degrees of minimal generators, the set of ideals may be empty:

i13 : S = ZZ/101[a,b];
i14 : L = orbitRepresentatives(S,(2,2,2,2))

o14 = {monomialIdeal ()}

o14 : List

It is possible to give a starting monomial ideal, and add a given number of its generators.

i15 : L = orbitRepresentatives(S,monomialIdeal a^3, (ideal(a,b))^3, 2)

                       3     2   3                   3   2      2
o15 = {monomialIdeal (a , a*b , b ), monomialIdeal (a , a b, a*b )}

o15 : List

If the number given is negative, then all but that number of elements of the starting monomial ideal in arg 2 are taken. The starting monomial ideal is reduced mod the ideal in arg 1 before the process begins

i16 : L = orbitRepresentatives(S,monomialIdeal a^3, (ideal(a,b))^3, -2)

                       3   2                    3   3
o16 = {monomialIdeal (a , a b), monomialIdeal (a , b )}

o16 : List

See also

Ways to use orbitRepresentatives :

For the programmer

The object orbitRepresentatives is a method function with options.