Updated once more

Thanks for all the comments. I looked at each and every one of them that got posted since the last update and I fixed all typos, etc, that were pointed out. I cannot follow up on all suggestions made in the comments for reasons of time.

There haven’t been a lot of actual errors pointed out recently — I don’t think this means there aren’t any, so please keep looking for those. Thanks!

Sections vs retractions

This is just a warning for readers of the Stacks project: please be careful as I think I don’t know left from right. As a consequence, the text of the Stacks project sometimes uses the phrase “section” when it should be using “retraction”. Similarly, watch out for confusion between “left inverse” and “right inverse”.

If you find occurrences of this, just leave a comment to point it out and we’ll fix it.

Thanks!

Updated again

After a little snafu with python packages over the last few days, the Stacks project is now updated with your latest comments incorporated. Many thanks to Alex Scheffeling, Zhiyu Zhang, and David Holmes for their help in responding to comments.

Please keep leaving comments. Please be as precise as you can. From top to bottom the most valuable comments are

  1. Pointing out mathematical errors in proofs.
  2. Pointing out specific steps in a proof you do not understand.
  3. Pointing out typos which make it harder to understand the mathematics, e.g., if symbols are mixed up or if the arrows point in the wrong direction.
  4. Pointing out that a reference is to the wrong tag.
  5. Precise suggestions as to how to clarify a proof.
  6. Alternative proofs, written out in detail and checked to not use forward references.
  7. Spelling errors.
  8. Punctuation.
  9. Whitespace errors:)

The reason that alternative proofs are so low on this list is that of course almost every mathematical result can be proven in a 100 different ways.

Thanks very much for helping out!

Help wanted

So I am going through the comments left on the Stacks project and many of the comments could have been answered more quickly. I do scan new comments quickly to see if they are pointing out a serious error with the material, because if so I want to be on top of it! But generally speaking I only go through the comments in detail only once every so often.

Anyway, I was wondering if anybody is interested in helping out with answering comments? Let me describe a bit more what I have in mind. Your task would be to monitor activity and take a first stab at responding to comments. Often comments point out trivial typos, sometimes a comment identifies a small error in a proof, or occasionally a comment suggests improvements to a proof and/or statement of a lemma. In these cases you could just quickly make local edits in the relevant latex file and communicate that to me. Or, if you know how to use git I can give you access to the repository to push the corresponding changes directly. Finally, if a more serious error is pointed out we can figure out how to fix it together.

You don’t need to understand all the material in the Stacks project as you can often figure out what went wrong by looking locally at the material. Or you can just answer only comments on certain topics; we don’t need all the comments to be answered quickly. Finally, we can have multiple people dealing with comments as well.

Anyway, let me know by email if you are interested!

Update May 19: Thanks to some people offering to help I am no longer actively looking. You can of course always informally help out by answering questions that people leave in the comments or by pointing out mistakes and/or improvements to the exposition!

Supports of flat modules, part B

Part A is this post. Let me prove the opposite of what the exercise in part A wrongly claimed (sigh).

Lemma: Let Z —> Y be a finite morphism of affine schemes. Then there exists a closed immersion Z —> Z’ of schemes over Y such that Z’ is finite syntomic over Y.

Remark: If we embed Z’ into a smooth scheme X over Y, then F = O_{Z’} is a coherent O_X-module flat over Y such that the generic points of Z are associated points of the restriction of F to their fibres.

Proof: Write Y = Spec(A) and Z = Spec(B). Choose generators b_1, …, b_r of B as an algebra over A. As B is finite over A, each b_i is the root of a monic polynomial P_i with coefficients in A. Then B’ = A[x_1, …, x_r]/(P_1(x_1), …, P_r(x_r)) is finite syntomic over A and Z’ = Spec(B’) works. EndProof.

The point I want to make in this post is that we have some equidimensionality result for associated points of flat modules, namely EGA IV, Proposition 12.1.1.5 (see Tag 0GSF). It implies the following: suppose that f : X —> Y is smooth with Y Noetherian and irreducible. Suppose that F is coherent on X and flat over Y. Let x be a point of the generic fibre of f which is an associated point of F. Then the zariski closure Z ⊂ X of the singleton {x} has the property that Z —> Y is equidimensional!

So for example, there is no finite module M over k[x, y, z] which is flat over k[x, y] such that (x – yt) is an associated prime of M. Presumably, you can see this directly? Is it easy? I didn’t try.

Enjoy!

Supports of flat modules

Let Z —> Y be the normalization of an affine cuspidal curve over an algebraically closed field k. Let i : Z —> X be a closed immersion over Y with X smooth over Y.

Question: Does there exist a coherent module F on X, flat over Y, whose support is equal to Z set theoretically?

Answer: No in characteristic 0 and yes in characteristic p > 0.

To see that the answer is no in characteristic 0 you show that the map O_Y —> O_Z has an O_Y-linear section if you have F (and of course this isn’t possible for the normalization of the cuspidal curve). Namely, consider the map tau : O_Z —> O_Y which sends an element f of O_Z to the trace over O_Y of multiplication by f’ on F where f’ is any lift of f to O_X. You show that the choice of f’ doesn’t matter by checking at the generic point; the key fact is that the support condition tells us that f’ which vanish on Z give nilpotent operators on F. Finally, this gets us a section as tau(g) = rg for g in O_Y. Here r = rank_Y(F) > 0 which is invertible as we have char 0.

Remark: I think there doesn’t even exist a coherent F on X, flat over Y, such that the generic point of Z is an associated point of F. Exercise! [Edit on 2/12/22: Jason did the exercise and, uh, it isn’t true!]

To see that the answer is yes in characteristic p > 2, say Y is the spectrum of A = k[a, b]/(a^3 – b^2). Let X be the spectrum of A[t] and consider the closed subscheme, finite flat over Y, cut out by t^p – a^{(p – 3)/2}b. The reduction of this subscheme is isomorphic to Z. For p = 2 use t^2 – a. Cheers!

Wittgenstein

OK, I recently read Philosophical Investigations and I enjoyed it very much! Language games! Anyway, I wanted to quote a passage about mathematics

But am I trying to say some such thing as that the certainty of mathematics is based on the reliability of ink and paper? No. (That would be a vicious circle.)–I have not said why mathematicians do not quarrel, but only that they do not.

It is no doubt true that you could not calculate with certain sorts of paper and ink, if, that is, they were subject to certain queer changes—but still the fact that they changed could in turn only be got from memory and comparison with other means of calculation. And how are these tested in their turn?

What has to be accepted, the given, is—so one could say—forms of life.

Makes you think, right?

Silly question

So, recently I was looking at Lemma 03L7 because of a question asked a comment on Definition 022B. The condition that a single flat morphism f : X —> Y determines an fpqc covering {f : X —> Y} is the following topological condition on f: given any affine open V of Y there should exist a quasi-compact open U of X with f(U) = V.

My question is this: is it sufficient to ask for a quasi-compact open U with V ⊂ f(U)?

The lemma says “yes” if Y is quasi-separated (so in practice always).

Does anybody have a counterexample to the general case? Or is it sufficient?

I remember successfully avoiding thinking about this when I first wrote the material on fpqc coverings. But I guess no harm is done thinking about it a little bit during these hot summer days…

Dual differential operator

Let X —> S be a morphism of schemes. Let E and F be quasi-coherent O_X modules. Let D : E —> F be a finite order differential operator on X/S. This means that there exists an integer n and an O_X-linear map

D’ : p_{n, 2, *}(p_{n, 1}^*E) —> F

such that D is given by the composition of D’ with the nonlinear map E —> p_{n, 2, *}(p_{n, 1}^*E). Here p_{n, i} : Delta_n —> X are the two projections of the nth infinitesimal neighbourhood of the diagonal X —> X x_S X. (Unfortunately, this description of finite order differential operators is currently missing from the Stacks project.)

OK, let omega_{X/S} be a quasi-coherent O_X-module (we’ll see later the properties we require of this module). Set E* = SheafHom(E, omega_{X/S}) and similarly for F. When does there exist a dual differential operator

D* : F* —> E* ?

The purpose of this blog post is to analyze what we need about S, X, omega_{X/S}, F, and E in order to get D*.

Suppose we have F = (F*)*. Then we can think of D’ as a map

D’ : p_{n, 2, *}(p_{n, 1}^*E) —> (F*)*

which is the same thing as a map

p_{n, 2, *}(p_{n, 1}^*E ⊗ p_{n, 2}^*(F*)) —> omega_{X/S}

which is the same thing as a map

p_{n, 1}^*E ⊗ p_{n, 2}^*(F*) —> p_{n, 2}^!omega_{X/S}

by duality. If we have an isomorphism p_{n, 2}^!omega_{X/S} = p_{n, 1}^!omega_{X/S} then applying the automorphism of X x_S X which switches the factors and going backwards we see that this is the same thing as a differential operator D* of the form desired.

What did we use in the above? We need

  1. F = (F*)*,
  2. p_{n, i} : Delta_n —> X are finite morphisms,
  3. p_{n, 2}^!omega_{X/S} = p_{n, 1}^!omega_{X/S} where p_{n, 2}^! is the functor used in duality for a finite morphism.

The first condition holds for example if F is finite locally free and O_X = SheafHom(omega_{X/S}, omega_{X/S}). The second condition holds if X —> S is of finite type. The third condition really does pin down omega_{X/S} a lot more.

If S is Noetherian, F and E are finite locally free, and X —> S is a separated, flat morphism of finite type whose fibres are Cohen-Macaulay and equidimensional of a given dimension d, then we can take omega_{X/S} the usual relative dualizing sheaf and we have enough theory in the Stacks project to get the third condition above.

But there is another way to think about the condition p_{n, 2}^!omega_{X/S} = p_{n, 1}^!omega_{X/S}. Namely, considering finite order differential operators D : O_X —> omega_{X/S} and arguing as above one sees that giving a (symmetric) isomorphism p_{n, 2}^!omega_{X/S} = p_{n, 1}^!omega_{X/S} is the same thing as a rule D ↦ D* which defines an involution on the sheaf of finite order differential operators D : O_X —> omega_{X/S} such that

  1. (f D)* = D* \circ f
  2. (D \circ f)* = f D*

where f denotes a local section of O_X.

When X —> S is smooth of relative dimension d and we take omega_{X/S} = Omega^d_{X/S}, we can explicitly construct the rule D ↦ D*. For example if we have local coordinates x_1, …, x_d on X/S and we use the trivialization of Omega^d_{X/S} given by d(x_1) ∧ … ∧ d(x_d) then we take the algebra involution on differential operators sending a function to itself and sending ∂/∂x_i to – ∂/∂x_i. Of course in this case we can also explicitly describe the rule going from D : E —> F to D* : F* —> E* we obtain from this.

The second case works without appealing to any theory of duality.

Worked through your comments

Thanks to everybody who contributed! We’re getting close to 500 people who have contributed comments or mathematics! Amazing!

The comments aren’t part of the Stacks project, so the discussion in the comments can be a bit more relaxed and loose than in the actual text; double checking your comment makes sense and can be parsed by others before you post is always a good idea.

I would appreciate people helping out, even and maybe especially, in small ways. Let me stress this: start with small things and see if you can get the maintainer (that’s me) to accept your contribution. For example, if you find a typo, then you can edit the latex file yourselves and send it in. The instructions are here. Just do one or a few typos at a time. You can add an omitted proof as a slightly larger project. Things that make it easier for me to accept contributions: (a) your edits use roughly the same coding style which you can easily deduce by looking around in the latex files, (b) the amount of detail given in a proof is roughly similar to what happens in nearby lemmas, and (c) you make a pull request on github (examples of pull requests).

Of course, if you find a mathematical error, I’d like to know immediately and in that case I encourage you to leave a comment on the website (so everybody can see what’s going on). It is very helpful if you precisely indicate where the error lies and thoughts you might have had on how to fix or work around the problem.

Thanks!