Let I be a homogeneous ideal in a ring R that is either a polynomial ring or a quotient of a polynomial ring, and suppose that R has the standard grading. hilbertFunct returns the Hilbert function of R/I as a list.
If R/I is Artinian, then the default is for hilbertFunct to return the entire Hilbert function (i.e., until the Hilbert function is zero) of R/I as a list. The user can override this by using the MaxDegree option to bound the highest degree considered.
If R/I is not Artinian, then hilbertFunct returns the Hilbert function of R/I through degree 20. Again, the user can select a different upper bound for the degree by using the MaxDegree option.
We require the standard grading on R in order to compute with the Hilbert series, which is presently much faster than repeatedly computing the Hilbert function.
i1 : R=ZZ/32003[a..c]; |
i2 : hilbertFunct ideal(a^3,b^3,c^3) o2 = {1, 3, 6, 7, 6, 3, 1} o2 : List |
i3 : hilbertFunct ideal(a^3,a*b^2) o3 = {1, 3, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25} o3 : List |
i4 : hilbertFunct(ideal(a^3,a*b^2),MaxDegree=>4) o4 = {1, 3, 6, 8, 9} o4 : List |
i5 : M=ideal(a^3,b^4,a*c); o5 : Ideal of R |
i6 : Q=R/M; |
i7 : hilbertFunct ideal(c^4) o7 = {1, 3, 5, 6, 5, 3, 1} o7 : List |
i8 : hilbertFunct ideal(b*c,a*b) o8 = {1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} o8 : List |
The object hilbertFunct is a method function with options.