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 |