Zulip Chat Archive
Stream: Is there code for X?
Topic: Residue field of locally ringed space and evaluation
Christian Merten (Jun 08 2024 at 17:07):
I am surprised, I can't find the following:
import Mathlib
open CategoryTheory Opposite
namespace AlgebraicGeometry
namespace LocallyRingedSpace
noncomputable def residueField (X : LocallyRingedSpace) (x : X) : CommRingCat :=
CommRingCat.of <| LocalRing.ResidueField (X.stalk x)
noncomputable def evaluation (X : LocallyRingedSpace) (x : X) :
LocallyRingedSpace.Γ.obj (op X) ⟶ X.residueField x :=
X.ΓToStalk x ≫ LocalRing.residue _
noncomputable def evaluationMap {X Y : LocallyRingedSpace} (f : X ⟶ Y) (x : X) :
Y.residueField (f.val.base x) ⟶ X.residueField x :=
LocalRing.ResidueField.map (LocallyRingedSpace.stalkMap f x)
Is it somewhere?
Andrew Yang (Jun 08 2024 at 18:00):
I'm fairly certain that we don't have it. What do you plan to use it for? (Just curious)
Christian Merten (Jun 08 2024 at 18:04):
I am proving that closed immersions with affine target have affine source and are induced by quotient maps for which this language is very convenient.
Also I think we should have a RingedSpace.zeroLocus
of a set of global sections. Then for a locally ringed space, we get the characterisation that a point is in the zero locus of a set of global sections if and only if all elements of "vanish" (i.e. evaluate to zero) in .
Christian Merten (Jun 08 2024 at 18:07):
I guess, the above evaluation
should be called LocallyRingedSpace.Γevaluation
which is a special case of evaluating sections over an U : Opens X
?
Andrew Yang (Jun 08 2024 at 18:09):
Ooh sounds nice.
Do you have
example {X Y : Scheme} (f : X ⟶ Y) [IsAffine Y]
(hf : ClosedEmbedding f.1.base) : IsAffine X := sorry
yet?
Andrew Yang (Jun 08 2024 at 18:11):
Christian Merten said:
Also I think we should have a
RingedSpace.zeroLocus
of a set of global sections.
That sounds useful. We have docs#AlgebraicGeometry.RingedSpace.mem_basicOpen which might help?
Christian Merten (Jun 08 2024 at 18:18):
Andrew Yang said:
Ooh sounds nice.
Do you haveexample {X Y : Scheme} (f : X ⟶ Y) [IsAffine Y] (hf : ClosedEmbedding f.1.base) : IsAffine X := sorry
yet?
No, I reduced to showing that if is a homeomorphism with affine and the induced map on global sections is injective, then the map on stalks is injective.
(If is now a closed immersion, the map on stalks is an iso and we are done).
Christian Merten (Jun 08 2024 at 18:19):
Andrew Yang said:
Ooh sounds nice.
Do you haveexample {X Y : Scheme} (f : X ⟶ Y) [IsAffine Y] (hf : ClosedEmbedding f.1.base) : IsAffine X := sorry
yet?
Does this really hold without the surjectivity on stalks assumption?
Christian Merten (Jun 08 2024 at 18:21):
Andrew Yang said:
Christian Merten said:
Also I think we should have a
RingedSpace.zeroLocus
of a set of global sections.That sounds useful. We have docs#AlgebraicGeometry.RingedSpace.mem_basicOpen which might help?
Yes, I am using that. My definition is:
def AlgebraicGeometry.RingedSpace.zeroLocus {X : RingedSpace}
(s : Set (X.presheaf.obj (op ⊤))) : Set X :=
sInf { (X.basicOpen f : Set X)ᶜ | (f ∈ s) }
(I don't know if we should introduce a RingedSpace.basicClosed
? I don't need it, but might be useful?)
Andrew Yang (Jun 08 2024 at 19:05):
You don't even need injectivity. Only inducing + quasi-compact.
(For X
affine. To show that it comes from a quotient ring hom still needs injectivity and stalk conditions)
-
For any , is the preimage of some open (by inducing),
And is the union of basic opens in . That is, is the union of the form for a family . -
Now, if is affine, then the from earlier is also affine, because it is also a basic open of . (docs#AlgebraicGeometry.IsAffine.basicOpen_isAffine)
- Since can be covered by affine opens, it can be covered by (finite) affine opens of the form .
- In particular is qcqs and by the qcqs lemma (docs#AlgebraicGeometry.is_localization_basicOpen_of_qcqs) is (zariski-locally) isomorphic to .
Andrew Yang (Jun 08 2024 at 19:13):
We use Inter
instead of Inf
for sets. That is
def AlgebraicGeometry.RingedSpace.zeroLocus {X : RingedSpace}
(s : Set (X.presheaf.obj (op ⊤))) : Set X :=
⋃ f ∈ s, (X.basicOpen f)ᶜ
Kevin Buzzard (Jun 08 2024 at 22:51):
@FMLJohn were you working on this recently?
Fangming Li (John) (Jun 15 2024 at 15:24):
Kevin Buzzard said:
FMLJohn were you working on this recently?
Yeah I think so. Things discussed here have some connections with what I am doing recently.
Fangming Li (John) (Jun 15 2024 at 15:28):
Christian Merten said:
I am surprised, I can't find the following:
import Mathlib open CategoryTheory Opposite namespace AlgebraicGeometry namespace LocallyRingedSpace noncomputable def residueField (X : LocallyRingedSpace) (x : X) : CommRingCat := CommRingCat.of <| LocalRing.ResidueField (X.stalk x) noncomputable def evaluation (X : LocallyRingedSpace) (x : X) : LocallyRingedSpace.Γ.obj (op X) ⟶ X.residueField x := X.ΓToStalk x ≫ LocalRing.residue _ noncomputable def evaluationMap {X Y : LocallyRingedSpace} (f : X ⟶ Y) (x : X) : Y.residueField (f.val.base x) ⟶ X.residueField x := LocalRing.ResidueField.map (LocallyRingedSpace.stalkMap f x)
Is it somewhere?
I have constructed something which I think is broader than the evaluation
you have mentioned. For a scheme X
and a point x : X.toTopCat
, I have formalised the canonical scheme morphism from the spectrum of the residue field of x
to X
. The contents are available in this pull request:
Feat(AlgebraicGeometry/Curve): defining a curve. by FMLJohn · Pull Request #13857 · leanprover-community/mathlib4 (github.com)
Last updated: May 02 2025 at 03:31 UTC