M953 Homework 6 (Click
here for solutions)
Due Friday, March 15, 2002
[1] Let R = k[x1, ..., xn] and let Rd
denote the subset of all polynomials in R of degree d or less,
including 0. Now let
S = k[x0, ..., xn] and let Sd
denote the subset of all homogeneous polynomials in S of degree d,
including 0. Note that both Rd and Sd are k vector spaces.
(Part (b) is optional; it's really just for those people who haven't seen "stars and bars"
before.)
- (a) Show that dimkRd = dimkSd.
- (b) Show that dimkSd is equal to the binomial coefficient
"n+d choose d". [Hint: count the number of monomials of degree d by writing each monomial
as a product, not using exponents. For example, say n = 3, and consider
x02x2x33
to be x0x0x2x3x3x3.
But you can indicate the same information by replacing the variables by *'s, and separating the
different variables by |'s. So x0x0x2x3x3x3
becomes **||*|***, meaning two x0's, no x1's, one x2,
and three x3's.]
[2] In this problem, assume F is in k[x,y], where k is the complex numbers.
[3] Calculate the intersection multiplicity
I(p, F^G) [note: I'm using ^ to denote intersection]
for each F and G below. In each case, assume p = (0,0). Check your answers
with Macaulay2.
- (a) F = y^2-x^5, G = y^2*x^2-x^5-y^5
- (b) F = y^2-x^3, G = (y^2+x^2)^2+3*x^2*y-y^3
- (c) F = y^4+x^4-x^3 G = y^3*x^2+y^5+x^2
Here are some useful Macaulay2 routines to compute intersection multiplicities.
Assuming R = k[x,y] is your ring, P = I(p) is the ideal of a point p in the plane,
and I = ideal(f,g) for some polynomials f and g in R which have no common factor
vanishing at p, then mylocalize(I,P,R) gives the ideal Qi
corresponding to p in the minimal primary decomposition
I = Q1^...^Qr of I.
Thus I(p, F^G) = dimkR/Qi, as discussed in class,
but the Macaulay2 command for "dim" in this case is degree
so I(p, F^G) = degree( R/mylocalize(I,P,R) ).
Now, mylocalize is not built in, it's actually a Macaulay2 script that I define
below. You can copy it from the web page for the homework and paste it into Macaulay2
(the whole thing all at once). For convenience we can also define a second script
that calls mylocalize to calculate I(p, F^G) in one step.
Here are the scripts. Below I give a sample session using them.
findIntMult = (I,P,R) -> (
if(dim(R/mylocalize(I,P,R)) > 0 ) then
print "The intersection multiplicity is infinite!!!!!!" else
degree( R/mylocalize(I,P,R) ))
mylocalize = (I,P,R) -> (
L:=primaryDecomposition I;
j:=-1;
J:= I;
B:= ideal (matrix {{1}}**R); -- Make B the ideal (1) but in current ring, not ZZ.
scan(#L, i->(
J=(L_i)*ideal (matrix {{1}}**R); -- convert L_i into an ideal if it's of type MonomialIdeal
if( (P:J) == (ideal (matrix {{1}}**R)) ) then B=intersect(B,J);
));
B)
Sample Session:
Macaulay 2, version 0.9.2
--Copyright 1993-2001, D. R. Grayson and M. E. Stillman
--Singular-Factory 1.3c, copyright 1993-2001, G.-M. Greuel, et al.
--Singular-Libfac 0.3.2, copyright 1996-2001, M. Messollen
i1 : R = QQ[x,y]
o1 = R
o1 : PolynomialRing
i2 : findIntMult = (I,P,R) -> (
if(dim(R/mylocalize(I,P,R)) > 0 ) then
print "The intersection multiplicity is infinite!!!!!!" else
degree( R/mylocalize(I,P,R) ))
mylocalize = (I,P,R) -> (
L:=primaryDecomposition I;
j:=-1;
J:= I;
B:= ideal (matrix {{1}}**R); -- Make B the ideal (1) but in current ring, not ZZ.
scan(#L, i->(
J=(L_i)*ideal (matrix {{1}}**R); -- convert L_i into an ideal if it's of type MonomialIdeal
if( (P:J) == (ideal (matrix {{1}}**R)) ) then B=intersect(B,J);
));
B)
o2 = findIntMult
o2 : Function
i3 :
o3 = mylocalize
o3 : Function
i4 : findIntMult(ideal(x^3,y^4),ideal(x,y),R)
o4 = 12
i5 : quit
Notes:
(1) matrix {{1}} makes a 1x1 matrix whose entry is 1. But
ideal (matrix {{1}}) would be the unit ideal in ZZ, not R.
To get the unit ideal in R we need to tensor by R, hence I use
ideal (matrix {{1}}**R) in the script; "**" denotes tensoring.
(2) The colon in L:=primaryDecomposition I makes L into a local variable,
so you don't overwrite other L's you may have defined outside of the script.
(3) Now, primaryDecomposition I is a list of ideals. Thus L
is a list whose (i+1)st item is L_i (so L_0 is the first
item in the list); #L is the number of entries in the list, and
scan(#L, i->( various commands go here ) ) makes i run from
0 to #L-1.
(4) P:J is the usual colon operation in commutative algebra; it is the
ideal of all f in R such that fJ is contained in P. Thus P:J = (1)
if and only if P contains J, so
if( (P:J) == (ideal (matrix {{1}}**R)) ) then B=intersect(B,J)
intersects B with J if P contains J. Together with the scan statement
the effect is to make B the intersection of all ideals
in the minimal primary decomposition
of I which are contained in P.