Skip to content

Commit 548323d

Browse files
chrisflavgoliath-klein
authored andcommitted
feat(AlgebraicGeometry): flat monomorphisms of finite presentation are open immersions (leanprover-community#32958)
We deduce this from fpqc descent for isomorphisms.
1 parent a4aff8d commit 548323d

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,7 @@ public import Mathlib.AlgebraicGeometry.Morphisms.FinitePresentation
12931293
public import Mathlib.AlgebraicGeometry.Morphisms.FiniteType
12941294
public import Mathlib.AlgebraicGeometry.Morphisms.Flat
12951295
public import Mathlib.AlgebraicGeometry.Morphisms.FlatDescent
1296+
public import Mathlib.AlgebraicGeometry.Morphisms.FlatMono
12961297
public import Mathlib.AlgebraicGeometry.Morphisms.FormallyUnramified
12971298
public import Mathlib.AlgebraicGeometry.Morphisms.Immersion
12981299
public import Mathlib.AlgebraicGeometry.Morphisms.Integral
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/-
2+
Copyright (c) 2025 Christian Merten. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Christian Merten
5+
-/
6+
module
7+
8+
public import Mathlib.AlgebraicGeometry.Morphisms.FlatDescent
9+
10+
/-!
11+
# Flat monomorphisms of finite presentation are open immersions
12+
13+
We show the titular result `AlgebraicGeometry.IsOpenImmersion.of_flat_of_mono` by fpqc descent.
14+
-/
15+
16+
@[expose] public section
17+
18+
universe u
19+
20+
open CategoryTheory Limits MorphismProperty
21+
22+
namespace AlgebraicGeometry
23+
24+
@[stacks 06NC]
25+
lemma Flat.isIso_of_surjective_of_mono {X Y : Scheme.{u}} (f : X ⟶ Y) [Flat f]
26+
[QuasiCompact f] [Surjective f] [Mono f] : IsIso f := by
27+
apply MorphismProperty.of_pullback_fst_of_descendsAlong
28+
(P := isomorphisms Scheme.{u}) (Q := @Surjective ⊓ @Flat ⊓ @QuasiCompact) (f := f) (g := f)
29+
· tauto
30+
· exact inferInstanceAs <| IsIso (pullback.fst f f)
31+
32+
/--
33+
Flat monomorphisms that are locally of finite presentation are open immersions. In particular,
34+
every smooth monomorphism is an open immersion.
35+
The converse holds by `inferInstance`.
36+
-/
37+
theorem IsOpenImmersion.of_flat_of_mono {X Y : Scheme.{u}} (f : X ⟶ Y) [Flat f]
38+
[LocallyOfFinitePresentation f] [Mono f] : IsOpenImmersion f := by
39+
wlog hf : Surjective f
40+
· let U : Y.Opens := ⟨Set.range f.base, f.isOpenMap.isOpen_range⟩
41+
-- needed to prevent `wlog` to go in a typeclass loop
42+
have hU : IsOpenImmersion U.ι := U.instIsOpenImmersionι
43+
let f' := hU.lift U.ι f (by simp [U])
44+
have heq : f = f' ≫ U.ι := by simp [f']
45+
have hflat : Flat f' :=
46+
of_postcomp (W := @Flat) f' U.ι hU (by rwa [← heq])
47+
have hfinpres : LocallyOfFinitePresentation f' :=
48+
of_postcomp (W := @LocallyOfFinitePresentation) f' U.ι hU (by rwa [← heq])
49+
have hmono : Mono f' := mono_of_mono_fac heq.symm
50+
rw [heq]
51+
have := this f' ⟨fun ⟨x, ⟨y, hy⟩⟩ ↦
52+
⟨y, by apply U.ι.injective; simp [← Scheme.Hom.comp_apply, f', hy]⟩⟩
53+
infer_instance
54+
have hhomeo : IsHomeomorph f.base := ⟨f.continuous, f.isOpenMap, f.injective, f.surjective⟩
55+
have : QuasiCompact f := ⟨fun U hU hc ↦ hhomeo.homeomorph.isCompact_preimage.mpr hc⟩
56+
have := Flat.isIso_of_surjective_of_mono f
57+
exact .of_isIso f
58+
59+
end AlgebraicGeometry

0 commit comments

Comments
 (0)