Macaulay2 » Documentation
Packages » Macaulay2Doc » The Macaulay2 language » hash tables » HashTable » VirtualTally » BettiTally
next | previous | forward | backward | up | index | toc

# BettiTally -- the class of all Betti tallies

## Description

A Betti tally is a special type of Tally that is printed as a display of graded Betti numbers. The class was created so the function betti could return something that both prints nicely and from which information can be extracted. 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 to betti(BettiTally).

    i1 : t = new BettiTally from { (0,{0},0) => 1, (1,{1},1) => 2, (2,{3},3) => 3, (2,{4},4) => 4 }

                0 1 2
    o1 = total: 1 2 7
             0: 1 2 .
             1: . . 3
             2: . . 4

    o1 : BettiTally

    i2 : betti(t, Weights => {2})

                0 1 2
    o2 = total: 1 2 7
             0: 1 . .
             1: . 2 .
             2: . . .
             3: . . .
             4: . . 3
             5: . . .
             6: . . 4

    o2 : BettiTally

    i3 : peek oo

    o3 = BettiTally{(0, {0}, 0) => 1}
                    (1, {1}, 2) => 2
                    (2, {3}, 6) => 3
                    (2, {4}, 8) => 4

For convenience, the operations of direct sum (++), tensor product (**), codim, degree, dual, pdim, poincare, regularity, and degree shifting (numbers in brackets or parentheses), have been implemented for Betti tallies. These operations mimic the corresponding operations on chain complexes.

    i4 : t(5)

                0 1 2
    o4 = total: 1 2 7
            -5: 1 2 .
            -4: . . 3
            -3: . . 4

    o4 : BettiTally

    i5 : t[-5]

                5 6 7
    o5 = total: 1 2 7
            -5: 1 2 .
            -4: . . 3
            -3: . . 4

    o5 : BettiTally

    i6 : dual oo

                -7 -6 -5
    o6 = total:  7  2  1
             3:  4  .  .
             4:  3  .  .
             5:  .  2  1

    o6 : BettiTally

    i7 : t ++ oo

                -7 -6 -5 -4 -3 -2 -1 0 1 2
    o7 = total:  7  2  1  .  .  .  . 1 2 7
             0:  .  .  .  .  .  .  . 1 2 .
             1:  .  .  .  .  .  .  . . . 3
             2:  .  .  .  .  .  .  . . . 4
             3:  4  .  .  .  .  .  . . . .
             4:  3  .  .  .  .  .  . . . .
             5:  .  2  1  .  .  .  . . . .

    o7 : BettiTally

    i8 : t ** t

                0 1  2  3  4
    o8 = total: 1 4 18 28 49
             0: 1 4  4  .  .
             1: . .  6 12  .
             2: . .  8 16  9
             3: . .  .  . 24
             4: . .  .  . 16

    o8 : BettiTally

    i9 : pdim t

    o9 = 2

    i10 : codim t

    o10 = 0

    i11 : degree t

    o11 = 6

    i12 : poincare t

                     3     4
    o12 = 1 - 2T + 3T  + 4T

    o12 : ZZ[T]

    i13 : regularity t

    o13 = 2

If the Betti tally represents the Betti numbers of a resolution of a module $M$ on a polynomial ring $R = K[x_0,...,x_n]$, then while the data does not uniquely determine $M$, it suffices to compute the Hilbert polynomial and Hilbert series of $M$.

    i14 : n = 3

    o14 = 3

    i15 : hilbertSeries(n, t)

                     3     4
          1 - 2T + 3T  + 4T
    o15 = ------------------
                      3
               (1 - T)

    o15 : Expression of class Divide

    i16 : hilbertPolynomial(n, t)

    o16 = 33*P  - 23*P  + 6*P
              0       1      2

    o16 : ProjectiveHilbertPolynomial

A Betti tally can be multiplied by an integer or by a rational number, and the values can be lifted to integers, when possible.

    i17 : (1/2) * t

                 0 1 2
                 1   7
    o17 = total: - 1 -
                 2   2
                 1
              0: - 1 .
                 2
                     3
              1: . . -
                     2
              2: . . 2

    o17 : BettiTally

    i18 : 2 * oo

                 0 1 2
    o18 = total: 1 2 7
              0: 1 2 .
              1: . . 3
              2: . . 4

    o18 : BettiTally

    i19 : lift(oo,ZZ)

                 0 1 2
    o19 = total: 1 2 7
              0: 1 2 .
              1: . . 3
              2: . . 4

    o19 : BettiTally

### Menu

- MultigradedBettiTally -- the class of all multigraded Betti tallies

## Types of Betti tally:

- MultigradedBettiTally -- the class of all multigraded Betti tallies

## Functions and methods returning a Betti tally:

- betti -- display or modify a Betti diagram
- `BettiTally ** BettiTally`
- `BettiTally ++ BettiTally`
- `BettiTally Array`
- `BettiTally ZZ`
- `dual(BettiTally)`
- `lift(BettiTally,type of ZZ)`
- `QQ * BettiTally`
- `ZZ * BettiTally`
- minimalBetti -- minimal betti numbers of (the minimal free resolution of) a homogeneous ideal or module
- `minimalBetti(Ideal)` -- see minimalBetti -- minimal betti numbers of (the minimal free resolution of) a homogeneous ideal or module
- `minimalBetti(Module)` -- see minimalBetti -- minimal betti numbers of (the minimal free resolution of) a homogeneous ideal or module
- truncate(BettiTally,InfiniteNumber,InfiniteNumber) (missing documentation)
- truncate(BettiTally,InfiniteNumber,ZZ) (missing documentation)
- truncate(BettiTally,ZZ,InfiniteNumber) (missing documentation)
- truncate(BettiTally,ZZ,ZZ) (missing documentation)

## Methods that use a Betti tally:

- betti(BettiTally) -- view and set the weight vector of a Betti diagram
- `codim(BettiTally)`
- `degree(BettiTally)`
- `hilbertPolynomial(ZZ,BettiTally)`
- `hilbertSeries(ZZ,BettiTally)`
- `pdim(BettiTally)`
- `poincare(BettiTally)`
- `regularity(BettiTally)`
- `multigraded(BettiTally)` -- see multigraded -- convert a Betti tally into a multigraded Betti tally
- Ring ^ BettiTally

## For the programmer

The object BettiTally is a type, with ancestor classes VirtualTally < HashTable < Thing.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/Macaulay2Doc/functions/betti-doc.m2:249:0.