Faithfully flat descent of projectivity

Alex Perry wrote a paper about faithfully flat descent of projectivity for modules, and submitted it to the stacks project. His writeup largely follows the exposition in Raynaud and Gruson’s paper [RG]. But, as Brian Conrad mentioned here, there is an error in [RG]. Alex avoids this error by proving that the Mittag-Leffler condition satisfies flat descent in the presence of flatness.

The result of the title of this blog post is Theorem Tag 05A9 of the stacks project. To get an (almost) self contained proof of the theorem start reading the introductory Section Tag 058B entitled “Faithfully flat descent for projectivity of modules”.

Edit: You can now find Alex’s write-up at arXiv:1011.0038v1 [math.AC].

What is the stacks project?

Very short answer: Download the latest version here.

The short answer: The stacks project is aimed at graduate students and researchers in algebraic geometry. It is both an ever growing reference work and a graduate textbook in progress. It is not a usual textbook, in that it is virtually impossible to read from beginning till end. It does not rely on outside references, but develops everything from scratch. The stacks project resembles an open source software project in the following ways: (1) Everybody can contribute material and make suggestions, but the maintainer makes the final decision, (2) all of its source (LaTeX) files can be downloaded, (3) it is licensed under the GFDL, and (4) we keep a complete history of its development.

In the rest of this post we give the long answer which is aimed at mathematicians especially those working in algebraic geometry.

The stacks project started in 2005. The initial idea was to write an open source introductory text on algebraic stacks. I emailed Bill Fulton et al to ask if they were interested in such a thing, and I got a surprisingly positive response from them, but in the end they decided to finish their book project in the traditional way. At the time I also enthusiastically started an email list. An interesting, prescient email by Kevin Buzzard you can read here. The mailing list did not generate activity (exactly as predicted by Kevin). In May, 2008 I started working on the stacks project in earnest. My short term goal was to write an algebra chapter that I was going to use as lecture notes for my commutative algebra course in the Spring of 2008. As a consequence, I started thinking of the stacks project more as a kind of a foundations for algebraic stacks and less as an introductory text. I was quite happy with the progress I made writing about commutative algebra, so I started writing about sheaves on spaces, schemes, etc. From there it became clear how to continue.

What is the stacks project now? Let me describe its basic structure briefly.

The stacks project assumes the reader is a mathematician who has at least had advanced undergraduate courses in set theory, point set topology, and basic algebra including the definitions on rings, ideals, modules, a bit of group theory, fields, vector spaces, and some Galois theory (it probably makes sense to add more basic algebra to the stacks project). The chapters Algebra, Topology, Sheaves try to list the basic notions which are supposed to be understood. Starting from this the stacks project builds up theory.

As we build theory we adhere to the following basic rules: (1) Every mathematical result in the stacks project has a proof, (2) no outside results are used in proofs, (3) there are no forward references, (4) every time a previous result is used, it is explicitly referenced, (5) every statement explicitly states all of its assumptions, (6) we try to prove things in the correct generality, e.g., we do not add hypotheses for the purpose of simplifying the proof, (7) we avoid long proofs by explicitly introducing lemmas for intermediate results, (8) every result is moved to its natural location, for example a result on modules and rings is put in the algebra chapter.

There is a lot more that can be said about each of these rules; this is just a rough outline. A consequence of the rules above is that while reading a proof in the stacks project one can find  the basic results a lemma depends on by clicking on the hyperlinks.

You may wonder what level of generality we have in the stacks project. The answer is that on schemes the level of generality of the stacks project is similar to that of EGA. For the material on sites and sheaves, the level of generality is comparable to SGA4. The material on algebraic spaces is more general than that in Knutson’s monograph as we allow our algebraic spaces to be non-quasi-separated. For the same reason, our material on algebraic stacks is more general than that in the book by Laumon-Bailly.

How far have we gotten so far? At the moment of writing this we have quite a lot of algebra and a lot about schemes, morphisms of schemes, descent, sheaves and sites, some results on cohomology, etc. We have results on algebraic spaces; here some of the material is a bit closer to current research (as we are studying “arbitrary” algebraic spaces — see above). Finally, altogether we have developed enough theory to state the definition of an algebraic stack, and prove some basic results on properties of algebraic stacks and morphisms, and it would be relatively painless to write more general results on types of algebraic stacks, and types of morphisms (this will be done in the future).  What is currently missing is a discussion of several fundamental results by Artin, for example 1 and 4 from the list here. Currently, I am working on flattening stratifications, in order to write about Hilbert functors, in order to do 4 mentioned above.

How are you supposed to use the stacks project? My hope is that users will look for and find basic results on algebra/schemes/algebraic spaces/algebraic stacks in the stacks project and learn by locally reading. One problem is that the stacks project is already large enough so that finding a particular result may not be easy (there is an index of definitions). Hopefully, google will eventually get better at picking out spots in pdfs; also putting pointers from the blog to results in the stacks project seems to help.

How can you help? As you read the material you may find typos, small errors, annoyances, lemmas stated in an incomprehensible fashion, missing results, missing or incomplete proofs, have requests for additional results, etc. Whenever this happens we ask that you write a quick email to As another rule to add to the above we have: (0) If a (fixable) mistake is found then it gets fixed quickly.

Of course there are other ways you can help. There is a todo-list. If you have written an expository note on some material you might consider adding it to the stacks project (some of the chapters try to be more informal, see for example the chapter on etale morphisms). For another suggestion, read the last paragraph of the email by Kevin Buzzard I mentioned above!

Text editors and TeX have made the task of writing math papers easier (of course it hasn’t always led to better mathematics). It is for example trivial to move around lemmas, proofs, etc, whereas traditionally this was done by cutting and pasting (literally). Since internal referencing is automatic you do not have to worry about numbering. Hyperlinks make it possible to quickly jump back and forth between referent and reference (i.e., when checking all the assumptions are satisfied). All of these technological advances make it easy to write very long mathematical texts. In the stacks project we try to keep the basic layout of the LaTeX source files as simple as possible, see coding style. The idea is that this makes it easy for outsiders to quickly make a local edit, and that we can add layers by writing software that parses the text and adds additional features. Examples are the tags system (which provides stable references) and a python script to check for forward references (and coding style violations).

Technological innovations will eventually improve the layout and presentation of the stacks project, e.g., by rendering LaTeX source directly on web pages, but this will not improve the mathematical exposition. So the contributions to the stacks project that really count are the mathematical ones.

What can we expect from the stacks project in the future? I’m not sure, we’ll see, but… it also depends on you!


Here are some questions of the form: I don’t know this, do you? These questions showed up in the stacks project, but we did not take a lot of time to find them in the literature or try to solve them. Maybe you know how to do some of these or a reference? Here they are:

  1. Does there exist a scheme which is connected, all of whose local rings are domains, but which is not irreducible?
  2. Let X be a scheme over a field k. Let k ⊂ K be an extension of fields. Let T be a connected component of X_K. Is the image of T in X_k a connected component of X?
  3. Is it true that a Noetherian ring all of whose local rings are Japanese is Japanese?
  4. If f : Z —> X is a closed immersion of schemes, then is f_* exact on the category of abelian sheaves on (Sch/Z)_{fppf}? I think probably not in general, but I don’t have an example. Do you?
  5. If X is an algebraic space (as defined in the stacks project, so not necessarily quasi-separated) does X satisfy the sheaf condition for fpqc coverings?

PS: Question 5 has a positive answer for quasi-separated spaces, see Lemma Tag 03WB. David Rydh has some more results on this. Maybe the real question here is if one can make some horrible counter example, or whether there is some straightforward argument covering all algebraic spaces that everybody has missed so far.


I think there is some confusion in the literature about what a band is, although likely this is just me. I just googled a bit and found, I think, at least two inequivalent definitions. I have also had at least one very confusing conversation with somebody (can’t remember whom), which I now think is due to us having different definitions. For the stacks project, I would prefer the band of a gerbe to be the finest possible invariant of the gerbe. I think this basically tells us what to do. Please don’t read the rest of this post if you already know how to do this.

First, let us make the following basic observation (and you are going to laugh at me for even pointing this out). For an element g of a group G let inn_g : G —> G be the map x |—> gxg^{-1}. Suppose that G, H are groups and that a, b : G —> H are homomorphisms of groups. Then the following are equivalent

  • there exists an element h of H such that a = inn_h o b,
  • there exist elements g of G and h of H such that a = inn_h o b o inn_g.

The reason is that b o inn_g = inn_{b(g)} o b and that inn_{hh’} = inn_h o inn_{h’}. If the equivalent conditions hold we say that a, b define the same outer homomorphism from G to H. You can compose outer homomorphisms because if you have a : G —> H and b : H —> F and g, h, h’, f in G, H, H, F, then we have (inn_f o b o inn_{h’}) o (inn_h o a o inn_g) = inn_{fb(h’)b(h)b(a(g))} o b o a. OK, so this gives us the category of exterior groups, sometimes called the category of outer groups. An automorphism in the category of exterior groups is often called an outer automorphism. It is clear how to generalize this to sheaves of groups over a site (you have to localize to get the correct notion of an outer homomorphism of sheaves of groups).

Let C be a site. Consider the fibred category PreBands over C whose category of sections over an object U is the category of exterior sheaves of groups over U, so objects are sheaves of groups on U and morphisms are outer homomorphisms. Stackify PreBands to get the stack of bands Bands over C. A band is then an object of the fibre category of Bands over a final object of C (and slightly more complicated if C does not have a final object).

What does such a band B look like? Let X be a final object of C. Then B is given by a system ({X_i —> X}, G_i, φ_{ij}) where {X_i —> X} is a covering, each G_i sheaf of groups on X_i, each φ_{ij} is an outer isomorphism of G_i|_{X_i \times_X X_j} —> G_j|_{X_i \times_X X_j} satisfying a cocycle condition. To get morphisms of bands ({X_i —> X}, G_i, φ_{ii’}) —> ({Y_j —> X}, H_j, ψ_{jj’}) consider the following two kinds of morphisms of systems

  1. one given by a refinement of coverings {Y_j —> X} —> {X_i —> X} (note reversal arrow) where the H_j are the pullbacks of the G_i, and
  2. one of the form ({X_i —> X}, G_i, φ_{ii’}) —> ({X_i —> X}, H_i, ψ_{ii’}) given by outer homomorphisms of sheaves of groups G_i —> H_i compatible with φ_{ii’} and ψ_{ii’}.

Then (roughly) you have to invert the ones of the first kind and the ones of the second kind where all the G_i —> H_i are outer isomorphisms to get morphisms of bands.

Finally, given a gerbe \cX over C we get a band B(\cX) by choosing a covering {X_i —> X} and objects x_i over the members of the covering in \cX. The associated band is ({X_i —> X}, Aut(x_i), φ_{ii’}), where the outer isomorphisms φ_{ij} come from the existence of local isomorphisms between the pullbacks of x_i and x_j over X_i \times_X X_j. This band is well defined up to unique isomorphism of bands.

Then, given a fixed band B, we say that a gerb \cX is banded by B if there exists a isomorphism θ: B —> B(\cX) to the band associated to the gerbe \cX. But be careful: If we try to classify all gerbes banded by B we could mean either of the following two things: Classify pairs (\cX, θ) or classify \cX’s such that a θ exists!

[Edit: I stole this description of bands from the paper by Max Lieblich and Brian Osserman, see arXiv:0807.4562. Unfortunately, there is a typo in their description of outer morphisms, they divide out by Aut(G) and Aut(H) but the should have used Inn(G) and Inn(H).]


Brian Conrad just emailed me to ask about gerbes in the stacks project. Unfortunately this is not yet in the stacks project (feel free to send your own write-up to if you have one).

This is how I would define them:

(1) A gerbe over a site C is a stack in groupoids p : S —> C with the following properties:

  • for every object U of C there exists a covering {U_i —> U} such that each fibre category S_{U_i} is nonempty, and
  • for every object U of C and objects x, y in S_U there exists a covering {U_i —> U} such that for every i in I we have that x|_{U_i} is isomorphic to y|_{U_i} in the fibre category S_{U_i}.

Once this has been defined there should be a brief discussion of the “band” of a gerbe. In the case where the band is commutative it should be explained carefully that you get a sheaf of groups over the site. Actually, another important case is the case where you are given a sheaf of groups G on C and you consider gerbes whose band “is” G (this should be precisely defined). Also, it should be defined what is a “trivial” gerbe. I suggest we try to avoid cocycles as much as possible. For an informal discission for gerbes over topological spaces, see Lawrence Breen’s notes or Ieke Moerdijk’s notes. Another, less informal, reference would be the book by Giraud entitled “Cohomologie non abelienne”.

(2) Let \cX —> X be a morphism from an algebraic stack \cX to an algebraic space X. Then we say that \cX is a gerbe over X if and only \cX viewed as a stack in groupoids on (Sch/X)_{fppf} is a gerbe as defined above. Moreover, all the notions defined in the abstract setting can be used in this setting also.

This may not always correspond to the geometric picture of a gerbe, especially if the band (i.e., the automorphism group of an object) isn’t flat! But is it really always the case that gerbes in algebraic geometry have flat automorphism groups?

As usual comments are welcome.

[Edit: Brian adds that we could for instance prove (via erasable delta-functors) that gerbes describe H^2 with commutative coefficients (including its group structure *and* functoriality in both group and base space). And similarly give a torsor/gerbe description of a 7-term exact sequence of pointed sets associated to a central extension of group sheaves. Most of this can be done without using cocycles. On pp. 144-145 of Milne’s book on etale cohomology he gives a nice little summary of the highlights on this aspect of Giraud’s book.

Another great suggestion is: Explain as an example why Artin’s work shows that for an fppf group scheme (or algebraic space group) A, the A-gerbes are Artin stacks.]


As I mentioned earlier I have started to look into Hilbert and Quot schemes/spaces/stacks. This led me to think about the existence of a flattening stratification and then I started thinking about some of the results obtained in the paper [RG] by Raynaud and Gruson. For example, as I first mentioned here, I think that using Theorem 4.1.2 of their paper would be a good way to prove the existence of flattening stratifications (as formulated in this post) in the “correct” level of generality.

Thus it now seems to me that the basic “devissage” result of [RG] would be a worthwhile addition to the stacks project. Consequently, I have started adding material on geometric fibres in families which is needed for one of the key geometric lemmas in [RG].

I think there is a lot more, besides flattening stratifications, to gain from adding this to the stacks project. For example, there are several places in [RG] with directions for the reader to rewrite several parts of EGA using their methods, and I feel that others will show up as we go along.

I’d love to hear about any interesting foundational applications of [RG] you know about!

[RG] Raynaud, Michel; Gruson, Laurent
Critères de platitude et de projectivité. Techniques de “platification” d’un module. (French)
Invent. Math. 13 (1971), 1–89.

A fun lemma

Lemma Tag 055J: Let R be a dvr. Let X be flat over Spec(R), with reduced special fibre, and connected total space. Then the generic fibre of the structure morphism f : X —> Spec(R) is connected.

You can find a version of this lemma as EGA IV, Lemma 15.5.6 where the hypotheses are that f is locally of finite type and open instead of flat. But in the proof of the lemma in EGA it is remarked that the hypotheses “loc. fin. type + open over dvr” imply “flat”, hence the lemma above implies the lemma in EGA. I urge you to try to prove the lemma above before looking it up, because it is fun when you find it!

Why is flatness necessary? If X is not flat over R, then a counter example is X = Spec(R[x]/(px(x-1))) where p ∈ R is a uniformizer. In words: X is a union of two copies of Spec(R) glued at 0, 1 of the affine line over the residue field of R.

Why is a reduced special fibre necessary? If not then a counter example is X = Spec(R[x]/(x(x – p))) where p is a uniformizer in R. In words: X is a union of two copies of Spec(R) glued at their special points.

Wie het kleine niet eert is het grote niet weerd!

Unstable repository

This blog post is only for very nerdy people. I’ve just added an unstable git repository. The idea is that collaborators can push local experimental git branches of the stacks project to this unstable repository on the server. This may be useful if you are using multiple machines to work, for example a desktop at home and at work. This will also speed up communication with me. Namely, if your branch has some usable material in it, you can email me a pull-request to ask me to merge it into the stacks project.

If you’d like to try this, then email me your and I’ll email you instructions. This setup is not ideal since it is fairly easy to screw up using git, e.g. delete the main branch and/or delete branches of others. So I will not randomly let everybody have access. In fact, if you want to setup a remote location to store your changes or any project you are managing with git, then you might instead want to look at github. In particular, you could maintain your own clone of the stacks project there…

Random thoughts

Random thoughts on material I added to the stacks project lately:

(I) Suppose you have a ring map φ: A —> B with the following properties: (1) Ker(φ) is locally nilpotent, and (2) for every x in B there exists a n > 0 such that x^n is in Im(φ). Then it is true that Y = Spec(B) —> Spec(A) = X is a homeomorphism, but it is not true in general that Y —> X is a universal homeomorphism. A counter example is where A is a non-algebraically closed field which is an algebraic extension of F_p and B is the algebraic closure of A.

(II) Let f : X —> Y be a morphism of finite type where Y is integral with generic point η. Suppose Z is a closed subscheme of X such that Z_\eta = X_\eta set theoretically. Then there exists a nonempty open V ⊂ Y such that Z_V = X_V set theoretically. (In the Noetherian case this is pretty straightforward.)

(III) A torsion free module over a valuation ring is flat. (If you don’t know how to prove this then it is a nice exercise for when you’re in the shower.)

(IV) Let f : X —> Y is a morphism of finite type where Y is integral with generic point η. If X_η is geometrically irreducible, then there exist a nonempty open V ⊂ Y such that all fibres X_y, y ∈ V are geometrically irreducible. Same with geometrically connected.

(V) Let f : X —> Y be a quasi-compact morphism of schemes. Suppose η ∈ Y is a generic point of an irreducible component of Y which is not in the image of f. Then there exists an open neighborhood V ⊂ Y of η such that f^{-1}(V) is empty.

Let me know if any of these assertions are wrong… thanks!