Derived lower shriek

Let (X, OX) be a ringed space. Let π : C —> X be a stack over X where we use the topology on X to view X as a site. Endow C with the topology inherited from X (see Definition 06NV). This (roughly) means that the fibre categories CU where U ⊂ X is open are endowed with the chaotic topology. Denote B = π -1OX and think of C as a ringed site and π as a morphism of ringed sites

π : (C, B) —-> (X, OX)

The functor π* = π -1 : Mod(OX) —> Mod(B) commutes with all limits and colimits on modules and hence has a left adjoint π! : Mod(B) —> Mod(OX). In fact, if F is a sheaf of B-modules on C, then we can describe π!F as the sheaf associated to the presheaf

U |—> colimξ in opposite of CU F(ξ)

on the topological space X. (Colimit taken in category OX(U)-modules.) Actually, it turns out that the situation above is a special case of this section of the Stacks project and we obtain a left derived extension Lπ! : D(B) —> D(OX) for free (note there are no boundedness assumptions).

In fact, the construction shows a little bit more. Namely, let ξ be an object of C lying over the open U ⊂ X. Then we can consider the localization morphism jξ : C/ξ —> C and the sheaf Oξ = jξ, !B|ξ. Any B-module is a quotient of a direct sum of these Oξ and we have

! Oξ = π! Oξ

Cool, so this gives us a bit of control in trying to compute Lπ!.

Let x be a point of X. Let Cx denote the category

colimx ∈ U ⊂ X CU

This makes sense as C is a stack over X so we can think of it as a sheaf of categories. If F is a sheaf of B-modules on C, then the stalk of π!F is just the colimit of the “values” of F over Cx. Since taking stalks is exact, I think this should mean that we can compute the stalk of Lπ!F at x by taking the corresponding construction over the category Cx with its chaotic topology.

Another tool to compute Lπ! should be that if C is given as the stackification of a category C‘ fibred over X, then it should be sufficient to compute with C‘. Going back to the discussion and especially the example in this post we have to replace our choice of C there. We should start with the fibred category C‘ of immersions φ : U —> AnB (not necessarily closed) and commutative diagrams over B. Then C should be the stackification of that. Then with all of the above you’d get the cotangent complex of X/B by doing the same construction as in the affine case. The key is that affine locally C‘ has a good co-simplicial object computing the derived lower shriek functor. You use the localization of sheaves of algebras construction to provide C with a sheaf of rings surjecting onto the pullback of the structure sheaf of X (and not to change the underlying category).

A similar procedure is going to define the base change CS given a morphism of schemes S —> B, i.e., as underlying fibred category start with some category of diagrams of schemes and use the localization of sheaves of algebras construction to endow this with a structure sheaf.

I think this will just work and in fact it simplifies the original idea I had for the stacks C and CS. We’ll see.

A cotangent complex

Let me quickly explain how to define the cotangent complex of a ring map R —> S using the ideas of the previous 3 posts. Again we will work in the affine case.

Consider again the category C which is opposite to the category of surjections of R-algebras φ : P —> S where P is a polynomial R-algebra. Endow C with the chaotic topology (where all presheaves are sheaves). There is a surjection of sheaves of rings O —> B where O associates the value P to the object (P, φ) and where B is the constant sheaf with value S. (Please excuse the weird notation.) We consider as before the morphism of sites

π : (C, B) ——> (point, S)

and we will use the existence of the derived funtor Lπ!. Then I claim that

LS/R = Lπ!O/RO B)

In fact, it doesn’t matter if this is actually true or not, because arguing similarly to the previous post we see that inf autos, defos, and obstructions are computed by taking ext groups out of the object defined on the right hand side of the equation, so we can take it as our cotangent complex. Ha!

Still I am pretty sure the two sides are (canonically) equal (see update below). For example

H0(Lπ!O/RO B)) = π!O/RO B) = ΩS/R

by a direct computation of the colimit of the modules ΩP/R ⊗ S over the category of pairs (P, φ). Maybe there is a reference?

[Edit 3 hours later: Both Bhargav Bhatt and Jack Hall have pointed out that this is very similar to what happens in Quillen’s notes “homology of commutative rings”, and that there is further work by Gaitsgory and Jonathan Wise. As usual, I am looking for something very simple that I can add to the Stacks project without first developing a huge amount of theory. The approach above seems short and sweet, but I am sure there’s all kinds of problems with it — it might even be BALONEY!]

[Edit next day: OK, so now I’ve had time to glance at Quillen, Gaitsgory, and Wise. As Bhargav pointed out in his email, I have now discovered that the arrows in Quillen and Wise go in the opposite direction. For example, what Quillen says is that you take the category C of all R-algebra maps X —> S for varying R-algebras X. You endow C with a topology by declaring coverings to be surjective maps {X’ —> X} in C. Given an S-module M you get a sheaf DerR(-, M) which assigns to X —> S the module DerR(X, M). Then you define Dq(S/R, M) to be the q-th cohomology of this sheaf. Finally, you show that there is a complex LS/R so that ExtqS(LS/R, M) = Dq(S/R, M). Thus it seems that our thing above is at least technically different. The Gaitsgory thing seems to work *very very* roughly (I would be more than happy to be corrected on this) by having spaces be derived themselves, then representing it by a simplicial (or whatnot) smooth thing, and then taking the usual Omega. This is exactly what I am trying to avoid doing.]

[Update OK, I think the agreement holds. Sketch proof. Let P* —> S be a simplicial resolution of S by polynomial R-algebras (as in Quillen, Illusie, and everywhere). To show that the = sign in the post is true it suffices to prove that the left derived functors of π! of an abelian sheaf B on our category C are computed by the complex F(P*). It is OK for H0 by direct argument (this is one place where you really need all the algebras in C to be polynomial algebras). It is clear that the functors F |—> Hn(F(P*)) form a delta functor. Finally, you show you get zero for higher n when you apply it to the projective B-modules on C defined by the formula

(P, φ) |—-> free S-module on MorC((Q, ψ), (P, φ))

where ψ : Q –> S is a fixed object of C. Applying this to P* you get

free S-module on the simplicial set Mor(Q, P*)

which is contractible to a point by our choice of P*.]

Baby case

In this post we work out how to use the construction discussed here in the affine case for deformations of modules.

Let R —> S be a ring map. Let C be the opposite of the category of surjections φ : P —> S where P is a polynomial algebra over R. Next, let A’ –> A be a surjection of R-algebras whose kernel I has square zero. Finally, let M be a A ⊗R S-module. Assume that M is flat over A. I want to use the idea from the previous post to compute the obstruction to deforming M to an A’-flat module M’ over A’ ⊗R S-module.

The material in this post is only interesting if S is not flat over R. In the flat case the construction of the obstruction class is straightforward and we’ll use it below. If you don’t know how to construct it then you could look in the (somewhat skeletal) chapter on deformation theory.

Consider the functor O : C —> Rings which associates to the pair (P, φ) the ring A ⊗R P. Similarly, consider the functor O‘ : C —> Rings which associates to the pair (P, φ) the ring A’ ⊗R P. Note that there is a surjection O‘ —> O whose kernel has square zero. Moreover, O is flat over A and O‘ is flat over A’.

Let’s endow C with the chaotic topology (all presheaves are sheaves). Then (C, O) and (C, O‘) are ringed topoi and the second is a first order thickening of the first. OK, as O‘ is flat over A’ by general theory we have an obstruction class

o(M) ∈ Ext2O(M, I ⊗A M)

to the existence of an A’-flat module M’ over O‘ lifting M. An fun argument (which I omit here) shows that such an M’ is actually a module over A’ ⊗R S, hence o(M) is the obstruction we are looking for. Since there is a surjection of O onto the constant sheaf with value A ⊗R S (let’s call this sheaf B) we can rewrite this Ext group as

Ext2B(M ⊗LO B, I ⊗A M)

Then we have to consider the morphism of ringed sites

π : (C, B) ——> (point, A ⊗R S)

and use the existence of a functor Lπ! (there is a left adjoint π! to π* = π -1 which is computed by doing colimits over the opposite of the category C, i.e., over the category of pairs (P, φ); the left derived functor Lπ! on bounded above complexes exists because the category of B-modules has enough projectives…) to get finally an element in

Ext2A ⊗R S(E, I ⊗A M)


E = Lπ!(M ⊗LO B).

To compute E you’d have to understand the category C a bit better, and here you will naturally be led to consider the standard polynomial simplicial resolution of S over R….

Things to do: How does the construction of E behave with respect to localization? If A, R are Noetherian, R —> S of finite type, and M finite over A ⊗R S, then we’d like the cohomology groups H^i(E) to be finite over A ⊗R S.

A base change

Let f : X —> B be a morphism of schemes. Suppose that for every open U of X we are given a category CU whose opposite is a subcategory of the category of surjections A —> OU of sheaves of f-1OB-algebras. Moreover, assume that these categories fit together to give a stack C over XZar with the usual notion of restriction of sheaves.

Since the purpose of this discussion is to study deformation theory, it make sense to assume the stalks of A are local rings, which means exactly that the localization of A as in the previous blog post doesn’t do anything. I will assume this from now on.

Example: Assume f locally of finite type. Given U let CU be the full subcategory of surjections i-1OT —> OU where i : U —> T is a closed immersion of U into a scheme T smooth over B. As maps we can take those maps that come from morphisms between smooth schemes over B. This does not form a stack over XZar but we can stackify.

Now suppose we have a third scheme S and a morphism of schemes g : S —> B. Then I claim there is a natural stack CS over (XS)Zar which can be called the base change of C. I will construct this by saying what the objects and morphisms look like locally on XS and you’ll have to stackify to get the real thing.

OK, suppose that V is an open of XS which maps into the open U of X. Denote p : V —> S and q : V —> U the projections and h : V —> B the structure morphism. Let A —> OU be an object of CU. Then the map

p-1OSh-1OB q-1A —-> OV

is a surjection (see previous post) and we can consider its localization A’ —> OV (as in previous post). This will be what our objects look like locally. Moreover, morphisms are maps which are locally the pullback of maps in C.

Here is how we can use this: The stack CS is naturally a ringed site with topology inherited from the Zariski topology on XS. Moreover, in the example above the rings A are all “smooth” over B thus the rings A’ in CS are all “smooth” over S. I think we can think of XS as a closed subspace of CS and use this to compute obstruction groups for deformations of modules, etc. I’ll come back to this later (and if not then it didn’t work).


Let (X, OX) be a ringed space and let A —> OX be a surjection of sheaves of algebras. Let S ⊂ A be the subsheaf of local sections which map to invertible functions of OX. Then S(U) is a multiplicative subset of A(U) for every open U of X and we can factor the map as

A —> S-1A —> OX

If X is a locally ringed space, then the stalks of S-1A are local rings too.

This construction is occasionally useful. For example, consider a fibre product of schemes W = X x_S Y with projections maps p : W —> X, q : W —> Y, and structure morphism h : W —-> S. Then the map

A = p-1OXh-1OS q-1OY —-> OW

is not an isomorphism in general, but a localization: with the notation above we have S-1A = OW.

Standard macros?

In this comment Yuhao Huang suggests we could start having some standard macros in algebraic geometry. I have two comments:

  1. It makes sense to reserve some commands such as \Spec and \colim
  2. It doesn’t make sense, I think, to fix the actual macros for these commands.

I think I can convince most of you to agree with 2. For example, I like to define

\def\Spec{\mathop{\rm Spec}}

but (and I am happy to get feedback) I am sure this is completely utterly totally wrong! And let’s not even talk about

\def\SheafHom{\mathop{\mathcal{H}\!{\it om}}\nolimits}

which I am sure you like to define with an underline or a squiggly underline. It is clear that we are never ever going to agree on the “correct” macro even for something as simple as \Spec. Right?

I think I can make some argument for 1, but I agree it isn’t so clear. Namely, wouldn’t it be nice if you could download another algebraic geometer’s latex code and run it locally on you machine with your own preamble? After all, my preamble is better than yours (as we’ve already discussed above).

Finally, many people define macros for things that take just one letter, typically with something like


I may have done this myself in the past. But now I think just typing \mathbb{C} is just as fast and it makes it clear what you get. The argument that it is faster to change the macro doesn’t really hold water as you can do a search and replace (or run a sed command) quite easily. Moreover, the letter C is going to occur as blackboard bold, gothic, greek, german, calligraphic, italic, roman, etc, etc so don’t try to tell me that it is better to use a short macro because who knows which of \CC, \bC, \cC, \iC is the one you want? No, the only reason for having a macro for blackboard bold C is if you wanted to have a macro for the complex numbers. Then you would probably name it \ComplexNumbers or something long like that so you never get confused.

I guess then the question becomes: Is \ComplexNumbers a good choice for one of the standard command names? I’m not convinced.

Another aspect of the situation is that, if we are inclined to introduce the command \ComplexNumbers, then also some things that never get macros should get macros. For example there should probably be a macro (untested)

\def\DerivedCategory#1{\mathop{\rm D}(#1)}

because part of the value of having macros may be that it makes it easier for our LaTeX files to be parsed by machines in the future. Madness!

I hope there is a lot here you can disagree with. My stance on most of this stuff is that it is much easier to fix this kind of thing (if it turns out we made a bad choice of coding a symbol or whatever), than it is to add new mathematics. So essentially, it doesn’t matter, but I am still interested to hear if you more or less agree with what I said above. Leave a comment!

PS: Here is a complete list of the currently defined macros in the Stacks project: \lim, \colim, \Spec, \Hom, \SheafHom, \Sch, \Mor, \Ob, \Sh. You can find these in preamble.tex.

PPS: Of course there is the whole other issue of choice of macro names. As you can see above I have been tempted by the Capitalization Curse. Why didn’t we name the macros \lim, \colim, \spec, \hom, \sheafhom, \sch, \mor, \ob, \sh? I guess an easy way out is to simply have both?

Human readable

This morning I was thinking about the layout of the search results. Cathy suggested the layout should be like what you get on google where you have a first line which is a link to the result (in our case something like “Lemma 7.69.1”) and then, in smaller font, some content which (hopefully) helps you see at a glance what “Lemma 7.69.1” is all about.

Now if you look at the LaTeX code for “Lemma 7.69.1” then you get:
Let $R$ be a ring. Let $M$ be an $R$-module.
\item The exists an exact complex
\ldots \to F_2 \to F_1 \to F_0 \to M \to 0.
with $F_i$ free $R$-modules.
\item If $R$ is Noetherian and $M$ finite $R$, then we
choose the complex such that each $F_i$ is finite free.
In other words, we may find an exact complex
\ldots \to R^{n_2} \to R^{n_1} \to R^{n_0} \to M \to 0.
and you can’t quickly see what the lemma is about (although in this case the LaTeX label does give you a hint, but that isn’t always the case).

But what is the lemma really saying? Well, if I wanted to tell a student or a colleague what it says I would say something like “Modules have free resolutions.” or “Finite modules over a Noetherian ring have a resolution by finite free modules.” (By the way, this already points to a potential problem with this lemma. We should really have had two lemmas, one dealing with the general case and one dealing with the finite over Noetherian case.)

Anyway, it is technologically easy to add this kind of human readable descriptions to the Stacks project. Namely, we could change the start of the LaTeX code above to
% Modules have free resolutions and finite modules over a
% Noetherian ring have a resolution by finite free modules.
Let $R$ be a ring. Let $M$ be an $R$-module.
Our scripts running the search on the website could pick up the LaTeX comment and print it out on the search results page. Moreover, this also allows us to add bibliographical information, historical information, etc. To do that we could code it like this:
% Human:
% Modules have free resolutions and finite modules over a
% Noetherian ring have a resolution by finite free modules.
% Ref:
% MatCA, page 73
% Hist:
% Goes back at least to Hilbert.
Let $R$ be a ring. Let $M$ be an $R$-module.
and so on and so forth. This works because there aren’t almost any comments in the stacks project LaTeX files (the symbol % occurs on only 232 lines).

Of course, the problem (as usual) is to find somebody who is willing to add human readable descriptions to each and every lemma, proposition, theorem, remark, situation, etc. Since there are 5889 lemmas, 161 propositions, 134 theorems, 471 remarks, 46 situations this is no mean task! (It will take about 100 hours to do this if you can do one of these per minute. Come on guys, that is only 10 days of hard work! And with a group of 10 people…)

We should have done this from the start! Hmm…

Questions about a construction

Let B —> A be a surjection of rings. Let M, X, Y be a A-modules.

If φ : X —> Y is a B-module map, then φ is an A-module map. We obtain X ⊗A M —> Y ⊗A M and X ⊗LA M —> Y ⊗LA M by functoriality.

Let ξ ∈ Ext^1_B(X, Y). I claim there is an element in Ext^2_A(X ⊗LA M, Y ⊗LA M) associated to ξ. Here is my construction. Choose a complex of free A-modules F_* resolving M. Choose a sequence (not a complex) of free B-modules F’_* such that F’_* ⊗B A is isomorphic to F_*. Let 0 —> Y —> E —> X —> 0 be the short exact sequence representing ξ. Then consider the composition

F’_{n + 2} ⊗B E —> F’_{n + 1} ⊗B E —> F’_n ⊗B E

Clearly this factors through a map

F_{n + 2} ⊗A X = F’_{n + 2} ⊗B X —> F’_n ⊗B Y = F_n ⊗A Y

The collection of these map gives X ⊗LA M —> Y ⊗LA M[2] as desired.

(a) Does this actually work?
(b) What is a “better” description of this construction?
(c) Is there a similar map Ext^2_B(X, Y) —> Ext^3_A(X ⊗LA M, Y ⊗LA M)?
(d) If you have a reference, could you please let us know?.


Compressing the Stacks project

Nick Katz was wondering whether maybe we should distribute USB memory sticks with copies of the stacks project on it. This is completely possible as we can compress the Stacks project to fairly small size files:

-rw-r--r-- 1 johan johan 2.9M Feb 6 21:00 stacks-project.tar.gz
-rw-r--r-- 1 johan johan 2.1M Feb 6 21:03 stacks-project.tar.bz2
-rw-r--r-- 1 johan johan 2.0M Feb 6 21:04 stacks-project.tar.xz
-rw-r--r-- 1 johan johan 1.5M Feb 6 21:32 stacks-project.zpaq

Of course these archives only contain the tex files (more precisely all the files listed when you do git ls-files in your local clone of the stacks-project repository). The smallest one compressed using the zpaq program is just 1546240 bytes. Can your favorite compressor do better?

If we can get it below 1.44 MB then we could hand out floppy disks with a copy of the Stacks project on it!