A multigraded Betti tally is a special type of BettiTally that both prints nicely and from which multigraded Betti numbers could be easily extracted.
i1 : R = ZZ/101[a..d, Degrees => {2:{1,0},2:{0,1}}]; |
i2 : I = ideal random(R^1, R^{2:{-2,-2},2:{-3,-3}}); o2 : Ideal of R |
i3 : t = betti res I 0 1 2 3 4 o3 = total: 1 4 13 14 4 0: 1 . . . . 1: . . . . . 2: . . . . . 3: . 2 . . . 4: . . . . . 5: . 2 . . . 6: . . 1 . . 7: . . 8 6 . 8: . . 4 8 4 o3 : BettiTally |
i4 : B = multigraded t 0 1 2 3 4 o4 = 0: 1 . . . . 4: . 2a2b2 . . . 6: . 2a3b3 . . . 8: . . a4b4 . . 9: . . 4a5b4+4a4b5 . . 10: . . 2a7b3+2a3b7 6a5b5 . 11: . . . 4a7b4+4a4b7 . 12: . . . . 2a7b5+2a5b7 o4 : MultigradedBettiTally |
By changing the weights, we can reorder the columns of the diagram. The following three displays show the first degree, the second degree, and the total degree, respectively.
i5 : betti(B, Weights => {1,0}) 0 1 2 3 4 o5 = 0: 1 . . . . 2: . 2a2b2 . . . 3: . 2a3b3 2a3b7 . . 4: . . 4a4b5+a4b4 4a4b7 . 5: . . 4a5b4 6a5b5 2a5b7 7: . . 2a7b3 4a7b4 2a7b5 o5 : MultigradedBettiTally |
i6 : betti(B, Weights => {0,1}) 0 1 2 3 4 o6 = 0: 1 . . . . 2: . 2a2b2 . . . 3: . 2a3b3 2a7b3 . . 4: . . 4a5b4+a4b4 4a7b4 . 5: . . 4a4b5 6a5b5 2a7b5 7: . . 2a3b7 4a4b7 2a5b7 o6 : MultigradedBettiTally |
i7 : betti(B, Weights => {1,1}) 0 1 2 3 4 o7 = 0: 1 . . . . 4: . 2a2b2 . . . 6: . 2a3b3 . . . 8: . . a4b4 . . 9: . . 4a5b4+4a4b5 . . 10: . . 2a7b3+2a3b7 6a5b5 . 11: . . . 4a7b4+4a4b7 . 12: . . . . 2a7b5+2a5b7 o7 : MultigradedBettiTally |
The object multigraded is a method function.