Any map of cochain complexes gives a long exact sequence in cohomology. Considering M to be a sequence of cochain complexes connected by maps— the cochain complex structure comes from the action of d, and the maps come from the action of f—we obtain an interlocking sequence of long exact sequences.
The output module encodes the exact couple by placing the page data in degrees of the form (2*p, 2*q) and the auxiliary data at the midpoints of the differentials. (The 2s ensure that these midpoints are still valid bidegrees.)
We build the cochain complex for the simplicial complex with vertices {a,b,c} and facets {ab,ac,bc}, placing it in row 0. In row 1, we mod out by (bc); in row 2, by (ac,bc), continuing until every simplex is annihilated in row 7.
i1 : R = QQ[d,t,Degrees=>{{0,1},{1,0}}]/d^2; |
i2 : declareGenerators(R,{a=>{0,0},b=>{0,0},c=>{0,0},ab=>{0,1},ac=>{0,1},bc=>{0,1}}); |
i3 : M = cospan(d*a+ab+ac, d*b-ab+bc, d*c-ac-bc, d*ab, d*ac, d*bc, t*bc, t^2*ac, t^3*ab, t^4*c, t^5*b, t^6*a); |
i4 : netList table(7,4,(i,j)->hilbertFunction({6-i,j},M)) -- each row is a cochain complex +-+-+-+-+ o4 = |0|0|0|0| +-+-+-+-+ |1|0|0|0| +-+-+-+-+ |2|0|0|0| +-+-+-+-+ |3|0|0|0| +-+-+-+-+ |3|1|0|0| +-+-+-+-+ |3|2|0|0| +-+-+-+-+ |3|3|0|0| +-+-+-+-+ |
i5 : Q = QQ[e_1,f_1,Degrees=>{{-1,1},{2,0}}]; |
i6 : E1 = exactCouple(Q, M) o6 = cokernel {1, -1} | e_1^2 e_1f_1 0 0 0 0 0 0 0 0 0 f_1^4 0 0 0 0 0 0 0 0 e_1^2 e_1f_1 0 0 0 0 0 0 0 0 0 0 0 0 | {2, 0} | 0 0 0 f_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e_1^3 f_1 0 0 0 0 0 0 0 0 0 0 | {5, -1} | 0 0 0 0 e_1^2 f_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e_1^2 e_1f_1 0 0 0 0 0 0 0 0 | {8, -2} | 0 0 0 0 0 -e_1 0 f_1 e_1^2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e_1^3 f_1 0 0 0 0 0 0 | {7, -1} | 0 0 0 0 0 0 0 0 0 0 e_1^2 -f_1 0 0 0 0 f_1^2 0 0 0 0 0 0 0 0 0 0 0 e_1^2 e_1f_1 0 0 0 0 | {10, -2} | 0 0 0 0 0 0 0 0 0 0 0 -e_1 0 f_1 e_1^2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e_1^3 f_1 0 0 | {12, -2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -e_1 0 f_1 0 0 0 0 0 0 0 0 0 0 0 0 0 e_1^3 f_1 | 7 o6 : Q-module, quotient of Q |
i7 : for r from 1 to 7 do ( print("page " | r |": "); print prune pageModule(r,D,E1); print " "; ); 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 page 1: cokernel {0, 0} | 0 0 0 0 0 D_1 | {1, 0} | 0 0 0 0 0 0 | {2, 0} | 0 0 0 0 D_1 0 | {4, -1} | 0 0 D_1 0 0 0 | {3, 0} | 0 0 0 D_1 0 0 | {5, -1} | 0 D_1 0 0 0 0 | {6, -1} | D_1 0 0 0 0 0 | page 2: cokernel {4, -1} | 0 0 | {5, -1} | 0 0 | {6, -1} | D_2 0 | {0, 0} | 0 D_2 | page 3: cokernel {6, -1} | D_3 0 | {0, 0} | 0 D_3 | page 4: cokernel {6, -1} | D_4 0 | {0, 0} | 0 D_4 | page 5: cokernel {6, -1} | D_5 0 | {0, 0} | 0 D_5 | page 6: /QQ[D ]\ | 6 |1 |------| | 2 | | D | \ 6 / page 7: 0 |
i8 : plotPages((0..7,-2..2,1..7),prune @@ evaluateInDegree,E1) page 1, with differential of degree {-1, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | | | | | | | |q=1 ||QQ |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| 1| 1| 1| | | | | |q=0 ||QQ |QQ |QQ |QQ |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | 1| 1| 1| | |q=-1||0 |0 |0 |0 |QQ |QQ |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 2, with differential of degree {-2, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | 1| 1| | | | | |q=0 ||QQ |0 |QQ |QQ |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | 1| 1| 1| | |q=-1||0 |0 |0 |0 |QQ |QQ |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 3, with differential of degree {-3, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | | | | | | | |q=0 ||QQ |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | | | 1| | |q=-1||0 |0 |0 |0 |0 |0 |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 4, with differential of degree {-4, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | | | | | | | |q=0 ||QQ |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | | | 1| | |q=-1||0 |0 |0 |0 |0 |0 |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 5, with differential of degree {-5, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | | | | | | | |q=0 ||QQ |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | | | 1| | |q=-1||0 |0 |0 |0 |0 |0 |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 6, with differential of degree {-6, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || 1| | | | | | | | |q=0 ||QQ |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | || | | | | | | 1| | |q=-1||0 |0 |0 |0 |0 |0 |QQ |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ page 7, with differential of degree {-7, 1}: +----++---+---+---+---+---+---+---+---+ |q=2 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=1 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=0 ||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=-1||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ |q=-2||0 |0 |0 |0 |0 |0 |0 |0 | +----++---+---+---+---+---+---+---+---+ | ||p=0|p=1|p=2|p=3|p=4|p=5|p=6|p=7| +----++---+---+---+---+---+---+---+---+ |
The object exactCouple is a method function.