Skip to main content

An Explicit Example of the Proof of the Nullstellensatz

11 Jan 2022 - Tags: sage

I’m in an algebraic geometry class right now, and a friend was struggling conceptually with the proof of the strong nullstellensatz. I thought it might be helpful to see a concrete example of the idea, since the proof is actually quite constructive! Which brings us to this post:

Formally, we’re going to assume the weak nullstellensatz, and use it to show the strong nullstellensatz. That is, we’ll assume

The Weak Nullstellensatz

V(a)= if and only if a=(1)

Purely algebraically, this says:

“The only way f1,f2,,fr can fail to have a common zero is if (f1,f2,f3,,fr)=(1).”

and we’ll show

The Strong Nullstellensatz

I(V(a))=a

Again, purely algebraically, this says:

“The only way g,f1,f2,,fr can all be 0 simultaneously is if (for some n) gn is a linear combination of the fi.”

Both of these are theorems of the form “the obvious issue is the only one”. Obviously if 1=p1f1+p2f2++prfr, then the fi cannot all be 0 simultanously. Indeed, if fi(x)=0 for all i, then evaluating both sides of the above at x gives 1=0, which is a problem. The weak nullstellensatz says that this is the only reason a family of polynomials won’t have a common root.

Similarly, it’s obvious that if gn=p1f1++prfr, then at any common zero of the fi, g=0 too. Again, if we evaluate both sides at x we find g(x)n=0, and so g(x)=0 too (since a field has no nontrivial nilpotents). The strong nullstellensatz says that this is the only way for g to share a zero with the fi.


Now, it turns out the weak nullstellensatz has computational content. That is, if f1,,fr don’t have a common zero, there’s a computer program1 that will actually find the pi so that 1=p1f1++prfr.

For instance, let’s take a simple example:

f1=xy1f2=x+yf3=xy3f4=yx3

First, let’s check that these polynomials really don’t have any points in common:

Loading
Help | Powered by SageMath

Messages

Next we can see that they generate the ideal (1).

Loading
Help | Powered by SageMath

Messages

Of course, this means we should be able to write 1 as a linear combination of the fi:

Loading
Help | Powered by SageMath

Messages

and indeed, these are the coefficients to get 1

Loading
Help | Powered by SageMath

Messages


So now what about the strong nullstellensatz?

Let’s take g=yx+x+1, which vanishes at every point of the variety defined by x2+2x+1 and y (do you see why?).

Then we expect gn(x2+2x+1,y) for some n, and we’ll get there by the Rabinowitsch trick:

We’ll add a variable z to the mix, and notice that x2+2x+1, y, and (yx+x+1)z1 don’t have any common zeroes.

Indeed, if x2+2x+1 or y is nonzero at some point, then we’re done. But if they’re both zero, then we know g=yx+x+1 is zero as well. Then (yx+x+1)z1=gz1=0z1=10.

But then, by the weak nullstellensatz, that means these three polynomials must generate the ideal (1) in k[x,y,z]!

Indeed,

Loading
Help | Powered by SageMath

Messages

So we know that

1=p1f1+p2f2+p3(gz1)

or

1=z2(x2+2x+1)+(x2z2+xz2+xz)y+(xzz1)(gz1)

Now for the slick trick! We’re working in an ideal containing zg1, which means that z=1g in all of our computations2! So let’s take this expression and plug in z=1g to get

1=1g2f1+(x2g2+xg2+xg)f2+(xg1g1)0

Of course, we can clear the denominators by multiplying through by g2 to see

g2=f1+(x2+x+xg)f2(f1,f2)

So we found that, for some n, gn(f1,f2). As desired.


It turns out that this is exactly how the proof goes in general!

Say you give me polynomials f1,,fr,gk[x1,,xm] so that g vanishes whenever all the fi do.

Then we look at the ideal (in k[x1,xm,z])

(f1,,fr,zg1)

which must equal (1) by the weak nullstellensatz.

Then a computation, which sage will happily do for us, gives us polynomials p1,,pr+1k[x1,,xm,z] so that

1=p1f1++prfr+pr+1(zg1)

Then we plug in 1g for z to get a new expression

1=p1(x,1g)f1(x)++pr(x,1g)fr(x)

This is a polynomial with gs in the denominator. So we multiply both sides by some gn to clear denominators, and we find

gn=gnp1(x,1)f1++gnpr(x,1)fr

Notice that the pi(x,1) are polynomials in x1,,xm, since we’ve plugged in 1 for z everywhere. This means we’ve shown gn is a linear combination of the fi, so gn(f1,,fr), as desired.


Another quick post today! Hopefully other people find this helpful too ^_^.

I do have a few bigger ones in the pipeline, but I won’t say exactly what. I’ve learned that saying what post you’re planning to write next is a guaranteed way to not actually write it, haha.

See you soon!


  1. If you’re interested in this, you’ll want to read about gröbner bases. The actual algorithm for computing with these is buchberger’s algorithm.

    I really liked Adams and Loustaunau’s An Introduction to Gröbner Bases, which is a very polite introduction. I’ve heard great things about Cox, Little, and O’Shea’s Ideals, Varieties, and Algorithms: An Introduction to Computational Algebraic Geometry and Commutative Algebra, though I haven’t gotten around to reading it myself. 

  2. There’s a lot to be said about precisely why this trick works. It’s really because we’re looking at the homomorphism

    k[x,y,z]k(x,y)

    sending xx, yy, and z1g.

    This is quickly seen to be injective, so it preserves and reflects truth. We solve our problem in k(x,y), but recover a formula of polynomials in x and y that gets reflected back to k[x,y] under this embedding.

    For more information about this technique of “permanence of identities”, you can see this blog post of mine.