Grothendieck existence again

Let me try again to find a tweak to the proof of Grothendieck’s existence theorem.

Let X be a Noetherian scheme, Z ⊂ X a closed subscheme, and U ⊂ X the complement. Denote X’ the completion of X along Z (this is a formal scheme). Suppose that we have a triple (F, G, a) where F is a coherent O_X-module, G is a coherent O_{X’}-module, and a : F’ —> G is a map of the completion F’ of F along Z to G whose kernel and cokernel are annihilated by a power of the ideal sheaf of Z. Then there exists a unique coherent O_X-module H with H’ = G and a map F –> H which produces a on completion along Z. This follows from the results on formal glueing which we discussed in this blog post, although this particular statement is a bit easier to prove.

Suppose now that X —> Spec(R) is a proper morphism of schemes with R a Noetherian ring complete wrt an ideal I. Let G be a coherent module on the completion of X along the ideal IO_X. We want to show that G is the completion of a coherent module on X. By Noetherian induction we may assume this is the case whenever G is supported on a proper closed subscheme of X. Chow’s lemma gives U ⊂ X an dense open subscheme and f : Y —> X a U-admissible blowup such that Y is projective over R. By the projective case (which is “easy”) we know that f^*G is the completion of a coherent module H on Y. Let J ⊂ O_X be a quasi-coherent ideal sheaf with Z = V(J) = X – U. Let X’ be the completion of X along Z. By our induction hypotheses the modules G/J^mG are I-adic completions of coherent O_X/J^m modules E_m. The system E_m gives rise to a coherent module E on X’. Then for some n > 0 we obtain a triple (J^nf_*H, E, a) for some map a (this is actually part of Grothendieck’s proof). Applying the result of the previous paragraph we obtain a coherent module F on X. I think it is pretty clear that the completion of F gives G as desired.

What I like about this argument is that it avoids dealing with extensions of formal modules. Note however, that one of the steps of the proof of formal glueing is an Ext computation, so we are not actually avoiding this issue altogether.

Update 10/12/12: Yesterday I finished adding this material to the stacks project. The proof in the projective case is short and sweet, see Section Tag 087V. The proof for the general case is in Section Tag 0886. The exposition avoids working with formal schemes (because it would take several hundred pages to introduce them) and instead consistently works with certain systems of coherent modules. This also has the advantage that the exact same arguments will work in the setting of algebraic spaces (and possibly algebraic stacks).

Chow’s lemma

One version of Chow’s lemma is that given a finite type, separated morphism of Noetherian schemes X —> Y, there exists a blowing up X’ —> X with nowhere dense center such that X’ —> Y is quasi-projective.

Chow’s lemma also holds if you replace “schemes” with “algebraic spaces”; see Corollary 5.7.13 of the paper by Raynaud and Gruson. To parse this you have to know what it means for a morphism Z —> W of algebraic spaces to be quasi-projective.

No doubt Raynaud and Gruson have in mind a definition a la EGA: we say Z —> W is quasi-projective if it is representable, of finite type, and there exists an invertible sheaf L on Z such that for every S —> W, where S is an affine scheme, the pullback of L to the fibre product S x_W Z (this is a scheme) is an ample invertible sheaf.

I will show by a very simple example that you cannot use Knutson’s definition and expect Chow’s lemma to hold: Let’s say a morphism of algebraic spaces Z —> W is Knutson-quasi-projective if there exists a factorization Z —> P^n_W —> W where the first arrow is an immersion.

The example is the morphism X = A^1 —> Y = A^1/R where R = Δ ∐ {(t, -t) | t not zero}. In this case Chow’s lemma as formulated above just states that X —> Y is quasi-projective. On the other hand, my faithful readers will remember that in this post we showed that there cannot be an immersion X —> A^n_Y. The exact same argument shows there cannot be an immersion into P^n_Y (or you can easily show that if you have an immersion into P^n_Y, then you also have one into A^n_Y perhaps after a Zariski localization on Y).

The morphism X —> Y above can be “compactified” by embedding X = A^1 into the affine with 0 doubled which is finite etale over Y. So you can find an open immersion of X into an algebraic space finite over Y (this is a general property of quasi-finite separated morphisms). You just cannot find an immersion into the product of P^n and Y.

In the stacks project we don’t yet have defined the notions: relatively ample invertible sheaf, relatively very ample invertible sheaf, quasi-projective morphism, projective morphism for morphisms of algebraic spaces. I think a weaker version of Chow’s lemma that avoids introducing these notions, and is still is somewhat useful, is the following: given a finite type, separated morphism X —> Y with Y Noetherian (say) there exists a blowing up X’ —> X with nowhere dense center and an open immersion of X’ into an algebraic space representable and proper over Y. If Y is a scheme (which is the most important case in applications) you can then use Chow’s lemma for schemes to bootstrap to the statement above.

Knutson proves a version of Chow’s lemma with X’ —> Y Knutson-quasi-projective and with X’ –> X Knutson-projective and birational when both X and Y are separated. As mentioned in the other blog post, I think the problem pointed out above cannot happen if the base algebraic space Y is locally separated. Thus I think it may be possible to generalize Knutson’s version of Chow’s lemma to the case where Y is locally separated.

Surely, you’re not still reading this are you?

Grothendieck existence

So I am gearing up to write a bit about Grothendieck’s existence theorem.

Let R be a Noetherian ring complete with respect to an ideal I. Let X be a proper scheme over R. Let O_n = O_X/I^nO_X. Consider an inverse system (F_n) of sheaves on X, such that F_n is a coherent O_n-module and such that the maps F_{n + 1} —> F_n induce isomorphisms F_n = F_{n + 1} ⊗_{O_{n + 1}} O_n. The statement of the theorem is that given any such system there exists a coherent O_X-module F such that F_n ≅ F/I^nF (compatible with transition maps and module structure).

Mike Artin told me Grothendieck was proud of this result.

Because it is all the rage, let’s try to construct F directly from the system via category theory. So consider the functor

G |—-> lim_n Hom_{O_X}(G, F_n)

on QCoh(O_X). Since QCoh(O_X) is a Grothendieck abelian category (see Akhil Mathew’s post) and since this functor transforms colimits into limits, we can apply the folklore result Lemma Tag 07D7. Thus there exists a quasi-coherent sheaf F such that

Hom_{O_X}(G, F) = lim_n Hom_{O_X}(G, F_n)

The existence of F comes for free. (A formula for F is F = Q(lim F_n) where Q is the coherator as in Lemma Tag 077P).

Of course, now the real problem is to show that F is coherent and that F/I^nF = F_n, and I don’t see how proving this is any easier than attacking the original problem. Do you?

Scheme theoretically dense

Let X be a scheme and let U be an open subscheme. The scheme theoretic closure of U in X is the smallest closed subscheme Z of X such that j : U —> X factors through Z. We say that U is scheme theoretically dense in X if the scheme theoretic closure of U ∩ V in V equals V for every open V of X. See Definition Tag 01RB. Then U is scheme theoretically dense in X if and only if O_X —> j_*O_U to be injective, see Lemma Tag 01RE.

If X is locally Noetherian, then U is scheme theoretically dense in X if and only if U is dense in X and contains all embedded points of X (Lemma Tag 083P).

For general schemes the situation isn’t as nice. For example, there exists a scheme with 1 point but no associated point (Lemma Tag 05AI). As a replacement for associated points, we sometimes use weakly associated primes (Definition Tag 0547) and the corresponding notion for schemes. This notion agrees with associated point for locally Noetherian schemes. There are enough weakly associated points: if U contains all the weakly associated points, then U is scheme theoretically dense (result not yet in the stacks project). But in some sense there are too many: there is an example of a scheme theoretically dense open subscheme U of a scheme X which does not contain all weakly associated points of X (Section Tag 084J).

We have the following result from Raynaud-Gruson: If X —> Y is an etale morphism and x ∈ X with image y ∈ Y then x is a weakly associated point of X if and only if y is a weakly associated point of Y (Lemma Tag 05FP).

What about scheme theoretic density? Given an etale morphism of schemes g : X’ —> X and a scheme theoretically dense open U ⊂ X the inverse image g^{-1}U is a scheme theoretically dense in X’ (Lemma Tag 0832). This was added recently in order to show that scheme theoretic density defined as above (and as in EGA IV 11.10.2) makes sense in the setting of algebraic spaces.

If you have trouble falling asleep tonight, try proving some of the results above.

Tree view

Pieter Belmans introduced tree view pages to the Stacks project. For example the tree view for Chapter 8: Brauer groups (link and click expand) looks like this:

  • Tag 073X points to Section 8.1: Introduction
  • Tag 073Y points to Section 8.2: Noncommutative algebras
  • Tag 0744 points to Section 8.3: Wedderburn’s theorem
  • and so on

This tree view shows in particular that we have tags for sections, and it allows you to quickly find those tags. The tree view of chapter n is at

http://stacks.math.columbia.edu/chapter/n

The depth of the trees is at the moment at most 3. Since we don’t allow nested environments in the stacks project (exception: equations), I think the maximal depth we can ever get is 5.

The tree view hints at browsing the stacks project online. When eventually mathjax (or whatever will be the next math rendering tool) matures enough to have good support for xypic (and better font size handling), we’ll go and actually set this up.

Searching the Stacks project

In the post I will discuss some features of the full text search we have available in the Stacks project website.

Basic usage: Just type in some keywords and hit return.

Notational convention: |search&*^term| means you typed exactly “search&*^term” into the search bar and hit return.

  1. By default search looks for what you typed case insensitive in statements of lemmas, propositions, theorems, remarks, equations, examples, and situations.
  2. It looks for words exactly how you typed them. So |stack| does not find occurrences of “stacks”. The solution is to put a wildcard at the end |stack*|.
  3. Non-alphanumeric characters have special meaning, so try to avoid them. For example |quasi-compact| searches for statements which include the word “quasi” but do not have the word “compact”.
  4. Using double quotes is special: For example |”quasi-compact”| will find statements including the hyphenated word “quasi-compact”.
  5. If you check the box “Include proofs” it will also look in proofs.
  6. If you check the box “Include sections”, then it will look in the text of sections, as well as the statements as above. This will return duplicate results, but if you did not have success with searching in statements this can be useful.

Advanced usage: There are other things you can do. I haven’t figured out all of them yet, and I’ll document more here over time. Leave a comment if you found a useful feature I haven’t mentioned. Here it goes (with more useful searches listed first):

  1. The OR operator works: |”smooth morphism” OR “etale morphism”| will search for statemens containing either “smooth morphism” or “etale morphism”.
  2. There is an AND operator which you can combine with the OR operator: |Noetherian AND “ring map” OR “etale morphism”|.
  3. Precedence of set operators: “-“, “OR”, “AND”.
  4. There is a NEAR operator: |locally NEAR/0 finite| and |locally NEAR/1 finite|. This finds occurrences of “locally” and “finite” 0 respectively 1 words apart in either order. You can also combine this with a wildcard, so |locally NEAR/1 finite*| finds both “locally of finite” and “locally finitely” which is useful.
  5. Try |”\text{.*}”| or |”\label{.*}”|. This works, but I don’t know why. Do you?
  6. Double quotes work across lines: |”ordinal whose cofinality”| finds a proposition whose statement has “ordinal” on one line and “whose cofinality” on the second.
  7. Wildcards do not work at the beginning of words.

Of course, I should go and read the documentation. And so should you!

Conclusion. Search is a very useful tool to quickly find results containing some given keywords.

However the Stacks project is a text written by humans and not computer generated. Thus it doesn’t contain all possible true statements… Example: suppose you wanted to find the result “a finite morphism is separated” or “a finite morphism is universally closed”. The obvious searches wouldn’t find these. Namely, the first is in the text directly following the definition of a finite morphism, in Section Tag 01WG. The second is an immediate consequence of either Lemma Tag 01WM or Lemma Tag 01WN.

This brings up a whole other topic, namely, to what extend we should add lemmas stating formal consequences of previous lemmas. This turns out to be quite useful, especially for results earlier in the Stacks project. What do you think?

Comments and the Stacks project

As discussed here the new Stacks project website allows you to leave comments. In this blog post I’d like to advertise this as a fun activity and as well discuss what kind of comments I’d like to encourage. Before we start a disclaimer:

Comments are not part of the Stacks project. When you leave a comment, it is just a comment and nothing else. Don’t worry about correctness, etc. It is just a hope that occasionally comments will be useful and the material will find its way back into the Stacks project, but we’ll see.

Comments pointing out mistakes: Perhaps the most obvious way to use the comment system to this is that it is real easy to point out mistakes. For example I just left two comments pointing out silly mistakes. While reading the Stacks project in pdf form, if you encounter a mistake no matter how silly, just click on the embedded link to the tags’s page in the pdf and leave a comment. Any misspellings, typos, latex bloopers, mathematical mistakes (of course there aren’t any!), etc are very welcome.

Comments giving references: Another type of comments would be one where you leave references to papers, books, mimiographed notes, and whatnot that contain results similar to the one contained in the tag. Here are two examples.

Historical comments: Part of the idea of the comments system was to have people put in comments like: “This result was first shown in 1966 by so and so.”

Sign-off: Another idea for the comment system was to have mathematicians sign-off on some of the results: “I solemnly declare this mathematical result to be correct”.

Typographical comments: You are very welcome to leave typographical comments. Usually these are easy to implement. However, there are a lot of peculiarities in the LaTeX coding which I for better or worse decided on when first introducing certain symbols and mathematical notation. We eventually have to drastically improve the handling of these in the Stacks project, and Pieter Belmans and I have some ideas about how to proceed. I’ll discuss this in a future blog post.

Comments on how to improve exposition and results: I’d love to hear your suggestions on how to improve the Stacks project.

If you’ve read this far, then I’m sure you see what I’m trying to say. But to give some impetus I am going to challenge you to find mistakes:

T-shirts for mathematical errors: If you leave a comment pointing out an actual mathematical error in a statement or a proof of a lemma, proposition, theorem, or a mistake in the text of a section or remark, then I will send you a Stacks project T-shirt while supplies last (currently I have 1 large and 3 medium T-shirts — I’ll update this until I reach zero). Make sure to leave a working email address so I can reach you to get your address.

Happy hunting!

A new website

Please visit the new website for the stacks project. It was written from scratch by Pieter Belmans. Huge thanks to Pieter for all the hard work he has done!

There is a lot more functionality on the site now than there was with the old version:

  1. You can search the stacks project. The default is to search for multiple keywords in statements of lemmas, propositions, etc. (Note that you need to explicitly add a wildcard to search for different endings of words — as explained on the site.)
  2. You can leave comments on each and every result of the stacks project. For the moment feel free to leave any comments you like; in the future I’ll lay some ground rules for what kind of comments are useful, what to avoid and so on.
  3. You can “browse” the project online. What this means will be clear only by doing it. So I suggest you start with the chapter on morphisms of schemes and go from there.

I’ll talk more about this in forthcoming blog posts, but for now I am just going to enjoy the fact that it is all there. Enjoy!

The new website is located at stacks.math.columbia.edu. We’ve set things up so that the links pointing to the old version are redirected to the new website.

A final word. In some sense the new website is a beta version. We’ve done testing (thanks to all testers here) and we’ve found lots of bugs, but there may be some left. Please let us know if you find any problems with the site. You can leave a comment to this blog post, email me, or email the general stacks project email address. Thanks!

Fork it!

This post assumes you are somewhat familiar with version control systems. But, it is entirely possible to contribute to the stacks project without knowing what such a thing is at all. So this post is aimed at people who’d like to experiment with version control, git, etc.

So with the move to github it becomes easier for you to do things.

Recall that git is a distributed version control system. This means that anytime you clone the stacks project repository (as explained here) your local version is an exact copy of the stacks project. When you work on it you are literally working on the stacks project. After you’ve made some changes you ask the maintainer of the stacks project (that would be me right now) to incorporate this into the online version. The documentation for the stacks project suggests to email patches to the maintainer.

Now there is another way to proceed: You can fork the project on github.

The procedure for doing this is roughly as follows. Get an account on github.com. This is ridiculously easy to do. Log in. Then just fork the stacks-project. Instead of cloning the stacks project, you clone the fork you just made (as explained on the github page above). Edit you local copy. Push your changes back into the fork. Now your work is visible to the world! Finally, if you like, you can make a pull request to have your changes incorporated back into the official stacks project.

In fact, it is so easy to do this, I can imagine creating a clone for every single change; after you’re all done just delete the fork.