# heft vectors

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