This function calls monomialIdealsWithHilbertFunction with the specified options, determines the Betti table of each feasible monomial ideal, then lists or tallies the Betti tables encountered. The Count option does not fundamentally change how the computation is performed, only how the results are reported.
i1 : R = QQ[x,y,z]; L = {1, 3, 5, 5, 4}; |
i3 : bettiTablesWithHilbertFunction(L, R) --outputs unique tables matching the criteria 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 o3 = {total: 1 4 4 1, total: 1 4 4 1, total: 1 4 4 1, total: 1 3 3 1, total: 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: 2: . 2 2 . 2: . 2 2 . 2: . 2 2 . 2: . 2 1 . 2: 3: . 1 2 1 3: . 1 1 . 3: . 1 . . 3: . . 2 1 3: 4: . . 1 1 4: . . 2 . 4: 5: . . . 1 ------------------------------------------------------------------------ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 1 4 5 2, total: 1 4 5 2, total: 1 3 3 1, total: 1 5 6 2, total: 1 5 6 2, 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 . . . . 1 . . 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: . 1 . . . 2 2 . 2: . 2 2 . 2: . 2 1 . 2: . 2 3 1 2: . 2 3 1 . 1 . . 3: . 1 . . 3: . . 1 . 3: . 2 3 1 3: . 2 2 . . . 3 2 4: . . 1 . 4: . . 1 1 4: . . 1 1 5: . . 2 2 ------------------------------------------------------------------------ 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 total: 1 5 6 2, total: 1 5 7 3, total: 1 5 7 3, total: 1 5 7 3, total: 1 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: . 2: . 2 3 1 2: . 2 3 1 2: . 2 3 1 2: . 2 3 1 2: . 3: . 2 2 . 3: . 2 1 . 3: . 2 1 . 3: . 2 1 . 3: . 4: . . . . 4: . . 2 1 4: . . 3 2 4: . . 2 1 4: . 5: . . 1 1 5: . . 1 1 5: . . . . 5: . 6: . . 1 1 ------------------------------------------------------------------------ 1 2 3 0 1 2 3 0 1 2 3 4 5 2, total: 1 5 6 2, total: 1 4 4 1} . . . 0: 1 . . . 0: 1 . . . 1 . . 1: . 1 . . 1: . 1 . . 2 2 . 2: . 2 3 1 2: . 2 2 . 1 . . 3: . 2 2 . 3: . 1 1 . . 2 1 4: . . . . 4: . . . . . 1 1 5: . . . . 5: . . 1 1 6: . . 1 1 o3 : List |
i4 : bettiTablesWithHilbertFunction(L, R, Count => true) --tallies distinct ideals giving each table 0 1 2 3 o4 = Tally{total: 1 3 3 1 => 12 } 0: 1 . . . 1: . 1 . . 2: . 2 1 . 3: . . 1 . 4: . . 1 1 0 1 2 3 total: 1 3 3 1 => 27 0: 1 . . . 1: . 1 . . 2: . 2 1 . 3: . . 2 1 0 1 2 3 total: 1 4 4 1 => 6 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 . . 4: . . 2 . 5: . . . 1 0 1 2 3 total: 1 4 4 1 => 12 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 1 . 4: . . . . 5: . . 1 1 0 1 2 3 total: 1 4 4 1 => 78 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 1 . 4: . . 1 1 0 1 2 3 total: 1 4 4 1 => 174 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 2 1 0 1 2 3 total: 1 4 5 2 => 6 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 . . 4: . . 2 1 5: . . 1 1 0 1 2 3 total: 1 4 5 2 => 9 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 . . 4: . . 1 . 5: . . 2 2 0 1 2 3 total: 1 4 5 2 => 15 0: 1 . . . 1: . 1 . . 2: . 2 2 . 3: . 1 . . 4: . . 3 2 0 1 2 3 total: 1 5 6 2 => 6 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 2 . 4: . . . . 5: . . . . 6: . . 1 1 0 1 2 3 total: 1 5 6 2 => 24 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 2 . 4: . . . . 5: . . 1 1 0 1 2 3 total: 1 5 6 2 => 54 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 2 . 4: . . 1 1 0 1 2 3 total: 1 5 6 2 => 150 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 3 1 0 1 2 3 total: 1 5 7 3 => 12 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 1 . 4: . . 2 1 5: . . . . 6: . . 1 1 0 1 2 3 total: 1 5 7 3 => 12 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 1 . 4: . . 2 1 5: . . 1 1 0 1 2 3 total: 1 5 7 3 => 12 0: 1 . . . 1: . 1 . . 2: . 2 3 1 3: . 2 1 . 4: . . 3 2 o4 : Tally |
i5 : bettiTablesWithHilbertFunction(L, R, FirstBetti => 5) --only returns tables whose first total betti number is 5 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 o5 = {total: 1 5 6 2, total: 1 5 6 2, total: 1 5 6 2, total: 1 5 6 2, total: 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1 . . . 0: 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: . 1 . . 1: 2: . 2 3 1 2: . 2 3 1 2: . 2 3 1 2: . 2 3 1 2: 3: . 2 3 1 3: . 2 2 . 3: . 2 2 . 3: . 2 2 . 3: 4: . . 1 1 4: . . . . 4: . . . . 4: 5: . . 1 1 5: . . . . 6: . . 1 1 ------------------------------------------------------------------------ 0 1 2 3 0 1 2 3 0 1 2 3 1 5 7 3, total: 1 5 7 3, total: 1 5 7 3} 1 . . . 0: 1 . . . 0: 1 . . . . 1 . . 1: . 1 . . 1: . 1 . . . 2 3 1 2: . 2 3 1 2: . 2 3 1 . 2 1 . 3: . 2 1 . 3: . 2 1 . . . 3 2 4: . . 2 1 4: . . 2 1 5: . . . . 5: . . 1 1 6: . . 1 1 o5 : List |
i6 : bettiTablesWithHilbertFunction(L, R, GradedBettis => {0, 0, 2, 2, 1}) --only returns tables whose first graded betti numbers match a given sequence o6 = {} o6 : List |
i7 : bettiTablesWithHilbertFunction(L, R, BoundGenerators => 3) 0 1 2 3 0 1 2 3 o7 = {total: 1 3 3 1, total: 1 3 3 1} 0: 1 . . . 0: 1 . . . 1: . 1 . . 1: . 1 . . 2: . 2 1 . 2: . 2 1 . 3: . . 2 1 3: . . 1 . 4: . . 1 1 o7 : List |
i8 : bettiTablesWithHilbertFunction(L, R, BoundGenerators => 3, Count => true) 0 1 2 3 o8 = Tally{total: 1 3 3 1 => 12} 0: 1 . . . 1: . 1 . . 2: . 2 1 . 3: . . 1 . 4: . . 1 1 0 1 2 3 total: 1 3 3 1 => 27 0: 1 . . . 1: . 1 . . 2: . 2 1 . 3: . . 2 1 o8 : Tally |
These methods also work for squarefree ideals
i9 : S = QQ[a..f] o9 = S o9 : PolynomialRing |
i10 : bettiTablesWithHilbertFunction({1, 6, 19, 45, 86}, S, SquareFree => true) 0 1 2 3 o10 = {total: 1 6 8 3} 0: 1 . . . 1: . 2 1 . 2: . . . . 3: . 4 7 3 o10 : List |
The next examples show that options can be combined in many ways
i11 : bettiTablesWithHilbertFunction({1, 3, 6, 7, 6, 5, 4, 4, 4}, R, FirstBetti => 6, BoundGenerators => 5, Count => true) 0 1 2 3 o11 = Tally{total: 1 6 7 2 => 48 } 0: 1 . . . 1: . . . . 2: . 3 3 1 3: . 3 3 . 4: . . . . 5: . . 1 1 0 1 2 3 total: 1 6 7 2 => 522 0: 1 . . . 1: . . . . 2: . 3 2 . 3: . 2 3 1 4: . 1 1 . 5: . . 1 1 0 1 2 3 total: 1 6 8 3 => 12 0: 1 . . . 1: . . . . 2: . 3 3 1 3: . 3 3 1 4: . . 1 . 5: . . 1 1 0 1 2 3 total: 1 6 8 3 => 72 0: 1 . . . 1: . . . . 2: . 3 1 . 3: . 1 4 2 4: . 2 2 . 5: . . 1 1 o11 : Tally |
i12 : bettiTablesWithHilbertFunction({1, 4, 7, 10, 13}, S, SquareFree => true, FirstBetti => 5) 0 1 2 3 4 o12 = {total: 1 5 9 7 2} 0: 1 2 1 . . 1: . 3 8 7 2 o12 : List |
i13 : bettiTablesWithHilbertFunction({1, 4, 7, 10, 13}, S, SquareFree => true, GradedBettis => {0, 2, 3, 1, 0}) 0 1 2 3 4 5 o13 = {total: 1 6 13 13 6 1} 0: 1 2 1 . . . 1: . 3 9 10 5 1 2: . 1 3 3 1 . o13 : List |
The object bettiTablesWithHilbertFunction is a method function with options.