# degreesRing(List) -- the ring or monoid of degrees

## Synopsis

• Function: degreesRing
• Usage:
degreesRing L
degreesMonoid L
degreesRing n
degreesMonoid n
• Inputs:
• Outputs:
• A, , or , a monoid of Laurent monomials or ring of Laurent polynomials.

## Description

These functions produce either a monoid of Laurent monomials or Laurent polynomial ring $A$ in n variables, where n is the length of the list L, which is typically a heft vector. Each monomial in the output corresponds to a degree vector for a ring with heft vector L or degree length n and no heft vector.

When a list is given, the variables of the output have degrees given by the elements of L and weights are the negative of the degrees. When an integer is given, then the number of variables is n, the degrees are all {}, and the weights are all -1.

 i1 : degreesMonoid {1,2,3} o1 = monoid[T ..T , Degrees => {1..3}, MonomialOrder => {MonomialSize => 32 }, Inverses => true, Global => false] 0 2 {Weights => {-1, -2, -3}} {GroupLex => 3 } {Position => Up } o1 : GeneralOrderedMonoid i2 : degreesMonoid 3 o2 = monoid[T ..T , Degrees => {3:{}}, MonomialOrder => {MonomialSize => 32}, Inverses => true, Global => false] 0 2 {Weights => {3:-1} } {GroupLex => 3 } {Position => Up } o2 : GeneralOrderedMonoid

The monomial ordering used in the degrees ring is RevLex so the polynomials in it will be displayed with the smallest exponents first, because such polynomials are often used as Hilbert series.

Assign the degrees ring to a global variable or call use(Monoid) to assign the indeterminates of the ring or monoid to global variables.

 i3 : assert instance(T_0, IndexedVariable) i4 : use degreesMonoid 3 o4 = monoid[T ..T , Degrees => {3:{}}, MonomialOrder => {MonomialSize => 32}, Inverses => true, Global => false] 0 2 {Weights => {3:-1} } {GroupLex => 3 } {Position => Up } o4 : GeneralOrderedMonoid i5 : assert instance(T_0, degreesMonoid 3) i6 : A = degreesRing 4 o6 = A o6 : PolynomialRing i7 : assert instance(T_0, degreesRing 4)