Macaulay2 » Documentation
Packages » QuaternaryQuartics :: Finding the 16 betti tables possible for quartic forms in 4 variables, and examples
next | previous | forward | backward | up | index | toc

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

See also