DQCoh(X) = D(E)

Over the last week I added the final arguments to show the result of the title of this post when X is a quasi-compact and quasi-separated scheme or algebraic space X.

Let X be a quasi-compact and quasi-separated algebraic space. There exists a differential graded algebra E with only a finite number of nonzero cohomologies, such that DQCoh(X) = D(E).

For schemes this result is due to Bondal and van den Bergh and can be found in their wonderful paper Generators and representability of functors in commutative and noncommutative geometry. The proof for algebraic spaces is exactly the same (we claim no originality, as always). You can find more precise statements and proofs in the Stacks project here:

  1. the case of schemes is in Section Tag 09M2
  2. the case of algebraic spaces is in Section Tag 09M9

The statement involves the derived category of differential graded modules over a differential graded ring. Moreover, the proof of the result as given in the paper by Bondal and van den Bergh invokes a general result a la Gabriel-Popescu of Keller which can be found in Keller’s paper Deriving DG categories, in Section 4.3 to be precise. A very general (perhaps the most general available) version of Keller’s result is in a more recent paper by Marco Porta, entitled “The Popescu-Gabriel theorem for triangulated categories”.

So, this got me a bit worried as I am not an expert in differential graded categories, Frobenius categories, etc. But it turns out, as Michel van den Bergh hinted at in an email, that one needs only the most basic material on differential graded algebras, differential graded modules, and a tiny bit about differential graded categories. This material can be found in the new chapter on differential graded algebra. The key construction needed for the proof of the theorem of the title can be found in Section Tag 09LU.


PS: In my graduate student seminar I will lecture on this and related material during the semester and I will go over the new material a second time, adding a few more details and corrections. But as always, I’d be most happy if you can find mathematical errors (this will earn you a Stacks project mug) or have suggestions for improvements of exposition. Thanks!

The Sagemath Cloud

Please read William Stein‘s blog post about the online LaTeX editor he created for the Sagemath Cloud. I’ve tried it out and it is pretty incredible, especially considering the fact that when I wrote my first post about the Sagemath Cloud two weeks ago, there wasn’t anything like this.

Of course, since the online latex editor is new there will be some bugs, etc. For me (and maybe because of me or my local setup) not all features work perfectly for some of the files in the Stacks project. But all the basic stuff works. So I would use it if I needed to do some edits and was using a laptop for example. (I am just too used to my own setup on my desktop at home/work to consider using an online editor when I am in my office.)

I strongly recommend you get an account on the Sagemath Cloud and play with it.

Generating the derived category

A paper by Bondal and ven den Bergh shows that one can generate D_{QCoh}(X) by a single perfect complex if X is a quasi-compact and quasi-separated scheme.

There are two key ingredients to the proof.

The first concerns the orthogonal to a Koszul complex. Let I = (f_1, …, f_n) be a finitely generated ideal of a ring A. Let K be the Koszul complex on f_1, …, f_n over A. Set X = Spec(A) and let U = D(f_1) ∪ … ∪ D(f_n). Let j : U —> X be the inclusion morphism. Let E be a complex of A-modules, in other words an object of D_{QCoh}(X). What can we say about E if Hom(K, E[n]) = 0 for all integers n? Well, if I’m not mistaken, this means exactly that E is Rj_* of an object of D_{QCoh}(U).

Namely, one can build the Koszul complexes K^e = K(f_1^e, …, f_n^e) from the complex K(f_1, …, f_n) by taking cones. Hence the assumed vanishing gives vanishing of Hom(K^e, E[n]) also. Then we consider the distinguished triangles

I^e —> A —> K^e —> I^e[1]

where A —> K is the obvious map. Any element of H^n(U, E) comes from a map I^e —> E for some e (see for example Tag 08DD). Thus our assumption implies that RΓ(U, E) = RΓ(X, E) which is what we wanted to show.

The second ingredient is Thomason-Throghbaugh’s result that any perfect object on a quasi-compact open of a qc + qs scheme X is a direct summand of the restriction of a perfect object on X. In Bondal – van den Bergh this is proved using some abstract machinery (due to Neeman IIRC; this machinery is interesting by itself), but in essence it is elementary from the induction princple and the case of affine schemes (this is how we do it in the Stacks project).

Finally, how do we get our perfect object generating D_{QCoh}(X)? Let X = U_1 ∪ … ∪ U_n be a finite covering by affine opens with n minimal. We will find our perfect object by induction on n. Let Z be the complement of U_2 ∪ … ∪ U_n in X. Then Z is a closed subset of U_1 whose complement is quasi-compact. Writing U_1 = Spec(A_1) we can find a Koszul complex K for a finitely generated ideal I_1 in A_1 cutting out Z. This complex has no cohomology outside of Z hence is a perfect complex K on X. By the discussion above, for E in D_{QCoh}(X) being orthogonal to all shifts of K implies that E comes from U_2 ∪ … ∪ U_n. By induction we can find a perfect complex P on U_2 ∪ … ∪ U_n which generates D_{QCoh}(U_2 ∪ … ∪ U_n). By TT (see above) we can find a perfect complex Q on X whose restriction to U_2 ∪ … ∪ U_n contains P as a direct summand. Then the reader sees that K ⊕ Q is the desired generator of D_{QCoh}(X).

These results can now be found in the stacks project

  1. For schemes look at Section Tag 09IP, and
  2. for algebraic spaces look at Section Tag 09IU.


Semi-stable reduction

There are many proofs of the stable reduction theorem for curves. A good overview is given in Abbes : Réduction semi-stable des courbes d’après Artin, Deligne, Grothendieck, Mumford, Saito, Winters, …. I personally found the introduction of Temkin’s paper Stable modification of relative curves quite helpful. Yet another proof (not discussed in the references just given) can be found in a preprint by Kai Arzdorf and Stefan Wewers entitled “Another proof of the Semistable Reduction Theorem”. In this blog post I’d like to discuss their argument (up to a point).

General remark: The goal on this blog is not new or original research, but rather the goal is to understand material in a way that is easy to explain with what is currently available in the Stacks project.

Let’s start with a complete discrete valuation ring R with fraction field K whose residue field k is algebraically closed. Assume we have a smooth projective geometrically irreducible curve C over K. Then we can choose a flat projective sheme X over R whose generic fibre is C. We may normalize X and assume X is a normal scheme. Denote X_0 the special fibre. This is a projective connected scheme over k which satisfies (S_1).

During the proof we will finitely many times

  1. replace R by the integral closure R’ of R in a finite K’/K and X by the normalized base change X’, and
  2. replace X by a normalized blowup of X.

The assertion of the stable reduction theorem is that in doing so we can get to a situation where X_0 has at worst nodes as singularities.

Step 1. A theorem of Epp guarantees that we can do an operation of type 1 to get reduced special fibre X_0. See for example Tag 09IJ. We observe that any further base change of X (by an extension of dvrs) is normal, so that in particular the isomorphism type of the special fibre is preserved under this operation.

Step 2. If X_0 is reduced, then for a closed point p \in X_0 we have two local invariants: the number of formal branches m_p of X_0 at p and the δ-invariant δp.

Step 3. Let p be a singular point of X_0 with δp > 1. Choose a normalized blow up Y —> X at p such that each of the formal branches B_i at p lifts to a nonsingular branch at some point q_i of Y lying over p and all the q_i are distinct. (Of course you have to show such a blow up exists, but I think this is completely standard. Moreover we have results like this available in the Stacks project; for example Tag 080P can be used to separate the branches and the proof of Tag 00P8 gives a sequence of blowups that normalize the branches.) Of course now Y no longer needs to have reduced special fibre. Thus we replace Y and X by normalized base changes so that both X and Y have reduce special fibre.

Step 4. Consider the map Y —> X we produced in the previous step. To finish the proof it suffices to show that the maximal local δ-invariant of Y at points mapping to p is < δp.

To do this my first guess was to try and prove following criterion (this is probably wrong, although I have no counter example):

If R1f*OY0 has nonzero stalk at p, then Step 4 works.

It is easy to see that the vanishing of R1f*OY0 has all kinds of pleasurable consequences (such as the rationality of the irreducible components of Y0 lying over p — kind of like having a rational singularity at p), so there is hope we can prove that this vanishing isn’t possible if δp > 1.

To prove the statement quoted in italics above, we try to use the relationship between local invariants and the genus of the curve plus the fact that X_0 and Y_0 have the same (arithmetic) genus. However it won’t work. Let’s take the example suggested by Anand where X_0 is a cuspidal rational curve. Then what might happen is that Y_0 is a smooth rational curve (the normalization of X_0) attached transversally to a cuspidal rational curve (the exceptional fibre). Here we could end up doing an infinite sequence of normalized blow-ups over and over again. Moreover, somehow at each step there is a unique point where you blow up.

This kind of problem is solved in the paper by a (more) careful choice of the ideal to blow up in (I haven’t yet looked enough at the paper to understand how). In resolution of singularities of surfaces, a similar problem comes up. For example, look at the discussion of resolution of rational double points in Artin’s paper “Lipman’s proof of ….”. The problem is dealt with by showing that an infinite sequence of infinitely near but not satellite points gives a nonsingular arc passing through the singular point and showing that along a nonsingular arc the procedure of normalized blowups always works. I think the references mentioned at the beginning of this post, tell us a similar method will work here, but the question is how difficult it will be.

I’ll add updates here if I think about it more.

A story of two colorings

When Cathy blogged about the new website she complained that we didn’t have the awesomest height function for the heat mapping of our nodes in the graphs. Here are two graphs, one with the coloring as we currently use it on our site and one with Cathy’s choice.



Questions: Can you figure out what the difference is? Which one do you like more?

PS: This isn’t completely fair because Cathy’s idea is that with her height function the coloring more accurately predicts the relevance of the results to the root note (the one with the wobbly outside). And with these static pictures you can’t see the meaning of the nodes (which you can if you visit the website).

Sage Math Cloud

Please take a look at this totally cool project by the Sage people; actually just create an account here and start playing around with it. If you already have, good for you.

To get your own version of the Stacks project in the cloud is quite easy: (perhaps skip reading the instructions and read below why this could be useful):

  1. login to your sage math cloud account you’ve just created
  2. start a new project, say XXX
  3. enter XXX by clicking on it
  4. create a terminal by clicking the + New button and choosing terminal
  5. click on the terminal file you’ve just created (extension term)
  6. now you have command line access on the Sage cloud (how this isn’t a HUGE security problem I’ve no idea, but we’ll trust the people behind it to have some barriers…)
  7. OK, now clone the stacks repository from github with
    git clone https://github.com/stacks/stacks-project.
  8. That’s all there is to it and moreover, now you have all the usual linux tools at your disposal as the Sage people have set it up for you. For example, you enter the new directory using
    cd stacks-project
    and make all the pdfs by running
    make pdfs
    etc, etc. After you have these pdfs you can download them and read them locally, or whatever.

Thanks to William Stein for explaining how to get the terminal window.

What’s the point? The point is that, contrary to what you may think, most people aren’t linux guru’s. Hence they do not know how to deal with large latex files, etc. Have you ever tried to open algebra.tex with a latex editor on a windows or mac? Often the result is a BSOD or at least overheating of components. Thus for most people it is great if we can tell them: click here and here and use this editor to start editing this file. Right now in the situation above you can run vim algebra.tex on the command line or use the online editor. Moreover, here are some additional bonus features of using the Sage cloud (thanks to William for pointing these out in an email):

  1. You can have multiple people work on the same file at once with chat
  2. The online editor in Sage cloud has syntax highlighting with many color schemes. This is useful for those working for long hours typing things. People can also set vim or emacs modes for the editor.
  3. If you click on the camera off to the right in the file viewer, you’ll find that cloud.sagemath takes snapshots about once a minute of the complete state of all your files whenever you’re working. This can be really useful, especially in a collaborative setting.

Anyway, seeing this I’m now more optimistic that in the near future we’ll have some kind of online latex editor for the Stacks project. Just maybe we’ll use the Sage math cloud to do this: it only just started and already you can do lots of things with it.

Field and Galois theory

The Stacks project assumes the reader knows quite a bit of field theory, including Galois theory. It might be a good idea to add a chapter on field theory leading up to and including Galois theory. Preferably this chapter would use as little commutative algebra as possible (so it could be placed before the commutative algebra chapter).

The sections Tag 030D, Tag 037H, and Tag 09DU would then be moved there. Currently this material is mostly just stated and probably in the wrong order too.

Perhaps more advanced material, e.g. on separable extensions of fields, would not be moved into the new chapter (although it is entirely possible that a more elementary treatment of separable extensions exists — certainly the current exposition isn’t optimal).

How can you help? Well, if you happen to have latexed (in your younger years) a writeup of field theory, then send it over to stacks.project@gmail.com and if suitable, we will distort it out of shape and put it in. (Important note: you cannot lose any reputation points by doing this, it is understood that you just send it in the hope that it will be useful.) If not you can just take one of the lemmas in one of the sections listed above and write up a proof and send that over. Thanks!

Update August 19, 2013: I went ahead and took the chapter “Fields and Extensions” (with permission) from the CRing project. Some edits needed to be made to adapt the style of the new chapter to the Stacks project. As I got further into it I changed more and more, due to personal preferences. But I hope some of the spirit of the original chapter still remains. Enjoy!

PS: Some statements are still given without proofs, in particular the statements on Kummer and Artin-Schreier extensions. It would be wonderful if somebody could add them.


So, I would like some more input on the idea of having more macros in the Stacks project. Please read my thoughts here first.

One of the things that wasn’t mentioned there, maybe because it is so obvious, is that having more macros makes writing LaTeX for the Stacks project more difficult. On the other hand, it will always be the case that the most difficult part is writing the actual mathematics, and it is much easier to change the actual coding. For an example see this contribution by Kiran Kedlaya and note how this commit fixed up the coding style on the same day.

Here is a list of current code bits that I think warrant being replaced by a macro:

freq snippet meaning
111 \mathit{Isom} Isom sheaf between objects of a stack
114 \text{div} divisor of a rational function
116 \text{Fil} Fil(A) is cat filtered objects of A
125 \text{Sym} Symmetric powers
126 \text{cosk} coskelet functor
129 \text{gr} associated graded
139 \text{Tr} trace
146 \underline{\text{Proj}} relative proj
157 \text{Cris} crystalline site
164 \underline{\mathbf{Z}} constant sheaf
169 \textit{PSh} cat of presheaves on
178 \textit{Coh} cat of coherent sheaves
188 \text{Mod} category of modules over ring
205 \text{Cov} collection of coverings of a site
215 \text{Supp} support of a (sheaf of) module(s)
219 \text{Tot} associated total complex
239 \text{Tor} tor functor
241 \text{Ass} set of associated primes/points
249 \text{length} length of a module
260 \text{Coker} cokernel
285 \text{Im} image
310 \textit{Sets} category of sets
335 \textit{Ab} category of abelian groups
398 \text{Ext} ext functor
406 \text{Proj} proj functor
496 \textit{Mod} category of sheaves of modules
520 \textit{QCoh} quasi-coherent sheaves of modules
560 \text{pr} projection morphism
579 \text{d} differential A –> ΩA
677 \text{Ker} kernel
834 \text{id} identity morphism

Currently, I am contemplating introducing the command \identity for the identity morphism. What do you think?

API for the website

If the abbreviation API doesn’t mean anything to you, then this blog post isn’t for you.

The stacks project website has (the beginnings of) an API. This can be used to write a mobile version of the stacks project website, a webapp, a phone app. These apps could perform any task you think is fun (see PS for a suggestion).

But here is what is really cool! If you decide to write something like that you’ll be the app developer for the Stacks project as you’re almost guaranteed to be the only one (since after all you’re the only one still reading this blog post). This will get you huge kudos and nerd points with all your friends!

You can just go ahead and do something, that’s fine. It may help to contact Pieter Belmans to coordinate issues about the API.

PS: Recall the “slogans” we discussed a while back. Here’s an idea of a web app to crowd source these slogans: there’s this page somewhere on the web and if you go there it throws up a random lemma, proposition, theorem from the Stacks project. Under it there is a text entry box where you can type your (proposed) slogan. These slogans are remembered by the app and if the random result already has a slogan, then it can be updated by the next visitor. Sounds like fun.

PPS: Online quick search and quick tag search apps are somewhat more obvious ideas.