Description
The function betti creates and displays the Betti diagram of mathematical objects that can be presented using graded free modules and graded maps between them, such as ideals, modules, and chain complexes. The returned BettiTally encapsulates the data from the entries of the displayed Betti diagram, in case they are needed in a program.
i1 : S = QQ[x,y,z,w];
|
i2 : I = monomialCurveIdeal(S, {1,2,3})
2 2
o2 = ideal (z - y*w, y*z - x*w, y - x*z)
o2 : Ideal of S
|
i3 : t = betti res I
0 1 2
o3 = total: 1 3 2
0: 1 . .
1: . 3 2
o3 : BettiTally
|
i4 : peek oo
o4 = BettiTally{(0, {0}, 0) => 1}
(1, {2}, 2) => 3
(2, {3}, 3) => 2
|
i5 : t#(1, {2}, 2)
o5 = 3
|
The keys are triples (i,d,h) encoding:
i, the column labels, representing the homological degree;
d, a list of integers giving a multidegree; and
h, the row labels, representing the dot product of a weight covector and d.
Only i and h are used in printing, and the weight covector can be modified by specifying the betti(...,Weights=>...) option. The heft vector of the ring of the input object is the default choice for the weight covector.
i6 : R = QQ[a,b,c, Degrees => {-1,-2,-3}];
|
i7 : heft R
o7 = {-1}
o7 : List
|
i8 : betti koszul 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
|
If the ring has no heft vector, then the weights vector is taken to be all zero. If the option betti(...,Weights=>...) is provided, the length of the given weight vector should be the same as the degree length of the ring of the input object.
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
|
If the ring is multigraded, the function multigraded(BettiTally) may be used to extract information from all degree components of the Betti diagram at once.
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
|
i15 : multigraded B
0 1 2 3 4
o15 = 0: 1 . . . .
1: . a+a^(-2)*b . . .
2: . . a^(-1)*b . .
3: . b . . .
4: . . a*b+a^(-2)*b^2 . .
5: . a^2*b . a^(-1)*b^2 .
6: . . a^3*b+b^2 . .
7: . . . a*b^2 .
8: . . a^2*b^2 . .
9: . . . a^3*b^2+b^3 .
10: . . . . a*b^3
o15 : MultigradedBettiTally
|
Betti table of a Groebner basis
-
- Usage:
betti G
-
Inputs:
-
Outputs:
-
a Betti tally, a diagram showing the degrees of the generators of the source and target modules of the matrix of generators of G
i16 : S = ZZ/10007[x,y];
|
i17 : G = gb ideal(x^3+y^3, x*y^4);
|
i18 : gens G
o18 = | x3+y3 xy4 y7 |
1 3
o18 : Matrix S <-- S
|
i19 : betti G
0 1
o19 = total: 1 3
0: 1 .
1: . .
2: . 1
3: . .
4: . 1
5: . .
6: . 1
o19 : BettiTally
|
Betti diagram showing the degrees of the target and source of a map
-
- Usage:
betti f
-
Inputs:
-
Outputs:
-
a Betti tally, a diagram showing the degrees of the generators of the source and target modules of f
The diagram ignores the degree of the map itself.
i20 : S = ZZ/10007[x,y];
|
i21 : betti matrix {{x^3, x*y^2}, {y*x, y^2}}
0 1
o21 = total: 2 2
0: 2 .
1: . .
2: . 2
o21 : BettiTally
|
Betti diagram showing the degrees of generators and relations of a homogeneous module
-
- Usage:
betti M
-
Inputs:
-
Outputs:
-
a Betti tally, showing the zero-th, first graded, and total Betti numbers of $M$.
Note that the Betti numbers are not minimized.
i22 : S = ZZ/10007[x,y];
|
i23 : betti coker matrix{{x^3, x*y^2}, {y*x^2, y^3}}
0 1
o23 = total: 2 2
0: 2 .
1: . .
2: . 2
o23 : BettiTally
|
i24 : betti coker map(S^{0,-1}, , matrix{{x^2, y}, {y^3, x^2}})
0 1
o24 = total: 2 2
0: 1 .
1: 1 .
2: . 1
3: . 1
o24 : BettiTally
|
Also see betti(CoherentSheaf) (missing documentation)
.
Betti diagram showing the degrees of generators of a homogeneous ideal
-
- Usage:
betti I
-
Inputs:
-
Outputs:
-
a Betti tally, showing the degrees of the generators and relations of the quotient of the ambient ring by $I$
Note that the Betti numbers are not minimized.
i25 : S = ZZ/10007[x,y];
|
i26 : I = ideal(x,x^2,y^3);
o26 : Ideal of S
|
i27 : betti I
0 1
o27 = total: 1 3
0: 1 1
1: . 1
2: . 1
o27 : BettiTally
|
i28 : betti comodule I
0 1
o28 = total: 1 3
0: 1 1
1: . 1
2: . 1
o28 : BettiTally
|
Betti diagram showing the of degrees in a graded module or chain complex
-
- Usage:
betti C
-
Inputs:
-
Outputs:
-
a Betti tally, showing the degrees of the generators of the modules in C
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.
i29 : R = ZZ/101[a..h]
o29 = R
o29 : PolynomialRing
|
i30 : p = genericMatrix(R,a,2,4)
o30 = | a c e g |
| b d f h |
2 4
o30 : Matrix R <-- R
|
i31 : q = generators gb p
o31 = | 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
o31 : Matrix R <-- R
|
i32 : C = resolution cokernel leadTerm q
2 10 14 7 1
o32 = R <-- R <-- R <-- R <-- R <-- 0
0 1 2 3 4 5
o32 : ChainComplex
|
i33 : betti C
0 1 2 3 4
o33 = total: 2 10 14 7 1
0: 2 4 6 4 1
1: . 6 8 3 .
o33 : BettiTally
|
Column j of the top row of the diagram gives the rank of the free module C_j. 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.