next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Macaulay2Doc :: heft vectors

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

See also