poincare

poincare C -- encodes information about the degrees of basis elements of a free chain complex in a polynomial.
poincare M -- the same information about the free resolution of a module M.

The polynomial has a term (-1)^i T_0^(d_0) ... T_(n-1)^(d_(n-1)) in it for each basis element of C_i with multi-degree {d_0,...,d_(n-1)}. When the multi-degree has a single component, the term is (-1)^i T^(d_0).

The variable T is defined in a hidden local scope, so will print out as $T and not be directly accessible.

i1 : R = ZZ/101[x_0 .. x_3,y_0 .. y_3]

o1 = R

o1 : PolynomialRing
i2 : m = matrix table (2, 2, (i,j) -> x_(i+2*j))

o2 = {0} | x_0 x_2 |
     {0} | x_1 x_3 |

             2       2
o2 : Matrix R  <--- R
i3 : n = matrix table (2, 2, (i,j) -> y_(i+2*j))

o3 = {0} | y_0 y_2 |
     {0} | y_1 y_3 |

             2       2
o3 : Matrix R  <--- R
i4 : f = flatten (m*n - n*m)

o4 = {0} | x_2y_1-x_1y_2 x_1y_0-x_0y_1+x_3y_1-x_1y_3 -x_2y_0+x_0y_2-x_3y_2+x_2y_3 -x_2y_1+x_1y_2 |

             1       4
o4 : Matrix R  <--- R
i5 : poincare cokernel f

        3      2
o5 = 2$T  - 3$T  + 1

o5 : ZZ[ZZ^1]

(cokernel f).poincare = p -- inform the system that the Poincare polynomial of the cokernel of f is p. This can speed the computation of a Groebner basis of f.

i6 : R = ZZ/101[t_0 .. t_17]

o6 = R

o6 : PolynomialRing
i7 : T = (degreesRing R)_0

o7 = $T

o7 : ZZ[ZZ^1]
i8 : f = genericMatrix(R,t_0,3,6)

o8 = {0} | t_0 t_3 t_6 t_9  t_12 t_15 |
     {0} | t_1 t_4 t_7 t_10 t_13 t_16 |
     {0} | t_2 t_5 t_8 t_11 t_14 t_17 |

             3       6
o8 : Matrix R  <--- R
i9 : (cokernel f).poincare = 3-6*T+15*T^2-20*T^3+15*T^4-6*T^5+T^6

       6      5       4       3       2
o9 = $T  - 6$T  + 15$T  - 20$T  + 15$T  - 6$T + 3

o9 : ZZ[ZZ^1]
i10 : gb f

o10 = {0} | t_15 t_12 t_9  t_6 t_3 t_0 |
      {0} | t_16 t_13 t_10 t_7 t_4 t_1 |
      {0} | t_17 t_14 t_11 t_8 t_5 t_2 |

o10 : GroebnerBasis

Keys used:
  • poincareComputation

  • topindexpreviousupnext