# hilbertComparisonTable -- a table to compare the values of the hilbertFunction and hilbertPolynomial of a graded module

## Synopsis

• Usage:
T = hilbertComparisonTable(a,b,M)
• Inputs:
• a, an integer, lowest degree in the table
• b, an integer, largest degree in the table
• Outputs:
• T, , table with the degrees and values of the hilbertFunction and hilbertPolynomial

## Description

The first row of the output table contains the degrees, the second row contains the values of the hilbertFunction, the third row contains the values of the hilbertPolynomial. In the following example, the hilbertFunction and polynomial always agree.

 i1 : V = {{0,0},{1,0},{1,1},{0,1}} o1 = {{0, 0}, {1, 0}, {1, 1}, {0, 1}} o1 : List i2 : F = {{0,1,2},{0,2,3}} o2 = {{0, 1, 2}, {0, 2, 3}} o2 : List i3 : E = {{0,1},{0,2},{0,3},{1,2},{2,3}} o3 = {{0, 1}, {0, 2}, {0, 3}, {1, 2}, {2, 3}} o3 : List i4 : hilbertComparisonTable(0,8,splineModule(V,F,E,1)) +-----------+-+-+-+--+--+--+--+--+--+ o4 = |Degree |0|1|2|3 |4 |5 |6 |7 |8 | +-----------+-+-+-+--+--+--+--+--+--+ |Dimension |1|3|7|13|21|31|43|57|73| +-----------+-+-+-+--+--+--+--+--+--+ |HilbertPoly|1|3|7|13|21|31|43|57|73| +-----------+-+-+-+--+--+--+--+--+--+

The dimension of splines of degree at most d on a complex $\Delta$ is eventually given by a polynomial in d, which is the Hilbert polynomial of the spline module. Below we illustrate with the Morgan-Scot partition. Notice that the Hilbert polynomial for the symmetric Morgan-Scot partition and the asymmetric Morgan-Scot partition are the same, however the Hilbert functions disagree in degree 2.

 i5 : V = {{-1,-1},{1,-1},{0,1},{10,10},{-10,10},{0,-10}}; i6 : V'= {{-1,-1},{1,-1},{0,1},{10,10},{-10,10},{1,-10}}; i7 : F = {{0,1,2},{2,3,4},{0,4,5},{1,3,5},{1,2,3},{0,2,4},{0,1,5}}; i8 : M = splineModule(V,F,1); i9 : hilbertPolynomial(M,Projective=>false) 7 2 15 o9 = -i - --i + 7 2 2 o9 : QQ[i] i10 : M' = splineModule(V',F,1); i11 : hilbertPolynomial(M',Projective=>false) 7 2 15 o11 = -i - --i + 7 2 2 o11 : QQ[i] i12 : hilbertComparisonTable(0,4,M) +-----------+-+-+-+--+--+ o12 = |Degree |0|1|2|3 |4 | +-----------+-+-+-+--+--+ |Dimension |1|3|7|16|33| +-----------+-+-+-+--+--+ |HilbertPoly|7|3|6|16|33| +-----------+-+-+-+--+--+ i13 : postulationNumber(M) --final integer for which hilbert function and polynomial disagree o13 = 2 i14 : hilbertComparisonTable(0,4,M') +-----------+-+-+-+--+--+ o14 = |Degree |0|1|2|3 |4 | +-----------+-+-+-+--+--+ |Dimension |1|3|6|16|33| +-----------+-+-+-+--+--+ |HilbertPoly|7|3|6|16|33| +-----------+-+-+-+--+--+ i15 : postulationNumber(M') o15 = 0

In the following example, we compare the hilbert polynomial and hilbert function of splines over a centrally triangulated octahedron; the behavior is very similar to the Morgan-Scot partition, except there is an extra degree of symmetry available which alters the Hilbert polynomials. Notice the use of the option Homogenize=>false to consider splines of degree precisely d instead of splines of degree at most d.

 i16 : V={{0,0,0},{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; --most symmetric variant i17 : V'={{0,0,0},{0,2,-1},{-1,-1,-1},{1,-1,-1},{0,-2,2},{1,1,2},{-1,1,2}}; --somewhat symmetric variant i18 : V''={{0,0,0},{10,1,1},{-1,10,1},{-1,1,10},{-10,1,-1},{1,-10,1},{-1,-1,-10}}; --asymmetric variant i19 : F={{0,1,2,3},{0,1,2,6},{0,1,3,5},{0,1,5,6},{0,2,3,4},{0,2,4,6},{0,3,4,5},{0,4,5,6}}; i20 : M=splineModule(V,F,1,Homogenize=>false); i21 : hilbertPolynomial(M,Projective=>false) 2 o21 = 4i - 12i + 20 o21 : QQ[i] i22 : M'=splineModule(V',F,1,Homogenize=>false); i23 : hilbertPolynomial(M',Projective=>false) 2 o23 = 4i - 12i + 14 o23 : QQ[i] i24 : M''=splineModule(V'',F,1,Homogenize=>false); i25 : hilbertPolynomial(M'',Projective=>false) 2 o25 = 4i - 12i + 14 o25 : QQ[i] i26 : hilbertComparisonTable(0,6,M) +-----------+--+--+--+--+--+--+--+ o26 = |Degree |0 |1 |2 |3 |4 |5 |6 | +-----------+--+--+--+--+--+--+--+ |Dimension |1 |3 |9 |19|36|60|92| +-----------+--+--+--+--+--+--+--+ |HilbertPoly|20|12|12|20|36|60|92| +-----------+--+--+--+--+--+--+--+ i27 : postulationNumber(M) --largest integer for which hilbert function and polynomial disagree o27 = 3 i28 : hilbertComparisonTable(0,6,M') +-----------+--+-+-+--+--+--+--+ o28 = |Degree |0 |1|2|3 |4 |5 |6 | +-----------+--+-+-+--+--+--+--+ |Dimension |1 |3|7|14|30|54|86| +-----------+--+-+-+--+--+--+--+ |HilbertPoly|14|6|6|14|30|54|86| +-----------+--+-+-+--+--+--+--+ i29 : postulationNumber(M') o29 = 2 i30 : hilbertComparisonTable(0,6,M'') +-----------+--+-+-+--+--+--+--+ o30 = |Degree |0 |1|2|3 |4 |5 |6 | +-----------+--+-+-+--+--+--+--+ |Dimension |1 |3|6|14|30|54|86| +-----------+--+-+-+--+--+--+--+ |HilbertPoly|14|6|6|14|30|54|86| +-----------+--+-+-+--+--+--+--+ i31 : postulationNumber(M'') o31 = 1

## Ways to use hilbertComparisonTable :

• "hilbertComparisonTable(ZZ,ZZ,Module)"

## For the programmer

The object hilbertComparisonTable is .