A *heft vector* for a polynomial ring is a vector with integer entries, of the same length as the degree vectors of the variables of the ring, whose dot product with each of them is (strictly) positive. Unless one is specified explicitly, then a good one will be found automatically. The heft vector is used in various internal algorithms, such as the one in basis, as a way of organizing the sequence of steps, proceeding incrementally to larger values of the dot product of the degree of a monomial with the heft vector.

i1 : R = QQ[a..d]; |

i2 : degrees R o2 = {{1}, {1}, {1}, {1}} o2 : List |

i3 : heft R o3 = {1} o3 : List |

i4 : S = QQ[a..d,DegreeRank => 4]; |

i5 : degrees S o5 = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}} o5 : List |

i6 : heft S o6 = {1, 1, 1, 1} o6 : List |

i7 : T = QQ[a,b,Degrees => {1,-1}] o7 = T o7 : PolynomialRing |

i8 : degrees T o8 = {{1}, {-1}} o8 : List |

i9 : heft T |

i10 : U = QQ[a..d,Degrees => {{2,0},{1,-1},{0,-2},{-1,-3}}] o10 = U o10 : PolynomialRing |

i11 : degrees U o11 = {{2, 0}, {1, -1}, {0, -2}, {-1, -3}} o11 : List |

i12 : heft U o12 = {3, -2} o12 : List |

The heft vector, multiplied by -1, is used as the weight vector in the monomial ordering of the degrees ring, and the *order* of the series expansions of the Hilbert series refers to the weight formed with respect to that weight vector.

i13 : hilbertSeries U 1 o13 = ---------------------------------------- 2 -1 -2 -1 -3 (1 - T )(1 - T T )(1 - T )(1 - T T ) 0 0 1 1 0 1 o13 : Expression of class Divide |

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

i15 : hilbertSeries(U,Order => 8) -1 -3 -2 -1 2 -2 -6 -1 -5 o15 = 1 + T T + T + T T + T + T T + T T 0 1 1 0 1 0 0 1 0 1 o15 : ZZ[T , T ] 0 1 |

The heft vector is used in the computation of degrees of modules over a polynomial ring `R`, because it gives a homomorphism from the degrees ring of `R` to the Laurent polynomial ring in one variable `T` that sends monomials corresponding to the degrees of variables of `R` to positive powers of `T`. See degree(Module).

i16 : R = QQ[x,y,Heft=>{3}]; |

i17 : degree ideal(x) o17 = 3 |

- heft -- heft vector of ring, module, graded module, or resolution
- monoid(..., Heft => ...) -- make or retrieve a monoid
- degreesRing -- the ring of degrees
- multidegree -- multidegree