One useful way to generate quartic polynomials is as a sum of 4th powers of linear forms. This function creates an linear form from each column of the matrix $M$, and then sums their 4th powers.
i1 : S = ZZ/101[a..d] o1 = S o1 : PolynomialRing |
i2 : M = transpose matrix(S, {{1,0,0,0}, {0,1,0,0}}) o2 = | 1 0 | | 0 1 | | 0 0 | | 0 0 | 4 2 o2 : Matrix S <--- S |
i3 : quartic M 4 4 o3 = a + b o3 : S |
i4 : H = bettiStrataExamples S o4 = HashTable{[000] => {| 1 0 0 0 1 22 2 -37 -18 32 |, 10 general points} } | 0 1 0 0 1 -47 29 -13 39 -9 | | 0 0 1 0 1 -23 -47 -10 27 -32 | | 0 0 0 1 1 -7 15 30 -22 -20 | [100] => {| 1 0 0 0 1 39 48 -38 46 |, 9 general points} | 0 1 0 0 1 43 36 33 -28 | | 0 0 1 0 1 -17 35 40 1 | | 0 0 0 1 1 -11 11 11 -3 | [200] => {| 1 0 0 0 1 16 -48 -16 |, 8 general points} | 0 1 0 0 1 22 -47 7 | | 0 0 1 0 1 45 47 15 | | 0 0 0 1 1 -34 19 -23 | [210] => {| 1 0 0 0 1 1 0 1 |, 8 points with 6 in a plane, or five in a plane and three in a line} | 0 1 0 0 1 0 1 1 | | 0 0 1 0 0 1 1 1 | | 0 0 0 1 0 0 0 1 | [300a] => {| 1 1 1 1 1 1 1 1 |, 8 points which forms a CI} | 2 2 2 2 -2 -2 -2 -2 | | 3 3 -3 -3 3 3 -3 -3 | | 1 -1 1 -1 1 -1 1 -1 | [300b] => {| 1 0 0 0 1 19 -8 |, 7 general points} | 0 1 0 0 1 19 -22 | | 0 0 1 0 1 -10 -29 | | 0 0 0 1 1 -29 -24 | [300c] => {| 1 0 1 -38 34 -18 -28 |, 7 points, 3 on a line} | 0 1 1 -16 19 -13 -47 | | 0 0 0 39 -47 -43 38 | | 0 0 0 21 -39 -15 2 | [310] => {| 1 0 0 0 1 1 1 |, 7 points with 5 on a plane} | 0 1 0 0 1 1 0 | | 0 0 1 0 1 1 0 | | 0 0 0 1 0 1 1 | [320] => {| 1 0 0 0 1 1 1 |, 7 points on a twisted cubic curve} | 0 1 0 0 1 0 0 | | 0 0 1 0 0 1 0 | | 0 0 0 1 0 0 1 | [331] => {| 1 0 0 0 24 -15 33 |, 7 points with 6 on a plane} | 0 1 0 0 -30 39 -49 | | 0 0 1 0 -48 0 -33 | | 0 0 0 1 0 0 0 | [420] => {| 1 0 0 0 1 24 |, 6 general points} | 0 1 0 0 1 -36 | | 0 0 1 0 1 -30 | | 0 0 0 1 1 -29 | [430] => {| 1 0 0 0 1 1 |, 6 points, 3 on a line} | 0 1 0 0 1 0 | | 0 0 1 0 0 1 | | 0 0 0 1 0 1 | [441a] => {| 1 0 0 0 1 1 |, 6 points, 5 on a plane} | 0 1 0 0 1 0 | | 0 0 1 0 0 1 | | 0 0 0 1 0 0 | [441b] => {| 1 0 0 0 1 0 |, 6 points, 3 each on 2 skew lines} | 0 1 0 0 1 0 | | 0 0 1 0 0 1 | | 0 0 0 1 0 1 | [550] => {| 1 0 0 0 1 |, 5 general points} | 0 1 0 0 1 | | 0 0 1 0 1 | | 0 0 0 1 1 | [551] => {| 1 0 0 0 1 |, 5 points, 4 on a plane} | 0 1 0 0 1 | | 0 0 1 0 1 | | 0 0 0 1 0 | [562] => {| 1 0 0 0 1 |, 5 points, 3 on a line} | 0 1 0 0 1 | | 0 0 1 0 0 | | 0 0 0 1 0 | [683] => {| 1 0 0 0 |, 4 general points} | 0 1 0 0 | | 0 0 1 0 | | 0 0 0 1 | o4 : HashTable |
i5 : keys H o5 = {[310], [420], [200], [210], [331], [320], [683], [100], [562], [551], ------------------------------------------------------------------------ [430], [550], [000], [441b], [441a], [300c], [300b], [300a]} o5 : List |
i6 : M = first H#"[420]" o6 = | 1 0 0 0 1 24 | | 0 1 0 0 1 -36 | | 0 0 1 0 1 -30 | | 0 0 0 1 1 -29 | 4 6 o6 : Matrix S <--- S |
i7 : F = quartic M 4 3 2 2 3 4 3 2 2 o7 = - 7a - 43a b + 36a b - 26a*b - 12b + 49a c - 39a b*c + 38a*b c - ------------------------------------------------------------------------ 3 2 2 2 2 3 3 4 3 2 2 9b c + 10a c + 15b c - 33a*c + 9b*c - 18c - 3a d - 7a b*d - 10a*b d ------------------------------------------------------------------------ 3 2 2 2 2 3 + 15b d + 13a c*d + 21a*b*c*d - 11b c*d + 36a*c d - 24b*c d - 6c d + ------------------------------------------------------------------------ 2 2 2 2 2 2 2 2 2 3 25a d - 45a*b*d - 27b d + 15a*c*d - 43b*c*d + 42c d + 42a*d + ------------------------------------------------------------------------ 3 3 4 48b*d + 7c*d - 20d o7 : S |
This is a convenience function. This is basically short hand for the following (which computes the linear forms corresponding to each column of $M$, and then sums their 4th powers.
i8 : lins := flatten entries((vars S) * M) o8 = {a, b, c, d, a + b + c + d, 24a - 36b - 30c - 29d} o8 : List |
i9 : F1 = sum for g in lins list g^4 4 3 2 2 3 4 3 2 2 o9 = - 7a - 43a b + 36a b - 26a*b - 12b + 49a c - 39a b*c + 38a*b c - ------------------------------------------------------------------------ 3 2 2 2 2 3 3 4 3 2 2 9b c + 10a c + 15b c - 33a*c + 9b*c - 18c - 3a d - 7a b*d - 10a*b d ------------------------------------------------------------------------ 3 2 2 2 2 3 + 15b d + 13a c*d + 21a*b*c*d - 11b c*d + 36a*c d - 24b*c d - 6c d + ------------------------------------------------------------------------ 2 2 2 2 2 2 2 2 2 3 25a d - 45a*b*d - 27b d + 15a*c*d - 43b*c*d + 42c d + 42a*d + ------------------------------------------------------------------------ 3 3 4 48b*d + 7c*d - 20d o9 : S |
i10 : F1 == F o10 = true |
i11 : I = inverseSystem F o11 = ideal (a*d + 9b*d - 10c*d, b*c - 43b*d + 42c*d, a*c + 37b*d - 38c*d, ----------------------------------------------------------------------- 3 3 2 2 3 3 3 a*b + 3b*d - 4c*d, b + 11c - 21b*d - 31c*d - 21d , a - 10c - ----------------------------------------------------------------------- 2 2 3 33b*d - 21c*d + 22d ) o11 : Ideal of S |
i12 : (degree I, codim I, regularity(S^1/I)) o12 = (16, 4, 4) o12 : Sequence |
i13 : minimalBetti I 0 1 2 3 4 o13 = total: 1 6 10 6 1 0: 1 . . . . 1: . 4 2 . . 2: . 2 6 2 . 3: . . 2 4 . 4: . . . . 1 o13 : BettiTally |
The object quartic is a method function.