## Synopsis

• Function: betti
• Usage:
betti C
• Inputs:
• C,
• Optional inputs:
• Weights => a list, default value null, a list of integers whose dot product with the multidegree of a basis element is enumerated in the display returned. The default is the heft vector of the ring. See heft vectors.
• Minimize => ..., default value false, minimal betti numbers of a non-minimal free resolution
• Outputs:
• , a diagram showing the degrees of the generators of the modules in C

## Description

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 , 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