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

## Synopsis

• Usage:
L = orbitRepresentatives(R, degs)
L = orbitRepresentatives(R, I, degs)
L = orbitRepresentatives(R, I, J, numelts)
• Inputs:
• R, ,
• degs, a list, or , of the degrees of the generators
• I, an ideal, The starting ideal; all the ideals returned will contain this one.
• J, an ideal, A monomial ideal containing monomials from which to add to I; when numelts < 0, then the ideals formed are I+J minus a certain number of monomials.
• numelts, an integer, If numelts $\geq 0$ then each monomial ideal produced is I+(numelts elements of J); if numelts $< 0$ then each monomial ideal produced is I+J minus (|numelts| elements of J).
• Optional inputs:
• MonomialType => , default value All, (either "All" or "SquareFree"). For "All", all monomials are considered, and for "SquareFree", only square free monomials are considered
• Outputs:
• L, a list, of monomial ideals

## 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

 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 2 2 3 1 ----------------------------------------------------------------------- x x ), monomialIdeal (x x , x x )} 0 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 = {} 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 2 3 2 3 o15 = {monomialIdeal (a , a b, a*b ), monomialIdeal (a , a b, 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 2 3 o16 = {monomialIdeal (a , a b), monomialIdeal (a , a*b ), monomialIdeal (a , ----------------------------------------------------------------------- 3 b )} o16 : List