next | previous | forward | backward | up | top | index | toc | Macaulay2 website
AlgebraicSplines :: hilbertComparisonTable

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

Synopsis

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 :

For the programmer

The object hilbertComparisonTable is a method function.