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