Features wanted

Pieter Belmans is currently coding and testing a new version of the Stacks project website. What would be very useful is to have some more feedback from you, the user! Please leave a comment on this blog post if

  1. There is something that doesn’t work on the current site (broken links, etc).
  2. There is something you don’t like about the current set up.
  3. There is a feature you’d like to see in the new version.

Any suggestions, annoyances, recommendations, etc will be greatly appreciated. Thanks!

Geeks only: Of course, just like the Stacks project itself, the Stacks project website is an open source project and you can hack it yourself if you want and know how to. To get your work incorporated back into the site, you may want to talk to Pieter before doing too much work. Send us those cool layouts, visualizations, web-apps, etc, please!

Named destinations

Please move along if you are not a nerd: nothing to see here.

Still here? OK, so occasionally I try to see if embedded pdf viewers will open a pdf at a named destination. In the past the only setup that did this was using adobe reader. But yesterday I discovered that it now works with google chrome and its built in pdf reader! BUT… you have to use the format

http://stacks.math.columbia.edu/download/algebra.pdf#nameddest=0567

because the more compact version

http://stacks.math.columbia.edu/download/algebra.pdf#0567

doesn’t work. (You will need a reasonably up to date version of chrome.) Today I discovered that it also works with firefox on my ubuntu system. In fact both versions of the link work. It turns out that the Ubuntu firefox browser uses Mozilla’s built pdf viewer. If this is not already installed on your system you can install it as an add on — here is a link. However, on my 64 bit gentoo system, it still didn’t work until I installed the development version of pdf.js you can find here.

Unfortunately, the cross file links (e.g. a reference to a lemma in the algebra chapter from another chapter) do not (yet) work for chrome/libpdf.so and firefox/pdf.js. This used to work with the adobe reader (for example on windows) and works with the rekonq/okular combination on kde.

Test it on your system. I’d love some feedback.

  1. Open at named destination, short version: http://stacks.math.columbia.edu/download/brauer.pdf#074M
  2. Open at named destination, long version: http://stacks.math.columbia.edu/download/brauer.pdf#nameddest=074M
  3. Both of these should open the chapter on Brauer groups at Lemma Tag 074M, which today is Lemma 5.3 on page 5. To try the cross file link functionality, in the proof of that lemma, click on the link to Algebra, Lemma 33.17.

Does this work for you? Leave a comment. Thanks!

Signs and tensor products

If M and N are modules over a ring A there is a canonical map M ⊗ N —> N ⊗ M by flipping tensors. If M = N this map is an involution but not the identity. For example, if V is a vector space of dimension n then flipping tensors gives an involution of V ⊗ V whose eigenvalues are 1 and -1 with multiplicity n(n + 1)/2 and n(n – 1)/2.

Now, let’s consider derived tensor product. There is a canonical map M ⊗L N —> M ⊗L N which gives an involution of M ⊗L M when M = N. For example, if M = A/I, then we get an involution Tor1A(M, M) = I/I2. In this case, it seems clear that this map is either 1 or -1. My guess would be it is -1… Let’s see if I am right.

To figure out what the sign is, suppose we have a double complex M*, * which is symmetric, i.e., Mp, q = Mq, p switching the two differentials. (My convention: the two differentials of a double complex commute.) OK, so now we want this flipping map M*, * —> M*, * to induce a map of associated total complexes

Tot(M*, *) ——> Tot(M*, *)

but in the construction of Tot there are signs. Namely, emanating from the (p,q) spot is the differential d1 + (-1)pd2 (again a convention). Thus when we move an element from Mp, q to Mq, p without signs, this isn’t compatible with the differential d on Tot. What works is to throw in a sign (-1)pq for the map Mp, q —> Mq, p.

In order to use this for our example of Tor1A(A/I, A/I) assume for the moment that I is flat. Then the double complex

I ⊗ A —> A ⊗ A
    |                 |
I ⊗ I —> A ⊗ I

computes the tor group. Note that in degrees (-1, 0) and (0, -1) we have I and that a cocycle is of the form f ⊕ -f with f ∈ I. Thus flipping this gives -f ⊕ f, i.e., the opposite. So it seems my hunch was correct.

Ok, but now what if K = M[1] in D(A) for some flat A-module M and we consider the action of flipping on H^{-2}(K ⊗L K) = M ⊗ M. It is clear from the above that the action of flipping is by -1 times the usual flipping map of M ⊗ M. Thus the S_2-coinvariants on this gives the second exterior square of M over A.

And now I’ve finally gotten to the point I wanted to make in this blog post. Let’s use the above to define derived symmetric powers of K in D(A). Choose a K-flat complex K* representing K and use the above to get an action of S_n on the total complex associated to the n-fold tensor product of K*. (Carefully take the total complex and use group generated by flipping adjacent indices and the sign I used above for those.) Call this complex of A[S_n]-modules K⊗ n. Then set

LSymn(K) = K⊗ nLA[Sn] A

In this situation the above shows that H-n(LSymn(M[1])) = ∧n(M).

[Edit: Bhargav points out that this isn’t the derived symmetric power you get in the symplicial world. For example, if K = A[0], then we get S_n group homology. Whereas if you think if A as a constant simplicial module, then Sym_n(A) = A.]

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)

where

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).

Localize

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

\newcommand{\CC}{\mathbb{C}}

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:
\begin{lemma}
\label{lemma-resolution-by-finite-free}
Let $R$ be a ring. Let $M$ be an $R$-module.
\begin{enumerate}
\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.
$$
\end{enumerate}
\end{lemma}
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
\begin{lemma}
\label{lemma-resolution-by-finite-free}
% 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:
\begin{lemma}
\label{lemma-resolution-by-finite-free}
% 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…