buildERing -- creates a ring to be used with other functions in the EquivariantGB package

Synopsis

• Usage:
R = buildERing(X,I,F,n)
• Inputs:
• X, a list, a list of symbols, one for each block of variables
• I, a list, a list of integers, the number of indices for each variable block
• F, a ring, the coefficient ring
• n, an integer, the width bound
• Optional inputs:
• Degrees => ..., default value {}
• MonomialOrder => ..., default value Lex
• Outputs:
• R, a ring, a polynomial ring with coefficient field F, and a block of variables for each entry of X. The corresponding integers in I determine how many indices each block of variables has. Variables with all index values from 0 to n-1 are included.

Description

The object produced by buildERing is a Ring with additional stored information. It is used to represent a polynomial ring F[Y] with an infinite set of variables Y, and an action of the infinite symmetric group on Y such that it is composed of a finite number of orbits. Macaulay2 cannot store a ring with an infinite number of variables, so the ring produced contains only some of the variables.

We assume Y decomposes into a finite number of "blocks", each block consisting of variables of the form x_{(i_1,...,i_k)} for some k and each index i_j ranging over all non-negative integers. The symbol x to be used for each block is listed in X. The value of k for each block is listed in I. The variables in the ring output by buildERing are those with index values ranging from 0 to n-1. The same ring with a different index bound n can be produced by buildERing(Ring,ZZ).

 i1 : S = buildERing({symbol z}, {1}, QQ, 4) o1 = S o1 : PolynomialRing i2 : vars S o2 = | z_3 z_2 z_1 z_0 | 1 4 o2 : Matrix S <--- S i3 : coefficientRing S o3 = QQ o3 : Ring
 i4 : R = buildERing({symbol y, symbol x}, {2,1}, QQ, 3) o4 = R o4 : PolynomialRing i5 : vars R o5 = | y_(2,2) y_(2,1) y_(2,0) y_(1,2) y_(1,1) y_(1,0) y_(0,2) y_(0,1) ------------------------------------------------------------------------ y_(0,0) x_2 x_1 x_0 | 1 12 o5 : Matrix R <--- R

The monomial order can be chosen with optional argument MonomialOrder. Currently valid choices are Lex, GLex or GRevLex. The variables are always ordered from the last block to the first, with larger indices before smaller indices. For blocks with multiple indices the order of the variables is also lexicographic with first index most significant, followed by the second, etc.

The grading of the ring can be chosen with optional argument Degrees. The grading is specified by listing the degree of each variable block. Because the degree function must be invariant under the symmetric action, every variable in the same block must have the same degree.

For the programmer

The object buildERing is .