next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Complexes :: poincare(Complex)

poincare(Complex) -- assemble degrees of a chain complex into a polynomial

Synopsis

Description

This method encodes information about the degrees of the generators of each term in a chain complex. It returns an element in the degrees ring, which is the ring of Laurent polynomials whose monomials correspond to the degrees of the monomials in the underlying ring of $C$. When the $i$-th term $C_i$ of the complex $C$ is generated by elements of degree $d_{i,1}, d_{i,2}, \dotsc$, this Laurent polynomial is $\sum_i (-1)^i \sum_j T^{d_{i,j}}$, where we use multi-index notation $T^d = T_0^{d_0} T_1^{d_1} \dotsb T_r^{d_r}$.

i1 : R = ZZ/32003[a..f];
i2 : K = koszulComplex vars R

      1      6      15      20      15      6      1
o2 = R  <-- R  <-- R   <-- R   <-- R   <-- R  <-- R
                                                   
     0      1      2       3       4       5      6

o2 : Complex
i3 : betti K

            0 1  2  3  4 5 6
o3 = total: 1 6 15 20 15 6 1
         0: 1 6 15 20 15 6 1

o3 : BettiTally
i4 : p = poincare K

                 2      3      4     5    6
o4 = 1 - 6T + 15T  - 20T  + 15T  - 6T  + T

o4 : ZZ[T]
i5 : factor p

            6
o5 = (1 - T)

o5 : Expression of class Product
i6 : C = freeResolution ideal(a*b, b*c*d, c*d*e^2)

      1      3      2
o6 = R  <-- R  <-- R
                    
     0      1      2

o6 : Complex
i7 : betti C

            0 1 2
o7 = total: 1 3 2
         0: 1 . .
         1: . 1 .
         2: . 1 1
         3: . 1 1

o7 : BettiTally
i8 : poincare C

          2    3    5
o8 = 1 - T  - T  + T

o8 : ZZ[T]

Since the number of variables in the degrees ring is equal to the rank of the grading group, the Poincare polynomial may have more than one variable.

i9 : S = ZZ/101[x,y,z, DegreeRank => 3];
i10 : L = koszulComplex vars S

       1      3      3      1
o10 = S  <-- S  <-- S  <-- S
                            
      0      1      2      3

o10 : Complex
i11 : poincare L

o11 = 1 - T  - T  - T  + T T  + T T  + T T  - T T T
           0    1    2    0 1    0 2    1 2    0 1 2

o11 : ZZ[T ..T ]
          0   2

If the terms in the complex are not free, then this method uses just the degrees of the generators of each term.

i12 : D = C ** coker vars R

o12 = cokernel | a b c d e f | <-- cokernel {2} | a b c d e f 0 0 0 0 0 0 0 0 0 0 0 0 | <-- cokernel {4} | a b c d e f 0 0 0 0 0 0 |
                                            {3} | 0 0 0 0 0 0 a b c d e f 0 0 0 0 0 0 |              {5} | 0 0 0 0 0 0 a b c d e f |
      0                                     {4} | 0 0 0 0 0 0 0 0 0 0 0 0 a b c d e f |      
                                                                                            2
                                   1

o12 : Complex
i13 : poincare D

           2    3    5
o13 = 1 - T  - T  + T

o13 : ZZ[T]
i14 : betti D

             0 1 2
o14 = total: 1 3 2
          0: 1 . .
          1: . 1 .
          2: . 1 1
          3: . 1 1

o14 : BettiTally

This is equivalent to computing the Poincare polynomial of the Betti table.

i15 : poincare betti D

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

o15 : ZZ[T]

See also