Macaulay2 » Documentation
Packages » Macaulay2Doc > modules > Hilbert functions and free resolutions > poincare
next | previous | forward | backward | up | index | toc

poincare -- assemble degrees of a ring, module, or ideal into a polynomial

Synopsis

Description

This function computes the numerator of the reduced Hilbert series of a graded ring, or a graded module or ideal over a graded ring, which encodes information about the twists in the minimal free resolution of the object.

i1 : S = ZZ/101[w..z];
i2 : M = module monomialCurveIdeal(S, {1,3,4});
i3 : betti res M

            0 1 2
o3 = total: 4 4 1
         2: 1 . .
         3: 3 4 1

o3 : BettiTally
i4 : poincare M

      2     3     4    5
o4 = T  + 3T  - 4T  + T

o4 : ZZ[T]
i5 : hilbertSeries M

      2     3     4    5
     T  + 3T  - 4T  + T
o5 = -------------------
                  4
           (1 - T)

o5 : Expression of class Divide

When $S$ is a $\ZZ^r$-graded ring in $n$ variables and $M$ a graded $S$-module, the Hilbert series of $M$ is by definition the formal power series $$ HS(T_0,\dots,T_{n-1}) = \sum_{d\in\ZZ^r} \mathrm{dim}(M_d) T_0^{d_0} \cdots T_{n-1}^{d_{n-1}}. $$ The coefficient of the term $T_0^{d_0} \cdots T_{n-1}^{d_{n-1}}$ in the series is the number of basis elements of $M_{d_0,...,d_{n-1}}$. When the multi-degree has a single component, the coefficient of $T^d$ is dimension of $M_d$.

Since the Hilbert series is additive in exact sequences, the function poincare can be used to get information about the minimal free resolution and hence the syzygies of $M$. For more details, see Hilbert functions and free resolutions.

This polynomial is an element of the degrees ring of $S$. Notice that the monomial ordering used in the degrees ring is RevLex, so the polynomials in it will be displayed with the smallest exponents first.

compute the polynomial for a ring

  • Usage:
    poincare R
i6 : R = ZZ/101[x]/ideal(x^2);
i7 : poincare R

          2
o7 = 1 - T

o7 : ZZ[T]
i8 : numerator hilbertSeries R

          2
o8 = 1 - T

o8 : ZZ[T]

Recall that the variables of the polynomial are the variables of the degrees ring.

i9 : R = ZZ/101[x,y, DegreeRank => 2]/ideal(x^2*y);
i10 : poincare R

           2
o10 = 1 - T T
           0 1

o10 : ZZ[T ..T ]
          0   1
i11 : numerator hilbertSeries R

           2
o11 = 1 - T T
           0 1

o11 : ZZ[T ..T ]
          0   1

compute the polynomial for a module

  • Usage:
    poincare M
i12 : R = ZZ/101[w..z];
i13 : M = module monomialCurveIdeal(R, {1,3,4});
i14 : poincare M

       2     3     4    5
o14 = T  + 3T  - 4T  + T

o14 : ZZ[T]
i15 : numerator reduceHilbert hilbertSeries M

       2     3     4    5
o15 = T  + 3T  - 4T  + T

o15 : ZZ[T]

compute the polynomial for the quotient of a ring by an ideal

  • Usage:
    poincare I

The this command computes the numerator of the Hilbert series of the comodule R^1/I, where R is the ring of I.

i16 : R = ZZ/101[w..z];
i17 : I = monomialCurveIdeal(R, {1,3,4});

o17 : Ideal of R
i18 : poincare I

           2     3     4    5
o18 = 1 - T  - 3T  + 4T  - T

o18 : ZZ[T]
i19 : poincare comodule I

           2     3     4    5
o19 = 1 - T  - 3T  + 4T  - T

o19 : ZZ[T]
i20 : numerator hilbertSeries I

           2     3     4    5
o20 = 1 - T  - 3T  + 4T  - T

o20 : ZZ[T]
i21 : numerator reduceHilbert hilbertSeries I

                 2    3
o21 = 1 + 2T + 2T  - T

o21 : ZZ[T]
i22 : poincare module I

       2     3     4    5
o22 = T  + 3T  - 4T  + T

o22 : ZZ[T]

Caching of the result of poincare

When poincare M is called on a module $M$, the result is cached in M.cache.poincare for future reference. For ideals, the polynomial is cached in the comodule of the ideal and for matrices, it is cached in the cokernel of the matrix. This can speed the computation of Gröbner bases. For details, see computing Groebner bases.

If the numerator $p$ of the Hilbert series for a module $M$ is known by other means, it can be manually stored by running:


 poincare M = p -- cache poincare 

This functionality used to be available by running installHilbertFunction(M, p).

For example, in the following example, the Hilbert function of 3 random polynomials should be the same as the Hilbert function for a complete intersection.

i23 : R = ZZ/101[a..g];
i24 : I = ideal random(R^1, R^{3:-3});

o24 : Ideal of R
i25 : p = poincare ideal(a^3, b^3, c^3)

            3     6    9
o25 = 1 - 3T  + 3T  - T

o25 : ZZ[T]
i26 : poincare I = p

            3     6    9
o26 = 1 - 3T  + 3T  - T

o26 : ZZ[T]
i27 : gbTrace = 3

o27 = 3
i28 : time poincare I
     -- used 5.969e-6 seconds

            3     6    9
o28 = 1 - 3T  + 3T  - T

o28 : ZZ[T]
i29 : time gens gb I;

   -- registering gb 19 at 0x775c363441c0

   -- [gb]{3}(3,3)mmm{4}(2,2)mm{5}(3,3)mmm{6}(2,6)mm{7}(1,4)m{8}(0,2)number of (nonminimal) gb elements = 11
   -- number of monomials                = 4186
   -- #reduction steps = 38
   -- #spairs done = 11
   -- ncalls = 10
   -- nloop = 29
   -- nsaved = 0
   --      -- used 0.0137717 seconds

              1      11
o29 : Matrix R  <-- R

In this case, the savings is minimal, but often it can be dramatic. Another important situation is to compute a Gröbner basis using a different monomial order.

i30 : R = QQ[a..d];
i31 : I = ideal random(R^1, R^{3:-3});

   -- registering gb 20 at 0x775c36344000

   -- [gb]number of (nonminimal) gb elements = 0
   -- number of monomials                = 0
   -- #reduction steps = 0
   -- #spairs done = 0
   -- ncalls = 0
   -- nloop = 0
   -- nsaved = 0
   -- 
o31 : Ideal of R
i32 : time p = poincare I

   -- registering gb 21 at 0x775c3635be00

   -- [gb]{3}(3)mmm{4}(2)mm{5}(3)mmm{6}(6)mmoooo{7}(4)
 --removing gb 0 at 0x775c362218c0

 --removing gb 1 at 0x775c36344c40

 --removing gb 2 at 0x775c36221c40

 --removing gb 3 at 0x775c363448c0
mooo{8}(2)oonumber of (nonminimal) gb elements = 11
   -- number of monomials                = 267
   -- #reduction steps = 236
   -- #spairs done = 30
   -- ncalls = 10
   -- nloop = 20
   -- nsaved = 0
   --      -- used 0.0214918 seconds

            3     6    9
o32 = 1 - 3T  + 3T  - T

o32 : ZZ[T]
i33 : S = QQ[a..d, MonomialOrder => Eliminate 2]

o33 = S

o33 : PolynomialRing
i34 : J = substitute(I, S)

             2 3   4 2        2   5 3   5 2    3         2    5 2    1       
o34 = ideal (-a  + -a b + 2a*b  + -b  + -a c + -a*b*c + b c + -a d + -a*b*d +
             5     9              2     3      2              6      7       
      -----------------------------------------------------------------------
        2       2   5   2   1        1        9   2       2   8 3   4 2   
      2b d + a*c  + -b*c  + -a*c*d + -b*c*d + -a*d  + 3b*d  + -c  + -c d +
                    3       9        2        7               7     3     
      -----------------------------------------------------------------------
      3   2   3 3   3   6 2    5   2   1 3   6 2             1 2    6 2   
      -c*d  + -d , a  + -a b + -a*b  + -b  + -a c + 6a*b*c + -b c + -a d +
      5       2         5      2       4     5               3      7     
      -----------------------------------------------------------------------
               3 2       2      2    3        3        9   2   1   2   1 3  
      a*b*d + --b d + a*c  + b*c  + --a*c*d + -b*c*d + -a*d  + -b*d  + -c  +
              10                    10        8        4       2       3    
      -----------------------------------------------------------------------
      1 2        2   8 3  5 3   3 2    1   2   3 3     2            1 2   
      -c d + 2c*d  + -d , -a  + -a b + -a*b  + -b  + 7a c + a*b*c + -b c +
      2              7    7     2      3       2                    5     
      -----------------------------------------------------------------------
      5 2    6        5 2    1   2   1   2            3           2    1   2
      -a d + -a*b*d + -b d + -a*c  + -b*c  + 2a*c*d + -b*c*d + a*d  + --b*d 
      3      5        4      2       8                2               10    
      -----------------------------------------------------------------------
        7 3   8 2    7   2    3
      + -c  + -c d + -c*d  + d )
        5     5      8

o34 : Ideal of S
i35 : poincare J = p

            3     6    9
o35 = 1 - 3T  + 3T  - T

o35 : ZZ[T]
i36 : gbTrace = 3

o36 = 3
i37 : time gens gb J;

   -- registering gb 22 at 0x775c3635bc40

   -- [gb]{3}(3,3)mmm{4}(2,2)mm{5}(3,3)mmm{6}(3,7)mmm{7}(3,8)mmm{8}(3,9)mmm{9}(3,9)m
   -- mm{10}(2,8)mm{11}(1,5)m{12}(1,3)m{13}(1,3)m{14}(1,3)m{15}(1,3)m{16}(1,3)m
   -- {17}(1,3)m{18}(1,3)
 --removing gb 4 at 0x775c36344380

 --removing gb 5 at 0x775c69318e00

 --removing gb 6 at 0x775c69318700
m{19}(1,3)m{20}(1,3)m{21}(1,3)m{22}(1,3)m{23}(1,3)m{24}(1,3)m
   -- {25}(1,3)m{26}(1,3)m{27}(1,3)m{28}(0,2)number of (nonminimal) gb elements = 39
   -- number of monomials                = 1051
   -- #reduction steps = 284
   -- #spairs done = 53
   -- ncalls = 46
   -- nloop = 54
   -- nsaved = 0
   --      -- used 0.0557943 seconds

              1      39
o37 : Matrix S  <-- S
i38 : selectInSubring(1, gens gb J)

o38 = | 243873059890414515367459726418219472801881021280016638460434780718278
      -----------------------------------------------------------------------
      1440000c27+680473430096987971146702628170541552971659410296860500064419
      -----------------------------------------------------------------------
      8659321541120000c26d+11597364228740720976813725657514406124738091415081
      -----------------------------------------------------------------------
      708788717896930979185664000c25d2+
      -----------------------------------------------------------------------
      23593854948820747270541718485240316584065850799950623007351199460826287
      -----------------------------------------------------------------------
      616000c24d3+32743644647016475216170069528641722426835477775253543592889
      -----------------------------------------------------------------------
      918133322668441600c23d4+
      -----------------------------------------------------------------------
      33158095190154155829221377356630179888238312515669425233096064578894340
      -----------------------------------------------------------------------
      119040c22d5+15028595287222793638671643791164484488028666170821129484464
      -----------------------------------------------------------------------
      0913474618113410688c21d6-
      -----------------------------------------------------------------------
      21512804869970961505730654467974378533992989635620845013046053149115691
      -----------------------------------------------------------------------
      376640c20d7+28431980514156020200015862091261060783608362711779183901930
      -----------------------------------------------------------------------
      9806045574261823520c19d8+
      -----------------------------------------------------------------------
      16650730381353978595863327607516214447500495532056234936672555655369716
      -----------------------------------------------------------------------
      831120c18d9+87968827795245198558720802391460287994055816649663973831801
      -----------------------------------------------------------------------
      513286446550410048c17d10+
      -----------------------------------------------------------------------
      22959959692503790373650797595979928852024328895071866607353571279986753
      -----------------------------------------------------------------------
      6198896c16d11-186238464624475812059215969192404399881338554287087040105
      -----------------------------------------------------------------------
      246208136582238056824c15d12+
      -----------------------------------------------------------------------
      24548920676014640650981729325587232424855337187862713658240676351249839
      -----------------------------------------------------------------------
      5829972c14d13-141132193544414336210863578442532364572117789942199579134
      -----------------------------------------------------------------------
      726132062555878780658c13d14+
      -----------------------------------------------------------------------
      80520443561444628031196207946045746850357450872252370351009550385550378
      -----------------------------------------------------------------------
      086681c12d15-2278233247601720373545720827573468959013067281967477143592
      -----------------------------------------------------------------------
      7358914316617821352c11d16+
      -----------------------------------------------------------------------
      12315466375513693509230290342016673656670249832613715660807956483127262
      -----------------------------------------------------------------------
      733880c10d17+4719437472003410614922275085496115471668279624745540404962
      -----------------------------------------------------------------------
      433899525703062436c9d18+
      -----------------------------------------------------------------------
      74497958923598706042158991668350708405967894269886723021144934645580613
      -----------------------------------------------------------------------
      74608c8d19+334728676747320315154276056749403769663819349640069418486913
      -----------------------------------------------------------------------
      9937175077192912c7d20+2106534096122290217776886174919161239203477897917
      -----------------------------------------------------------------------
      158167686354319461999466336c6d21+
      -----------------------------------------------------------------------
      46016969029446996772206730674250118343258593659063037978247047403425711
      -----------------------------------------------------------------------
      5680c5d22+1542848777781200461682672598621194432349177258865304071672664
      -----------------------------------------------------------------------
      34720712424352c4d23+209766195470884862406436228545283251810588018452908
      -----------------------------------------------------------------------
      50471734381682038429280c3d24+
      -----------------------------------------------------------------------
      70221637578010351138072776173836055657918796706303534104710104349853120
      -----------------------------------------------------------------------
      0c2d25+9531871659255442565995582182062188830769684462513069209840585989
      -----------------------------------------------------------------------
      184000cd26+127037175535596202927970476797708894400916603090057099058781
      -----------------------------------------------------------------------
      42251744000d27 |

              1      1
o38 : Matrix S  <-- S

Caveat

This function may behave unpredictably in presence of variables of degree zero.

See also

Ways to use poincare :

For the programmer

The object poincare is a method function.