The following lines construct the homological Serre spectral sequence for the Hopf fibration S^3 \to S^2.
i1 : Q = coupleRing(ZZ,1,e,f,Degrees=>{{-1,0},{2,-2}}) o1 = Q o1 : PolynomialRing |
i2 : declareCouple(Q, {z => {4,0}}, {x => {1,0}, y => {1,2}, w => {5,2}}) o2 = cokernel {5, 2} | e_1^2 e_1f_1 0 0 0 0 0 0 | {1, 0} | 0 0 e_1^2 e_1f_1 0 0 0 0 | {1, 2} | 0 0 0 0 e_1^2 e_1f_1 0 0 | {4, 0} | 0 0 0 0 0 0 e_1^3 f_1 | 4 o2 : Q-module, quotient of Q |
i3 : C = cospan(e_1*z-f_1*y) o3 = cokernel {5, 2} | 0 e_1^2 e_1f_1 0 0 0 0 0 0 | {1, 0} | 0 0 0 e_1^2 e_1f_1 0 0 0 0 | {1, 2} | -f_1 0 0 0 0 e_1^2 e_1f_1 0 0 | {4, 0} | e_1 0 0 0 0 0 0 e_1^3 f_1 | 4 o3 : Q-module, quotient of Q |
i4 : isHomogeneous C o4 = true |
i5 : expectExactCouple C |
Use plotPages to show the first three pages
i6 : plotPages((0..3,0..2,1..3), prune @@ evaluateInDegree, C) page 1, with differential of degree {-1, 0}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ | || 1| | 1| | |q=1||ZZ |0 |ZZ |0 | +---++---+---+---+---+ | || 1| | 1| | |q=0||ZZ |0 |ZZ |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ page 2, with differential of degree {-2, 1}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ | || 1| | 1| | |q=1||ZZ |0 |ZZ |0 | +---++---+---+---+---+ | || 1| | 1| | |q=0||ZZ |0 |ZZ |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ page 3, with differential of degree {-3, 2}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ | || | | 1| | |q=1||0 |0 |ZZ |0 | +---++---+---+---+---+ | || 1| | | | |q=0||ZZ |0 |0 |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ |
and the tenth page
i7 : plotPages((0..3,0..2,10), prune @@ evaluateInDegree, C) page 10, with differential of degree {-10, 9}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ | || | | 1| | |q=1||0 |0 |ZZ |0 | +---++---+---+---+---+ | || 1| | | | |q=0||ZZ |0 |0 |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ |
The usual choices for f are evaluateInDegree or hilbertFunction:
i8 : plotPages((0..3,0..2,1..3), hilbertFunction, C) page 1, with differential of degree {-1, 0}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ |q=1||1 |0 |1 |0 | +---++---+---+---+---+ |q=0||1 |0 |1 |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ page 2, with differential of degree {-2, 1}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ |q=1||1 |0 |1 |0 | +---++---+---+---+---+ |q=0||1 |0 |1 |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ page 3, with differential of degree {-3, 2}: +---++---+---+---+---+ |q=2||0 |0 |0 |0 | +---++---+---+---+---+ |q=1||0 |0 |1 |0 | +---++---+---+---+---+ |q=0||1 |0 |0 |0 | +---++---+---+---+---+ | ||p=0|p=1|p=2|p=3| +---++---+---+---+---+ |
This function assumes that the couple C is bi-graded so that $deg(e)$ and $deg(f)$ are lists of length two. If this is not the case, then you can still form derived couples and probe them using evaluateInDegree, but plotPages will not work.
The object plotPages is a method function.