The diagram can be used to determine the degrees of the entries in the matrices of the differentials in a chain complex (which is a type of graded module) provided they are homogeneous maps of degree 0.
Here is a sample diagram.
i1 : R = ZZ/101[a..h] o1 = R o1 : PolynomialRing |
i2 : p = genericMatrix(R,a,2,4) o2 = | a c e g | | b d f h | 2 4 o2 : Matrix R <--- R |
i3 : q = generators gb p o3 = | g e c a 0 0 0 0 0 0 | | h f d b fg-eh dg-ch bg-ah de-cf be-af bc-ad | 2 10 o3 : Matrix R <--- R |
i4 : C = resolution cokernel leadTerm q 2 10 14 7 1 o4 = R <-- R <-- R <-- R <-- R <-- 0 0 1 2 3 4 5 o4 : ChainComplex |
i5 : betti C 0 1 2 3 4 o5 = total: 2 10 14 7 1 0: 2 4 6 4 1 1: . 6 8 3 . o5 : BettiTally |
Column j of the top row of the diagram gives the rank of the free module C_j. (Columns are numbered from 0.) The entry in column j in the row labelled i is the number of basis elements of (weighted) degree i+j in the free module C_j. When the chain complex is the resolution of a module the entries are the total and the graded Betti numbers of the module.
If the numbers are needed in a program, then they are accessible, because the value returned is a Betti tally, and the diagram you see on the screen is just the way it prints out.
The heft vector is used, by default, as the weight vector for weighting the components of the degree vectors of basis elements.
i6 : R = QQ[a,b,c,Degrees=>{-1,-2,-3}]; |
i7 : heft R o7 = {-1} o7 : List |
i8 : betti res coker vars R 0 1 2 3 o8 = total: 1 3 3 1 0: 1 1 . . 1: . 1 1 . 2: . 1 1 . 3: . . 1 1 o8 : BettiTally |
i9 : betti(oo, Weights => {1}) 0 1 2 3 o9 = total: 1 3 3 1 -9: . . . 1 -8: . . . . -7: . . 1 . -6: . . 1 . -5: . . 1 . -4: . 1 . . -3: . 1 . . -2: . 1 . . -1: . . . . 0: 1 . . . o9 : BettiTally |
i10 : R = QQ[a,b,c,d,Degrees=>{{1,0},{2,1},{0,1},{-2,1}}]; |
i11 : heft R o11 = {1, 3} o11 : List |
i12 : b = betti res coker vars R 0 1 2 3 4 o12 = total: 1 4 6 4 1 0: 1 2 1 . . 1: . . . . . 2: . 1 2 1 . 3: . . . . . 4: . 1 2 1 . 5: . . . . . 6: . . 1 2 1 o12 : BettiTally |
i13 : betti(b, Weights => {1,0}) 0 1 2 3 4 o13 = total: 1 4 6 4 1 -4: . . 1 1 . -3: . 1 1 1 1 -2: . . 1 1 . -1: . 1 1 . . 0: 1 1 1 1 . 1: . 1 1 . . o13 : BettiTally |
i14 : betti(b, Weights => {0,1}) 0 1 2 3 4 o14 = total: 1 4 6 4 1 -1: . 1 3 3 1 0: 1 3 3 1 . o14 : BettiTally |