# Finding the 16 betti tables possible for quartic forms in 4 variables, and examples -- Material from Table 6 and 7 of Appendix 1

The following code finds the 16 possible betti tables.

 i1 : GetInv = (d,k,n)->(R=ZZ/2[x_1..x_k]; quartics=super basis(d,R); MonList=first entries quartics; L=subsets(MonList,n); J=apply(L, j->(F=sum j; InvSysF=ideal fromDual F; Idegs=degrees source mingens InvSysF; if (not ((member({1},Idegs)))) then minimalBetti InvSysF)); Jlist = drop(unique J,1); --get unique betti table, drop empty table from list netList pack(4,Jlist)) --format output to look nice o1 = GetInv o1 : FunctionClosure i2 : GetInv(4,4,2) +-------------------+-----------------+-----------------+-----------------+ | 0 1 2 3 4 | 0 1 2 3 4| 0 1 2 3 4| 0 1 2 3 4| o2 = |total: 1 9 16 9 1 |total: 1 6 10 6 1|total: 1 7 12 7 1|total: 1 9 16 9 1| | 0: 1 . . . . | 0: 1 . . . .| 0: 1 . . . .| 0: 1 . . . .| | 1: . 6 8 3 . | 1: . 5 5 . .| 1: . 4 3 . .| 1: . 4 4 1 .| | 2: . . . . . | 2: . 1 . 1 .| 2: . 3 6 3 .| 2: . 4 8 4 .| | 3: . 3 8 6 . | 3: . . 5 5 .| 3: . . 3 4 .| 3: . 1 4 4 .| | 4: . . . . 1 | 4: . . . . 1| 4: . . . . 1| 4: . . . . 1| +-------------------+-----------------+-----------------+-----------------+ | 0 1 2 3 4 | 0 1 2 3 4| 0 1 2 3 4| 0 1 2 3 4 | |total: 1 6 10 6 1 |total: 1 9 16 9 1|total: 1 7 12 7 1|total: 1 4 6 4 1 | | 0: 1 . . . . | 0: 1 . . . .| 0: 1 . . . .| 0: 1 . . . . | | 1: . 4 2 . . | 1: . 3 2 . .| 1: . 3 . . .| 1: . 4 . . . | | 2: . 2 6 2 . | 2: . 6 12 6 .| 2: . 4 12 4 .| 2: . . 6 . . | | 3: . . 2 4 . | 3: . . 2 3 .| 3: . . . 3 .| 3: . . . 4 . | | 4: . . . . 1 | 4: . . . . 1| 4: . . . . 1| 4: . . . . 1 | +-------------------+-----------------+-----------------+-----------------+ | 0 1 2 3 4| 0 1 2 3 4| 0 1 2 3 4| | |total: 1 10 18 10 1|total: 1 7 12 7 1|total: 1 9 16 9 1| | | 0: 1 . . . .| 0: 1 . . . .| 0: 1 . . . .| | | 1: . 2 . . .| 1: . 5 5 1 .| 1: . 5 6 2 .| | | 2: . 8 18 8 .| 2: . 1 2 1 .| 2: . 2 4 2 .| | | 3: . . . 2 .| 3: . 1 5 5 .| 3: . 2 6 5 .| | | 4: . . . . 1| 4: . . . . 1| 4: . . . . 1| | +-------------------+-----------------+-----------------+-----------------+

Get inverse system of all degree d polynomials in k variables, by taking sums of n monomials. By taking sufficiently many monomials we'll get everything. Work over Z/2 for speed, experiments suggest that even over Z/2 we get all betti tables. If inverse system has a linear generator, ignore it. Pack results using netlist for pretty display. For k=4=d, we get 16 betti tables by using n=4 terms.

A stable of 16 examples, one for each of the betti tables

 i3 : R=ZZ/101[x_1..x_4]; i4 : IdealList={ {x_2*x_4, x_1*x_4, x_1*x_2^2+x_3*x_4^2-x_4^3, x_1^2, x_2^3, x_3^2}, {x_2*x_3, x_1*x_3, x_2*x_4^2, x_1*x_4^2, x_1*x_2^2-x_3*x_4^2, x_3*x_4^3-x_4^4, x_1^2, x_2^3, x_3^2}, {x_2*x_4, x_1*x_4, x_3^2*x_4, x_1*x_2*x_3+x_3*x_4^2-x_4^3, x_1^2, x_2^2, x_3^3}, {x_2*x_4^2, x_1*x_4^2, x_1*x_2*x_4+x_3*x_4^2-x_4^3, x_1*x_2*x_3-x_3*x_4^2, x_1^2, x_2^2, x_3^2}, {x_2*x_3, x_1*x_3, x_1*x_2-x_3*x_4, x_3*x_4^3-x_4^4, x_2*x_4^3, x_1*x_4^3, x_1^2, x_2^2, x_3^2}, {x_2*x_4, x_1*x_4, x_2*x_3, x_1*x_3, x_3*x_4^3-x_4^4, x_1^2*x_2^2-x_4^4, x_1^3, x_2^3, x_3^2}, {x_2*x_3, x_1*x_3, x_2*x_4^2, x_1*x_4^2, x_3^2*x_4-x_4^3, x_1*x_2^2-x_4^3, x_1^2, x_2^3, x_3^3}, {x_2*x_4^2, x_1*x_4^2, x_3^2*x_4-x_4^3, x_1*x_2*x_4-x_3*x_4^2, x_2*x_3^2, x_1*x_3^2, x_1*x_2*x_3-x_4^3, x_1^2, x_2^2, x_3^3}, {x_2*x_3, x_1*x_3, x_1*x_2-x_3^2, x_3^2*x_4-x_4^3, x_1^2, x_2^2, x_3^3}, {x_3*x_4, x_2*x_4, x_1*x_4, x_1*x_2*x_3-x_3^3, x_3^4-x_4^4, x_1^2, x_2^2}, {x_1*x_4, x_3^2*x_4, x_2*x_3*x_4-x_4^3, x_1*x_3^2-x_3*x_4^2, x_1*x_2*x_3-x_2*x_4^2, x_1^2, x_2^2, x_3^3}, {x_1*x_4, x_1*x_3, x_3*x_4^2, x_2*x_4^2, x_2^2*x_4, x_2*x_3^2-x_4^3, x_2^2*x_3, x_1*x_2^2-x_3^2*x_4, x_1^2, x_2^4, x_3^3}, {x_3*x_4, x_2^2*x_4, x_1^2*x_4, x_2*x_3^2, x_1*x_3^2-x_2*x_4^2, x_2^2*x_3-x_1*x_4^2, x_1*x_2*x_3, x_2^3-x_1^2*x_3, x_1*x_2^2, x_1^2*x_2, x_1^3, x_2^4, x_3^3, x_4^3}, {x_3*x_4 , x_2^2*x_4, x_3^3-x_1*x_2*x_4, x_2*x_3^2, x_2^2*x_3-x_1^2*x_4, x_1*x_2*x_3, x_1^2*x_3, x_2^3-x_1*x_3^2, x_1*x_2^2, x_1^3, x_2^4, x_3^4, x_4^2}, {x_3*x_4^2, x_2*x_4^2, x_1*x_4^2, x_3^2*x_4,x_2^2*x_4, x_1^2*x_4, x_3^3-x_1*x_2*x_4, x_2*x_3^2, x_1*x_3^2, x_2^2*x_3, x_1*x_2*x_3-x_4^3, x_1^2*x_3, x_2^3-x_1*x_3*x_4, x_1*x_2^2, x_1^2*x_2,x_1^3-x_2*x_3*x_4}, {x_1^2,x_2^2,x_3^2,x_4^2}};

Display in a nice format

 i5 : netList(pack(4,apply(IdealList,i->minimalBetti ideal i))) +-------------------+-------------------+-------------------+-------------------+ | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | o5 = |total: 1 6 10 6 1 |total: 1 9 16 9 1 |total: 1 7 12 7 1 |total: 1 7 12 7 1 | | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . . | | 1: . 4 2 . . | 1: . 4 4 1 . | 1: . 4 3 . . | 1: . 3 . . . | | 2: . 2 6 2 . | 2: . 4 8 4 . | 2: . 3 6 3 . | 2: . 4 12 4 . | | 3: . . 2 4 . | 3: . 1 4 4 . | 3: . . 3 4 . | 3: . . . 3 . | | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1 | +-------------------+-------------------+-------------------+-------------------+ | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4| |total: 1 9 16 9 1 |total: 1 9 16 9 1 |total: 1 9 16 9 1 |total: 1 10 18 10 1| | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . .| | 1: . 6 8 3 . | 1: . 5 6 2 . | 1: . 3 2 . . | 1: . 2 . . .| | 2: . . . . . | 2: . 2 4 2 . | 2: . 6 12 6 . | 2: . 8 18 8 .| | 3: . 3 8 6 . | 3: . 2 6 5 . | 3: . . 2 3 . | 3: . . . 2 .| | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1| +-------------------+-------------------+-------------------+-------------------+ | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4 | 0 1 2 3 4| |total: 1 6 10 6 1 |total: 1 7 12 7 1 |total: 1 8 14 8 1 |total: 1 11 20 11 1| | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . . | 0: 1 . . . .| | 1: . 5 5 . . | 1: . 5 5 1 . | 1: . 3 1 . . | 1: . 3 3 1 .| | 2: . 1 . 1 . | 2: . 1 2 1 . | 2: . 5 12 5 . | 2: . 7 14 7 .| | 3: . . 5 5 . | 3: . 1 5 5 . | 3: . . 1 3 . | 3: . 1 3 3 .| | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1 | 4: . . . . 1| +-------------------+-------------------+-------------------+-------------------+ | 0 1 2 3 4| 0 1 2 3 4| 0 1 2 3 4| 0 1 2 3 4 | |total: 1 13 24 13 1|total: 1 11 20 11 1|total: 1 16 30 16 1|total: 1 4 6 4 1 | | 0: 1 . . . .| 0: 1 . . . .| 0: 1 . . . .| 0: 1 . . . . | | 1: . 1 . . .| 1: . 2 1 . .| 1: . . . . .| 1: . 4 . . . | | 2: . 12 24 12 .| 2: . 9 18 9 .| 2: . 16 30 16 .| 2: . . 6 . . | | 3: . . . 1 .| 3: . . 1 2 .| 3: . . . . .| 3: . . . 4 . | | 4: . . . . 1| 4: . . . . 1| 4: . . . . 1| 4: . . . . 1 | +-------------------+-------------------+-------------------+-------------------+
 i6 : Qs = apply(IdealList, I -> first flatten entries inverseSystem(5, ideal I)) 2 3 4 2 3 4 2 o6 = {- 50x x x + 17x x - 21x , - 50x x x + 17x x - 21x , - 50x x x + 1 2 3 3 4 4 1 2 4 3 4 4 1 2 3 ------------------------------------------------------------------------ 3 4 3 4 2 3 4 17x x - 21x , x x x x + 17x x - 21x , - 50x x x + 17x x - 21x , - 3 4 4 1 2 3 4 3 4 4 1 2 4 3 4 4 ------------------------------------------------------------------------ 2 2 3 4 2 2 2 4 2 2 25x x + 17x x - 21x , - 50x x x - 25x x - 21x , x x x x - 25x x - 1 2 3 4 4 1 2 4 3 4 4 1 2 3 4 3 4 ------------------------------------------------------------------------ 4 2 2 2 4 2 4 4 2 21x , - 50x x x - 25x x - 21x , - 50x x x - 21x - 21x , - 50x x x - 4 1 2 4 3 4 4 1 2 3 3 4 1 2 3 ------------------------------------------------------------------------ 2 4 3 2 4 3 2 2 2 50x x x - 21x , 17x x - 50x x x - 21x , 17x x - 25x x - 50x x x , 2 3 4 4 1 2 2 3 4 4 2 3 1 3 1 2 4 ------------------------------------------------------------------------ 3 3 2 4 4 4 4 17x x + 17x x - 50x x x , - 21x - 21x - 21x + x x x x - 21x , 2 3 1 3 1 2 4 1 2 3 1 2 3 4 4 ------------------------------------------------------------------------ x x x x } 1 2 3 4 o6 : List i7 : for F in Qs list quarticType F o7 = {[420], [441a], [430], [300ab], [683], [562], [320], [200], [550], ------------------------------------------------------------------------ [551], [310], [331], [100], [210], [000], [400]} o7 : List