Pointers to the literature

Just this morning we updated the Stacks project website (huge thanks to Johan Commelin and Pieter Belmans) so that we can now start adding precise outside references. Since the Stacks project is selfcontained we view these references more as pointers to the literature. Currently we have only four examples of this:

If you click on one of these links and then look in the sidebar you should find a gadget with title “References” which gives you a reference. This sidebar gadget only shows up on the page of the lemma and not on the page for the section which contains the lemma; it also does not show up on the page of lemmas for which we have not yet added references.

The hope is that you, dear reader, will help. While browsing the Stacks project you may come to a lemma for which you know a precise reference. If so, please leave a corresponding comment on the page of the lemma.

The way things are setup we can add these specific references to any lemma, proposition, theorem, remark, example, exercise, situation, equation, or definition. I stress once more that these references should be as precise as possible (i.e., point to an exact result and/or an exact page number if known). If the result in the paper referenced is different, it may be helpful to briefly explain how. Also, it is very useful if multiple references are given for a single result.

More technical information can be found in this post. At the moment parts 1, 2, 4, 5, 6, and 7 of the list there are done. Please feel free to help with parts 3, 8, and 9.

Slow with updating comments

Dear commenters,

This is just to let you know that I’ve been a bit slow with approving the valid comments as I am getting too many spam comments. This blog gets almost 500,000 spam comments per month. Yes, this is insane as only 5 people read this blog! Most of these spam comments are filtered out automatically but some get through which is already annoying enough to make me not want to check comments. If you did leave a comment and you are annoyed that it doesn’t show up, then you can try emailing me directly.

Thanks for your patience!

References, slogans, and history

For a while now I have been thinking about adding “layers” to the Stacks project. You can find some discussions of this in post 1, post 2, post 3, post 4, and comment 1. Some possibilities for layers are “sign-offs”, “slogans”, “history”, and “references”. References are the most important for now, so let’s focus on that one.

One mathematical point: the idea of finding references is not that we’ll use them anywhere in the Stacks project. It is just to point out that such and such a result, or something similar, can be found in the literature. This way we don’t have to check the proofs given in the literature and we don’t have to worry about circular reasoning. In other words, we should think of “references” more as pointers to the literature than anything else.

In the rest of this post we discuss the mechanism for dealing with references. If you are a mathematician and only interested in the mathematical aspects of the Stacks project, then please check back when an implementation is in place (hopefully this summer) and help us do the hard work, i.e., actually finding precise references for results. Hopefully by then there’ll be an interface (or even a phone app) where it is easy to quickly suggest a reference.

Recall that the Stacks project consists of a bunch a LaTeX files + one extra file dealing with the tags. All the material is reviewed (by the maintainer = me currently). The Stacks website extracts information out of the LaTeX files and displays it and allows for visitors to leave comments (which are not part of the Stacks project and no correctness of the comments is claimed by the authors of the Stacks project).

Clearly, this means references go into the LaTeX files. Visitors can suggest references in the comments on the website, which can then be reviewed and put in the LaTeX file if suitable. We’ll need to write more code for the Stacks website to suitably display them.

Namely, since we (eventually) want references for each single lemma, I think by default we do not want to display references in the pdf or even on the website. There should be a button one can click which shows the references (if there are any) and asks the visitor for references / slogans / historical remarks. Pieter points out that we can show a list of references in the side bar on the tags pages, which may be a good solution.

LaTeX implementation: Currently every lemma is coded as follows

A smooth morphism is wonderful!

in the LaTeX files. Suppose we have a reference for this lemma is EGA II, Theorem Then I suggest we put this into the LaTeX file as follows

\begin{reference} This is \cite[II Theorem]{EGA}. \end{reference}
A smooth morphism is wonderful!

If there are more references then maybe the formatting would be like so

The first part of this lemma can be found in \cite[page 455]{A}
and the second part of the lemma can be found in \cite[Lemma 5]{B}.
A smooth morphism is wonderful!

What needs to be done (in no particular order):

  1. Change preamble.tex so \begin{reference} … \end{reference} gets ignored.
  2. Change the current Stacks website code so that \begin{reference} … \end{reference} gets ignored on rendering the LaTeX but so \begin{reference} … \end{reference} does show when clicking the “code” view button.
  3. Make a “show / add references” button on the stacks website which pops up a window showing the current content of \begin{reference} … \end{reference} and asks for a comment
  4. Write a python function extracting the actual \cite commands from the text in between \begin{reference} and \end{reference}
  5. Add a database table with references (both text and actual cite commands) and add a script which populates the table on each update
  6. Add to the script checking correctness of the Stacks project to check correctness of the format of \begin{reference} … \end{reference}
  7. Add a sidebar gadget which shows references (not the surrounding text)
  8. Write a phone app, eg asking for references for a “random” tag
  9. Put your idea here!

If you are comfortable with using LaTeX, php, and python, then you can probably jump right in and help develop. In fact, it might even be fun! If you are interested just email me or Pieter and we can make sure we aren’t doubling up on the work.


This is just a quick post to point out that I’ve just updated the contributors file. Please let the Stacks project maintainer (currently me) know if you should be there and you’re not, or if I spelled your name wrong, or if you want your name removed. If you want to learn more precisely who did what you have to look at the commit log and you actually have to look into the commits themselves to see who is thanked for what. A quicker way, if you have a question about this, is to email me and ask.

There are lot’s of things you can do to get onto this list. A suggestion is to browse the project online and find typos/errors and leave a comment on the site. You can also leave comments with an imaginary name, e.g., I think that Levi Civita once send me a suggestion. Be creative. Thanks!


Today I tried to figure out what a stratification is. Of course, I already knew the answer but I sort of got worried I had it wrong. Let me explain.

The “correct” (actually no, see Edit below) definition for general purpose applications in algebraic geometry is as follows. Let X be a topological space.

A partition of X is a decomposition of X into pairwise disjoint locally closed subsets. A stratification of X is a partition of X such that if X_j meets the closure of X_i, then X_j is contained in the closure of X_i.

For a stratification the index set gets a canonical partial ordering such that the closure of X_i is the union of the X_j for j ≤ i. [Side remark: at the moment of writing a stratification of a scheme isn't formally defined in the stacks project, but is introduced in the text of a section on flattening stratifications, where it unfortunately conflicts with the notion as defined above. Argh! We'll fix that soonish.]

Now, we are often interested in partitions and stratifications with additional properties. For example, it is nice if the index set is finite or at least if the decomposition is locally finite. If X is a spectral space (topological space underlying an affine scheme), then it is nice to require the parts and strata to be constructible locally closed subsets.

How is this used? For example in the following definition:

A sheaf of sets F on the etale site of an affine scheme X is called constructible if there is a finite constructible partition of X such that F is finite locally constant on each stratum.

The thing that got me worried is the following. Let X be a topological space with a closed subset Z and complementary open U. Then X = Z ∪ U is a partition of X. Now we ask ourselves: Can we refine this partition by a stratification? But wait, why is this even a question? Well, because Z’ = U̅ ∩ Z may be nonempty and strictly smaller than Z. Thus to get a stratification we need to split Z up into Z’ and Z \ Z’. However, then we need to do the same thing for the closure of the complement of Z’, etc, etc. The process potentially never stops.

Moreover, if we start with a finite constructible partition of an affine scheme X, then, in general, there does not exist a constructible stratification refining it. (Because it can happen that one has an irreducible quasi-compact open of X whose closure is not constructible.)

OK, and now it appears that we have two possible definitions for constructible sheaves. Namely, instead of the definition above we could require F is finite locally constant over the strata of a finite constructible stratification of X. But, happily, it turns out the second version isn’t the correct notion. Namely, we want pullback of constructible sheaves to be constructible. For a noetherian scheme the two notions give the same thing. But… the inverse image of a stratification by a continuous map is in general just a partition, not a stratification!

Thus for the Stacks project we should: (1) introduce formal definitions for partitions, refinments of partitions, and stratifications, and (2) search of all occurences of partitions and stratifications and make sure they match the given definitions. Moreover, we should have done this a long time ago.

Any comments on this are very welcome.

[Edit next day: I just realized that there is an intermediate notion, where one assumes that the index set comes with a partial ordering and the closure of X_i is contained in the union of X_j with j ≤ i. For example the stratification by Newton polygon has this property, but isn't a stratification in the sense defined above. So probably that one is the "correct" one for algebraic geometry? So now I am tempted to take this weaker definition and then call the stronger one a good stratification.]

Limits of quasi-compact spaces

The limit of a directed inverse system of quasi-compact spaces need not be quasi-compact. Danger Will Robinson!

Nice exercise: what happens with an inverse limit of spectral spaces with spectral maps? A spectral space is a topological space which is sober, has a basis of quasi-compact opens, and is such that the intersection of any two quasi-compact opens is quasi-compact; actually Hochster showed these are always homeomorphic to spectra of rings.

As usual: don’t answer if you know the answer…

Generators and dgas

Let D be a triangulated category. Let E be an object of D. We say that E is a generator if for every nonzero object K we have that Hom(E, K[n]) is nonzero for some n. As discussed earlier on this blog, if X is a quasi-compact and quasi-separated scheme, then D_{QCoh}(X) has a perfect generator E and in this case we get D_{Qcoh}(X) = D(A) where A is the dga of endomorphisms of E. In a formula

A = RHom(E, E)

(To get an actual dga you find a K-injective complex of O_X-modules representing E and you take its endomorphisms in the differential graded category of O_X-modules.) Moreover, it then follows that D^b_{Coh}(X) = D_{compact}(A).

Let X be a smooth projective curve over a field k. Let E be a vector bundle on X. Then it turns out that E is a generator for D_{QCoh}(X) if and only if for every nonzero vector bundle F on X either H^0(X, F ⊗ E) or H^1(X, F ⊗ E) is nonzero. (We omit the proof of this statement.) Take for example E = L ⊕ N for some invertible sheaves L and N. Then it follows from Riemann-Roch that E is a generator if L and N have different degrees.

Let’s specialize even further. Assume the genus g of X is not 1. Take L = O_X and N general of degree g – 1. Then H^0(N) = H^1(N) = 0 and H^0(N^*) = 0. Thus the differential graded algebra A has cohomology H^*(A) given by

H^0(A) = k x k

(put these two factors k along the diagonal in a 2×2 matrix) and

H^1(A) = H^1(O_X) ⊕ H^1(N^*) ⊕ H^1(O_X)

(put these in an upper triangular 2×2-matrix) and all other cohomologies are zero. It follows from this that the algebra structure on H^*(A) depends only on the integer g and not on the isomorphism class of X (or N for that matter). However, since we know that the derived category of X determines the isomorphism class of X we see that there are moduli hinding in the dga A! In particular this shows (in a very roundabout way) that there is a positive dimensional family of isomorphism classes of dgas A with cohomology algebra as indicated above.

I have no doubt there are simpler examples of this phenomenon. Please leave a comment or email me if you have one or a reference. Thanks!

Pull requests

OK, just a quick update. Somehow I have been kind of swamped with work this semester and I haven’t gotten to do a lot of writing on the stacks project recently. I intend to get back to it at the end of the semester and perhaps write about semi-stable reduction.

On the other hand, others have continued to contribute: We have had a new section added on getting triangulated categories out of differential graded categories, written by John Yu and Yifei Zhao. Also, some of the readers of the stacks project have chimed in by leaving comments and found mistakes as well as typos. Finally, there has been a few pull requests which is particularly nice because all I have to do to incorporate those is click a couple of buttons.

How about you?

Chow stability of curves

This post is part of my effort to understand what is currently the cheapest way to prove semi-stable reduction of curves. One possible approach, championed by Gieseker, is to prove it using GIT stability. To explain the strategy, fix a genus g > 1. Fix an integer d >> g. Set P(t) = dt + 1 – g ∈ Z[t]. Suppose we can prove

  1. the Hilbert point of any smooth projective curve C of genus g embedded by the full linear system of a degree d line bundle is GIT stable, and
  2. every closed subscheme of P^{d – g} with Hilbert polynomial P whose Hilbert point is GIT semi-stable, is a nodal curve.

Then semi-stable reduction pops out. Namely, it is a basic fact of GIT that a specialization of a stable point can be replaced, modulo the group action, to a specialization whose limit is semi-stable (one may in addition assume the limit point has a closed orbit in the semi-stable points). It always seemed to me that proving 1 is more difficult than proving 2, so we’ll focus on that in this post.

I’d like to observe here that if one is only interested in proving semi-stable reduction, then one can play around with the quantifiers above in a fun way. For example, to use the argument above it suffices to prove for a given curve C that there exists some very ample line bundle of large degree such that the corresponding Hilbert point is stable. Next, it suffices to prove this after specializing the curve, hence we may assume that the ground field is finite. In that case there are only finitely many flags to consider in the Hilbert-Mumford criterion, hence this makes some of the uniformity questions that arise trivial. I find this a psychologically useful thing to observe, but I am not sure it actually make things easier to prove.

In a paper by Ross and Thomas it is mentioned that one can get a geometric proof of Chow stability of curves. In particular they claim that one can avoid doing some of the combinatorics that often arise when proving stability. I think I have now understood a simple way to do this (which is, if not equal, very close to what Ross and Thomas say in that article), which I am going to explain here. I haven’t worked out all the details, so caveat emptor.

Let C be a smooth projective curve sitting in P^n. We are going to check the Hilbert-Mumford criterion for stability of its Chow point. To do this we consider closed subschemes X of P^n x A^1, flat over A^1, and invariant under the action of G_m acting by a 1-parameter subgroup of SL_{n + 1} on P^n and by the standard action on A^1. We normalize weights of the action of G_m such that the coordinate t on A^1 has weight 1 (this is, I think, the opposite of the normalization in the paper of Ross-Thomas). Let w_l be the weight of the G_m-action on H^0(X, O_X(l))/tH^0(X, O_X(l)). It is shown in Mumford, Stability of projective varieties, that

w_l = a_0 l^2 + a_1 l + a_2

for l >> 0 and some rational numbers a_i. Mumford also shows that a_0 (up to a factor or 2, 1, or 1/2) is the weight of G_m on the ample line bundle of the Chow variety corresponding to the Chow point of the G_m fixed point corresponding to the special fibre X_0. Thus the Hilbert-Mumford criterion tells us we have to show

for every X as above we have a_0 < 0

Now, we are going to apply Lemma 5.1 of the paper of Ross-Thomas. It says that we can compute a_0 on any modification of X. I claim that with some simple algebraic geometry we can find (after possibly taking an nth root of t and replacing G_m accordingly) a G_m-equivariant map

f : Y —> X

where Y is flat over A^1, where f induces an isomorphism of generic fibres, and where the special fibre Y_0 is a nodal curve. Because the generic fibre is constant with value C, this implies that Y_0 is equal to C union a bunch of chains of P^1′s. Moreover, the G_m-action on these chains is easy to describe: for t -> 0 it pushes points towards the component C. The pullback of O(1) to Y_0 is an invertible sheaf L, equipped with a G_m-action, with the following properties

  1. L is globally generated, and
  2. the weight on H^0(Y_0, L) – H^1(Y, L) is nonpositive.

It takes a bit of work to prove this. Now I claim that this, together with the description of how G_m acts on the chains of P^1′s I mentioned above, implies that the weights on H^0(Y_0, L^l) grows asymptotically as (neg) l^2 unless the scheme X is the trivial degeneration of C. To prove this involves a little bit of combinatorics of the chains of P^1′s but not much. (I’ve gone over this computation twice, and both times it came out correctly. If you’re interested, stop by my office and I’ll explain it to you.)

Although beautiful, this method of proving semi-stable reduction for curves takes too many twists and turns to make it suitable for inclusion into the Stacks project, at least for the moment…

PS: I strongly encourage anybody trying to understand Kempf’s result on uniqueness of destabilizing flags, to look at Sections 2 and 3 of Burt Totaro’s paper on tensor products in p-adic Hodge theory. It is a marvelous piece of mathematical exposition if I ever saw one.

Graded direct sums

A graded (preadditive) category is a preadditive category such that the hom groups have a Z-grading compatible with composition. In Heller’s paper of 1958 he talks about direct sums in graded categories: one requires the projections and the coprojections to be homogeneous (I would also require them to have degree 0 but Heller doesn’t require this).

Today seems to be the day for silly questions, because I was wondering if a graded category which has direct sums as an additive category (i.e., ignoring the grading) necessarily has direct sums as a graded category.

The answer is no (please stop reading here; it won’t get any clearer from here on out). For example, start with a semi-simple abelian category A generated by two non-isomorphic simple objects X and Y. Then consider the graded category Grgr(A) of graded objects of A (see Tag 09MM). Let’s denote [n] the shift functors on graded objects. Then consider the subcategory B of Grgr(A) containing 0, containing arbitrary finite direct sums of shifts of copies of K = X ⊕ Y and containing arbitrary shifts of L = X ⊕ Y[1] and M = X ⊕ Y[2]. Then, forgetting the grading, we see that K ⊕ K is the direct sum of L and M. But, even with the definition in Heller, K ⊕ K is not the graded direct sum of L and M in this category. In fact, the direct sum L ⊕ M in Grgr(A) is not isomorphic to any object of B, but B, viewed as an preadditive category has direct sums.