1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
-- -*- coding: utf-8 -*-
-- In this tutorial we introduce a number of basic operations
-- using Gröbner bases, and at the same time become familiar
-- with a range of useful Macaulay2 constructs.
----------------------------
-- A. A first Gröbner basis
----------------------------
-- To compute the Gröbner basis of an ideal
-- $(x^2y,xy^2+x^3)$ in the polynomial ring in
-- four variables we proceed as follows:
--
-- Our favorite field
KK = ZZ/32003
-- The polynomial ring
R = KK[x,y,z,w]
-- and the ideal
I = ideal(x^2*y,x*y^2+x^3)
-- now the punch line:
J = gens gb I
-- This is the Gröbner basis of $I$ under the graded
-- reverse lexicographic order. In Macaulay2, monomial
-- orders are associated with a polynomial ring.
-- For example, the lexicographic order is specified using:
R = KK[x,y,z,w,MonomialOrder=>Lex]
I = substitute(I,R)
gens gb I
-- The Gröbner basis is the same, since this is a small
-- example. The polynomials are sorted in ascending monomial order
-- by their lead terms, but otherwise the two Gröbner bases are
-- the same here.
------------------------------------------------
-- B. Random regular sequences
------------------------------------------------
-- An interesting and illustrative open problem
-- is to understand the initial ideal (and
-- the Gröbner basis) of a ``generic''
-- regular sequence. To study a very simple case
-- we take a matrix of 2 random forms
-- in a polynomial ring in
-- 3 variables:
R = KK[x,y,z]
F = random(R^1, R^{-2,-3})
-- makes $F$ into a $1 \times 2$ matrix whose elements
-- have degrees $2,3$ (that is, $F$ is a random map
-- to the free module $R^1$, which has its one
-- generator in the (default) degree, $0$, from
-- the free module with generators in the listed
-- degrees, $\{2,3\}$). We now can compute
GB = gens gb F
LT = leadTerm GB
betti LT
-- betti is a routine that displays degrees of generators
-- and also in free resolutions (which we will learn about later).
-- In this case, the output
-- shows that there are Gröbner basis elements
-- of degrees 2,3, and 4. This result is
-- dependent on the monomial order in the ring $R$;
-- for example we could take the lexicographic
-- order
R = KK[x,y,z, MonomialOrder => Lex]
-- (see {\tt help MonomialOrder} for other possibilities).
-- We get
F = random(R^1, R^{-2,-3})
GB = gens gb F
LT = leadTerm GB
betti LT
-- and there are Gröbner basis elements of degrees
-- $2,3,4,5,6.$
-----------------------------------------------
-- C. Division With Remainder
-----------------------------------------------
-- A major application of Gröbner bases is
-- to decide whether an element is in a given
-- ideal, and whether two elements reduce to
-- the same thing modulo an ideal. For
-- example, everyone knows that the trace
-- of a nilpotent matrix is 0. We can produce
-- an ideal $I$ that defines the variety $X$ of
-- nilpotent $3 \times 3$ matrices by taking the cube
-- of a generic matrix and setting the entries
-- equal to zero. Here's how:
R = KK[a..i]
M = genericMatrix(R,a,3,3)
N = M^3
I = flatten N
-- (actually this produces a 1 x 9 matrix of
-- of forms, not the ideal: {\tt J = ideal I};
-- the matrix will be more useful to us).
-- But the trace is not in $I$! This is obvious
-- from the fact that the trace has degree $1$,
-- but the polynomials in $I$ are of degree $3$.
-- We could also check by division with
-- remainder:
Tr = trace M
Tr //I -- the quotient, which is 0
Tr % I -- the remainder, which is Tr again
-- (Here {\tt Tr} is an element of $R$, not a matrix.
-- We could do the same thing with a $1 \times 1$ matrix
-- with {\tt Tr} as its element.)
-- This is of course because the entries of $I$ do
-- NOT
-- generate the ideal of all forms
-- vanishing on $X$ -- this we may find with
-- {\tt J = radical ideal I},
-- (but this takes a while: see the documentation for
-- {\tt radical} on a faster way to find this)
-- which shows that the radical is generated by
-- the trace, the determinant, and the sum of
-- the principal $2 \times 2$ minors, that is, by the
-- coefficients of the characteristic polynomial.
-- In particular, we can try the powers of the
-- radical:
Tr^2 % I
Tr^3 % I
Tr^4 % I
Tr^5 % I
Tr^6 % I
Tr^7 % I
-- The seventh power is the first one in the
-- ideal! (Bernard Mourrain has worked out a
-- formula for which power in general.)
-- In this case
Tr^6 // I
-- is not 0. It is a matrix that makes the
-- following true:
Tr^6 == I * (Tr^6 // I) + (Tr^6 % I)
----------------------------------------------
-- D. Elimination Theory
----------------------------------------------
-- Computing the elimination ideal $I \cap k[xi, \ldots, xn]$
-- is one of the most important applications of Gröbner bases.
R = KK[t,y,z,MonomialOrder=>Lex]
I = ideal(y-(t^2+t+1), z-(t^3+1))
GB = gens gb I
F = GB_(0,0)
substitute(F, {y =>t^2+t+1, z=>t^3+1})
-- F is the polynomial that gives an algebraic relation between
-- $t^2+t+1$ and $t^3+1$.
-- Another way to accomplish this in Macaulay2 is to use the
-- {\tt eliminate} function. In this case, the monomial order of
-- the ring is not important.
R = KK[y,z,t]
I = substitute(I,R)
eliminate(I,t)
-- Yet another method is to use ring maps.
A = KK[t]
B = KK[y,z]
G = map(A,B,{t^2+t+1, t^3+1})
kernel G
---------------------------------------
-- E. Intersections and ideal quotients
---------------------------------------
-- An interesting problem is to investigate ideals of the
-- form $I = (x^d, y^d, z^d, f)$, where $f$ is a polynomial,
-- in three variables $x,y,z$.
--
-- First, let's compute the ideal quotient for an example,
-- by using the method given in class.
--
R = KK[t,x,y,z]
I = ideal(x^3,y^3,z^3)
F = x+y+z
L = t*I + (1-t)*ideal(F)
L1 = eliminate(L,t)
gens gb L1
-- Each of these is divisible by F:
(gens L1) % F
-- Divide by F.
J = ideal ((gens L1)//F)
mingens J
betti oo
-- J is defined by 5 equations: the original 3, another cubic
-- and also a quartic. (oo is the previous output).
-- Now, let's do this the easier way.
R = KK[x,y,z]
I = ideal(x^3,y^3,z^3)
F = x+y+z
J = I : F
betti J
transpose gens J
transpose gens gb J
-- Problem: how many generators can you obtain using this construction,
-- where you may try different positive integers $d$, and polynomials $f$?
----------------
-- F. Saturation
----------------
-- A very useful construction is the saturation of an ideal
-- $I$ with respect to a polynomial $f$, or another ideal $J$.
R = KK[t,a..f]
I = ideal(a*b*c-d*e*f, a^2*b-c^2*d, a*f^2-d*b*c)
F = a*b*c*d*e*f
J = eliminate(I + ideal(t*F-1), t)
transpose gens J
-- There is a builtin routine in Macaulay2 for computing saturations:
R = KK[a..f]
I = substitute(I,R)
F = product gens R
J' = saturate(I,F)
transpose gens J'
|