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:




