|
| 1 | +/- |
| 2 | +Copyright (c) 2022 Andrew Yang. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Andrew Yang |
| 5 | +-/ |
| 6 | +import algebraic_geometry.morphisms.ring_hom_properties |
| 7 | +import algebraic_geometry.morphisms.quasi_compact |
| 8 | +import ring_theory.ring_hom.finite_type |
| 9 | + |
| 10 | +/-! |
| 11 | +# Morphisms of finite type |
| 12 | +
|
| 13 | +A morphism of schemes `f : X ⟶ Y` is locally of finite type if for each affine `U ⊆ Y` and |
| 14 | +`V ⊆ f ⁻¹' U`, The induced map `Γ(Y, U) ⟶ Γ(X, V)` is of finite type. |
| 15 | +
|
| 16 | +A morphism of schemes is of finite type if it is both locally of finite type and quasi-compact. |
| 17 | +
|
| 18 | +We show that these properties are local, and are stable under compositions. |
| 19 | +
|
| 20 | +-/ |
| 21 | + |
| 22 | +noncomputable theory |
| 23 | + |
| 24 | +open category_theory category_theory.limits opposite topological_space |
| 25 | + |
| 26 | +universes v u |
| 27 | + |
| 28 | +namespace algebraic_geometry |
| 29 | + |
| 30 | +variables {X Y : Scheme.{u}} (f : X ⟶ Y) |
| 31 | + |
| 32 | +/-- |
| 33 | +A morphism of schemes `f : X ⟶ Y` is locally of finite type if for each affine `U ⊆ Y` and |
| 34 | +`V ⊆ f ⁻¹' U`, The induced map `Γ(Y, U) ⟶ Γ(X, V)` is of finite type. |
| 35 | +-/ |
| 36 | +@[mk_iff] |
| 37 | +class locally_of_finite_type (f : X ⟶ Y) : Prop := |
| 38 | +(finite_type_of_affine_subset : |
| 39 | + ∀ (U : Y.affine_opens) (V : X.affine_opens) (e : V.1 ≤ (opens.map f.1.base).obj U.1), |
| 40 | + (f.app_le e).finite_type) |
| 41 | + |
| 42 | +lemma locally_of_finite_type_eq : |
| 43 | + @locally_of_finite_type = affine_locally @ring_hom.finite_type := |
| 44 | +begin |
| 45 | + ext X Y f, |
| 46 | + rw [locally_of_finite_type_iff, affine_locally_iff_affine_opens_le], |
| 47 | + exact ring_hom.finite_type_respects_iso |
| 48 | +end |
| 49 | + |
| 50 | +@[priority 900] |
| 51 | +instance locally_of_finite_type_of_is_open_immersion {X Y : Scheme} (f : X ⟶ Y) |
| 52 | + [is_open_immersion f] : locally_of_finite_type f := |
| 53 | +locally_of_finite_type_eq.symm ▸ ring_hom.finite_type_is_local.affine_locally_of_is_open_immersion f |
| 54 | + |
| 55 | +lemma locally_of_finite_type_stable_under_composition : |
| 56 | + morphism_property.stable_under_composition @locally_of_finite_type := |
| 57 | +locally_of_finite_type_eq.symm ▸ |
| 58 | +ring_hom.finite_type_is_local.affine_locally_stable_under_composition |
| 59 | + |
| 60 | +instance locally_of_finite_type_comp {X Y Z : Scheme} (f : X ⟶ Y) (g : Y ⟶ Z) |
| 61 | + [hf : locally_of_finite_type f] [hg : locally_of_finite_type g] : |
| 62 | + locally_of_finite_type (f ≫ g) := |
| 63 | +locally_of_finite_type_stable_under_composition f g hf hg |
| 64 | + |
| 65 | +lemma locally_of_finite_type_of_comp {X Y Z : Scheme} (f : X ⟶ Y) (g : Y ⟶ Z) |
| 66 | + [hf : locally_of_finite_type (f ≫ g)] : |
| 67 | + locally_of_finite_type f := |
| 68 | +begin |
| 69 | + unfreezingI { revert hf }, |
| 70 | + rw [locally_of_finite_type_eq], |
| 71 | + apply ring_hom.finite_type_is_local.affine_locally_of_comp, |
| 72 | + introv H, |
| 73 | + exactI ring_hom.finite_type.of_comp_finite_type H, |
| 74 | +end |
| 75 | + |
| 76 | +lemma locally_of_finite_type.affine_open_cover_iff {X Y : Scheme.{u}} (f : X ⟶ Y) |
| 77 | + (𝒰 : Scheme.open_cover.{u} Y) [∀ i, is_affine (𝒰.obj i)] |
| 78 | + (𝒰' : ∀ i, Scheme.open_cover.{u} ((𝒰.pullback_cover f).obj i)) |
| 79 | + [∀ i j, is_affine ((𝒰' i).obj j)] : |
| 80 | + locally_of_finite_type f ↔ |
| 81 | + (∀ i j, (Scheme.Γ.map ((𝒰' i).map j ≫ pullback.snd).op).finite_type) := |
| 82 | +locally_of_finite_type_eq.symm ▸ ring_hom.finite_type_is_local.affine_open_cover_iff f 𝒰 𝒰' |
| 83 | + |
| 84 | +lemma locally_of_finite_type.source_open_cover_iff {X Y : Scheme.{u}} (f : X ⟶ Y) |
| 85 | + (𝒰 : Scheme.open_cover.{u} X) : |
| 86 | + locally_of_finite_type f ↔ (∀ i, locally_of_finite_type (𝒰.map i ≫ f)) := |
| 87 | +locally_of_finite_type_eq.symm ▸ ring_hom.finite_type_is_local.source_open_cover_iff f 𝒰 |
| 88 | + |
| 89 | +lemma locally_of_finite_type.open_cover_iff {X Y : Scheme.{u}} (f : X ⟶ Y) |
| 90 | + (𝒰 : Scheme.open_cover.{u} Y) : |
| 91 | + locally_of_finite_type f ↔ |
| 92 | + (∀ i, locally_of_finite_type (pullback.snd : pullback f (𝒰.map i) ⟶ _)) := |
| 93 | +locally_of_finite_type_eq.symm ▸ |
| 94 | + ring_hom.finite_type_is_local.is_local_affine_locally.open_cover_iff f 𝒰 |
| 95 | + |
| 96 | +lemma locally_of_finite_type_respects_iso : |
| 97 | + morphism_property.respects_iso @locally_of_finite_type := |
| 98 | +locally_of_finite_type_eq.symm ▸ target_affine_locally_respects_iso |
| 99 | + (source_affine_locally_respects_iso ring_hom.finite_type_respects_iso) |
| 100 | + |
| 101 | +end algebraic_geometry |
0 commit comments