next | previous | forward | backward | up | top | index | toc | Macaulay2 website
ExactCouples :: Bockstein spectral sequence

Bockstein spectral sequence -- a singly-graded spectral sequence built from the chain self-map "multiplication by p"

Bockstein Spectral Sequence

Let p be a prime number, and suppose C is a chain complex over the integers; then multiplication by p induces a chain map $C --> C$, and so we have a chain complex with a self-map, placing us in the algebraic context to obtain an exact couple.

For example, let C be the cellular cochain complex for the real projective space $\mathbb{R}P^3$ and its usual cell structure with a single cell in each degree:

Z --0--> Z --2--> Z --0--> Z —-> 0

Name the classes p0, p1, p2, and p3, specify the differential by imposing relations of the form d*pk = d(pk), and set t to act by 2 by tensoring with R^1/(t-2) (this is a convenient way to impose the relation that every generator g has t*g = 2*g):

i1 : Q = ZZ[d, f, Degrees => {1,0}]/d^2;
i2 : declareGenerators(Q, {p0 => 0, p1 => 1, p2 => 2, p3 => 3});
i3 : C = cospan(d*p0, d*p1-2*p2, d*p2, d*p3) ** Q^1/(f-2); C

o4 = cokernel {3} | f-2 0   0   0   0 0  0 d |
              {0} | 0   f-2 0   0   d 0  0 0 |
              {1} | 0   0   f-2 0   0 d  0 0 |
              {2} | 0   0   0   f-2 0 -2 d 0 |

                            4
o4 : Q-module, quotient of Q
i5 : isHomogeneous C

o5 = true

This C is the right sort of module to give to exactCouple since it carries an action of a ring of the form R[d,f]/d^2

i6 : bock = exactCouple C
warning: clearing value of symbol f to allow access to subscripted variables based on it
       : debug with expression   debug 3406   or with command line option   --debug 3406

o6 = cokernel {5}  | f_1-2 2e_1 0 e_1^2 0     0    0 0     0 0   0 0     0       0 0 e_1^2 e_1f_1 0     0      0     0   |
              {-1} | 0     0    0 0     f_1-2 2e_1 0 e_1^2 0 0   0 0     0       0 0 0     0      e_1^2 e_1f_1 0     0   |
              {2}  | 0     0    0 0     0     0    0 0     2 f_1 0 -2e_1 -e_1f_1 0 0 0     0      0     0      e_1^3 f_1 |

                                                3
o6 : ZZ[e , f ]-module, quotient of (ZZ[e , f ])
         1   1                           1   1
i7 : expectExactCouple bock
i8 : P1 = prune pageModule(1,D,bock)

o8 = cokernel {3} | 0 0   0 2 D_1 |
              {0} | 2 D_1 0 0 0   |
              {1} | 0 0   2 0 0   |

     ZZ[D ]                     /ZZ[D ]\
         1                      |    1 |3
o8 : -------module, quotient of |------|
        2                       |   2  |
       D                        |  D   |
        1                       \   1  /

Since the generators of the E_1-page are annihilated by 2, the same will be true on subsequent pages.

i9 : P2 = prune pageModule(2,D,bock)
warning: clearing value of symbol e to allow access to subscripted variables based on it
       : debug with expression   debug 3903   or with command line option   --debug 3903
warning: clearing value of symbol f to allow access to subscripted variables based on it
       : debug with expression   debug 3406   or with command line option   --debug 3406

o9 = cokernel {3} | 0 0   2 D_2 |
              {0} | 2 D_2 0 0   |

     ZZ[D ]                     /ZZ[D ]\
         2                      |    2 |2
o9 : -------module, quotient of |------|
        2                       |   2  |
       D                        |  D   |
        2                       \   2  /
i10 : P3 = prune pageModule(3,D,bock)

o10 = cokernel {3} | 0 0   2 D_3 |
               {0} | 2 D_3 0 0   |

      ZZ[D ]                     /ZZ[D ]\
          3                      |    3 |2
o10 : -------module, quotient of |------|
         2                       |   2  |
        D                        |  D   |
         3                       \   3  /

It is always the case that the the pages of the Bockstein spectral sequence are defined over the field ZZ/p; indeed this is its main useful property.

i11 : P1' = prune(map((ZZ/2)[D_1],ring P1) ** P1)

o11 = cokernel {3} | 0   D_1 |
               {0} | D_1 0   |
               {1} | 0   0   |

      ZZ                          ZZ     3
o11 : --[D ]-module, quotient of (--[D ])
       2  1                        2  1
i12 : P2' = prune(map((ZZ/2)[D_2],ring P1) ** P1)

       ZZ     3
o12 = (--[D ])
        2  2

      ZZ
o12 : --[D ]-module, free, degrees {3, 0..1}
       2  2
i13 : P3' = prune(map((ZZ/2)[D_3],ring P1) ** P1)

       ZZ     3
o13 = (--[D ])
        2  3

      ZZ
o13 : --[D ]-module, free, degrees {3, 0..1}
       2  3

See also