- Usage:
`degreesRing x`

- Function: degreesRing
- Outputs:
- a polynomial ring, the ring of Laurent polynomials whose monomials correspond to the degrees of the monomials in a ring whose heft vector is
`x`, or, if`x`is an integer, in a ring with degree rank`x`and no heft vector. See degreesMonoid.

- a polynomial ring, the ring of Laurent polynomials whose monomials correspond to the degrees of the monomials in a ring whose heft vector is

This function produces a Laurent polynomial ring in `n` variables `T_0, ... , T_{n-1}`, where `n` is the length of `x` if `x` is a list and is `x` otherwise. If `n=1`, then the single variable is `T`. Use use as in the following example to assign the indeterminates of the ring to global variables, or assign the ring itself to a global variable.

i1 : degreesRing 3 o1 = ZZ[T , T , T ] 0 1 2 o1 : PolynomialRing |

i2 : describe oo o2 = ZZ[T ..T , Degrees => {3:{}}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 0, Inverses => true, Global => false] 0 2 {Weights => {3:-1} } {GroupLex => 3 } {Position => Up } |

i3 : T_0 o3 = T 0 o3 : IndexedVariable |

i4 : use degreesRing 3 o4 = ZZ[T , T , T ] 0 1 2 o4 : PolynomialRing |

i5 : T_0 o5 = T 0 o5 : ZZ[T , T , T ] 0 1 2 |

Elements of this ring are used as variables for Poincare polynomials generated by poincare and poincareN as well as Hilbertseries.

The degrees ring is a Laurent polynomial ring, as can be seen by the option in the definition of the ring that says `Inverses => true`. 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.

i6 : W = degreesRing {1,2,5} o6 = W o6 : PolynomialRing |

i7 : describe W o7 = ZZ[T ..T , Degrees => {1..2, 5}, MonomialOrder => {MonomialSize => 32 }, DegreeRank => 1, Inverses => true, Global => false] 0 2 {Weights => {-1, -2, -5}} {GroupLex => 3 } {Position => Up } |

i8 : use W o8 = W o8 : PolynomialRing |

i9 : (1+T_1+T_2^2)^3 2 3 2 2 2 2 4 4 6 o9 = 1 + 3T + 3T + T + 3T + 6T T + 3T T + 3T + 3T T + T 1 1 1 2 1 2 1 2 2 1 2 2 o9 : W |

i10 : degreesRing 3 o10 = ZZ[T , T , T ] 0 1 2 o10 : PolynomialRing |

i11 : describe oo o11 = ZZ[T ..T , Degrees => {3:{}}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 0, Inverses => true, Global => false] 0 2 {Weights => {3:-1} } {GroupLex => 3 } {Position => Up } |

i12 : R = QQ[x,y,Degrees => {{1,-2},{2,-1}}]; |

i13 : heft R o13 = {1, 0} o13 : List |

i14 : describe degreesRing R o14 = ZZ[T ..T , Degrees => {1, 0}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1, Inverses => true, Global => false] 0 1 {Weights => {-1..0}} {GroupLex => 2 } {Position => Up } |

i15 : S = QQ[x,y,Degrees => {-2,1}]; |

i16 : heft S |

i17 : describe degreesRing S o17 = ZZ[T, Degrees => {{}}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 0, Inverses => true, Global => false] {Weights => {-1} } {GroupLex => 1 } {Position => Up } |

- poincare -- assemble degrees into polynomial
- poincareN -- assemble degrees into polynomial
- hilbertFunction -- the Hilbert function
- hilbertSeries -- compute the Hilbert series
- hilbertPolynomial -- compute the Hilbert polynomial
- reduceHilbert -- reduce a Hilbert series expression
- division in polynomial rings with monomials less than 1
- heft -- heft vector of ring, module, graded module, or resolution
- use -- install or activate object