Macaulay2 » Documentation
Packages » MultiplicitySequence :: hilbertSequence
next | previous | forward | backward | up | index | toc

# hilbertSequence -- the Hilbert sequence of a multi-graded module

- Usage:
    `hilbertSequence M`
- Inputs:
  - M, a module, or ideal
- Optional inputs:
  - DoSaturate => ..., default value false
- Outputs:
  - a hash table, the Hilbert sequence of M

## Description

Given an $\NN^p$-graded module M, this function computes the coefficients of the pth sum transform of the $\NN^p$-graded Hilbert function of M in its Macaulay expansion. If the input is an ideal I, then the Hilbert sequence of comodule I is returned.

    i1 : R = QQ[a..e, DegreeRank => 5]

    o1 = R

    o1 : PolynomialRing

    i2 : I = monomialIdeal "de,abe,ace,abcd"

    o2 = monomialIdeal (a*b*c*d, a*b*e, a*c*e, d*e)

    o2 : MonomialIdeal of R

    i3 : hilbertSequence I

    o3 = HashTable{{0, 0, 0, 0, 1} => -1}
                   {0, 0, 0, 1, 0} => 1
                   {0, 0, 1, 0, 0} => 1
                   {0, 0, 1, 1, 0} => -1
                   {0, 1, 0, 0, 0} => 1
                   {0, 1, 0, 1, 0} => -1
                   {0, 1, 1, 0, 0} => -2
                   {0, 1, 1, 0, 1} => 1
                   {0, 1, 1, 1, 0} => 1
                   {1, 0, 0, 0, 1} => 1
                   {1, 0, 0, 1, 0} => -1
                   {1, 0, 1, 0, 0} => -1
                   {1, 0, 1, 1, 0} => 1
                   {1, 1, 0, 0, 0} => -1
                   {1, 1, 0, 1, 0} => 1
                   {1, 1, 1, 0, 0} => 1

    o3 : HashTable

For singly-graded modules, one can read off the Hilbert polynomial from the Hilbert sequence:

    i4 : R = QQ[a..e]

    o4 = R

    o4 : PolynomialRing

    i5 : I = monomialIdeal "de,abe,ace,abcd"

    o5 = monomialIdeal (a*b*c*d, a*b*e, a*c*e, d*e)

    o5 : MonomialIdeal of R

    i6 : hilbertSequence I

    o6 = HashTable{{1} => 2 }
                   {2} => -6
                   {3} => 5

    o6 : HashTable

    i7 : hilbertPolynomial I

    o7 = 2*P  - 6*P  + 5*P
            0      1      2

    o7 : ProjectiveHilbertPolynomial

A convenient expression for the Hilbert sequence is provided via printHilbertSequence.

## Caveat

In general, to retain a connection to the Hilbert polynomial (as opposed to the pth sum transform) it is necessary to saturate with respect to the irrelevant ideal, cf. page 235 of Conca-De Negri-Gorla, "Cartwright–Sturmfels ideals associated to graphs and linear spaces", 2018. This is handled by the optional argument DoSaturate.

## See also

- hilbertPolynomial -- compute the Hilbert polynomial
- printHilbertSequence -- prints the Hilbert sequence as a table

## Ways to use hilbertSequence:

- `hilbertSequence(Ideal)`
- `hilbertSequence(Module)`
- `hilbertSequence(Ring)`

## For the programmer

The object hilbertSequence is a method function with options.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/MultiplicitySequence.m2:495:0.