Zulip Chat Archive
Stream: Is there code for X?
Topic: Riemann-Roch
Chris Henson (Dec 18 2025 at 15:52):
Daniel Litt (a mathematician working in AG) asked on Twitter
Challenge to autoformalization companies: formalize the Riemann-Roch theorem (say for curves over an algebraically closed field) in Lean.
Not being too familiar with that area of Mathlib, I was curious how much additional work is needed to get to the statement of this.
Ruben Van de Velde (Dec 18 2025 at 15:54):
I would search for the numerous threads about that theorem/those theorems on this zulip
Johan Commelin (Dec 18 2025 at 15:57):
I would be quite sad if this happens. It would scoop the work of Raphael Douglas Giles, who is aiming to finish this project as part of his PhD work.
I'm not on Twitter, but if someone wants to pass this on, please do.
Chris Henson (Dec 18 2025 at 16:00):
This is part of why I asked. I did search beforehand, but it was not immediately clear to me what the most recent activity was.
Johan Commelin (Dec 18 2025 at 16:02):
cc @Daniel Litt
Kevin Buzzard (Dec 18 2025 at 16:37):
Daniel's response to the Atiyah-Singer index theorem claim isn't quite true I don't think -- even over the A-S index theorem would only give you a statement in differential geometry about compact Riemann surfaces; proving that this implies the corresponding statement in algebraic geometry would be quite a lot of work -- probably more work than just formalizing the alg geom theorem from scratch.
Andrew Yang (Dec 19 2025 at 00:56):
If you are happy with , then we are already able to write down a statement: https://gist.github.com/erdOne/a2f89628ddfbc7da57a1e2a087f2f40a
This is the excerpt of the final statement:
theorem RiemannRoch
{X : Scheme.{u}} {k : Type u} [Field k] (f : X ⟶ Spec (.of k)) -- let `X` be a `k`-scheme
[IsSmoothOfRelativeDimension 1 f] [IsIntegral X] -- that is integral and smooth of dim 1
(n : Type) [Finite n] (ι : X ⟶ Proj (MvPolynomial.homogeneousSubmodule n k))
[IsClosedImmersion ι] -- and `ι` is a closed embedding of `X` to `ℙₖⁿ`.
(hι : ι ≫ Proj.toSpecZero _ ≫ Spec.map (CommRingCat.ofHom <| algebraMap k _) = f)
{σ : Type*} (D : CartierDivisor X σ) :
Module.finrank k (D.sheafOfModules.H (R := .of k) f 0) -
Module.finrank k (D.sheafOfModules.H (R := .of k) f 1) = D.deg - X.genus f + 1 := sorry
This is just a combination of work by Joël Riou Raphael Douglas Giles and some leftover stuff in the last AIM workshop on algebraic geometry.
Kevin Buzzard (Dec 19 2025 at 08:13):
Wooah we have .genus? Is this defined as dimension of space of H^1(\O) or something? I thought we didn't have sheaf of differential 1-forms yet.
Kevin Buzzard (Dec 19 2025 at 08:14):
What is the role of sigma?
Andrew Yang (Dec 19 2025 at 11:26):
We can write down a sheaf that is isomorphic to the sheaf of relative differentials. This was done in AIM. And then we take the dimension of the global sections. But we could also have written thanks to Joel.
sigma is an indexing set of the ad-hoc definition of Cartier divisors.
Daniel Litt (Dec 19 2025 at 14:39):
Hi all, thanks for the heads-up on this! Certainly don't mean to step on anyone's toes.
Last updated: Dec 20 2025 at 21:32 UTC