@@ -826,6 +826,63 @@ def Scheme.openCoverOfSuprEqTop {s : Type*} (X : Scheme) (U : s → Opens X)
826
826
exact (Opens.mem_iSup.mp this).choose_spec
827
827
#align algebraic_geometry.Scheme.open_cover_of_supr_eq_top AlgebraicGeometry.Scheme.openCoverOfSuprEqTop
828
828
829
+ namespace Scheme
830
+
831
+ /--
832
+ An affine open cover of `X` consists of a family of open immersions into `X` from
833
+ spectra of rings.
834
+ -/
835
+ structure AffineOpenCover (X : Scheme.{u}) where
836
+ /-- index set of an affine open cover of a scheme `X` -/
837
+ J : Type v
838
+ /-- the ring associated to a component of an affine open cover -/
839
+ obj : J → CommRingCat.{u}
840
+ /-- the embedding of subschemes to `X` -/
841
+ map : ∀ j : J, Spec.obj (.op <| obj j) ⟶ X
842
+ /-- given a point of `x : X`, `f x` is the index of the subscheme which contains `x` -/
843
+ f : X.carrier → J
844
+ /-- the subschemes covers `X` -/
845
+ Covers : ∀ x, x ∈ Set.range (map (f x)).1 .base
846
+ /-- the embedding of subschemes are open immersions -/
847
+ IsOpen : ∀ x, IsOpenImmersion (map x) := by infer_instance
848
+
849
+ namespace AffineOpenCover
850
+
851
+ attribute [instance] AffineOpenCover.IsOpen
852
+
853
+ /-- The open cover associated to an affine open cover. -/
854
+ @[simps]
855
+ def openCover {X : Scheme.{u}} (𝓤 : X.AffineOpenCover) : X.OpenCover where
856
+ J := 𝓤.J
857
+ map := 𝓤.map
858
+ f := 𝓤.f
859
+ Covers := 𝓤.Covers
860
+
861
+ end AffineOpenCover
862
+
863
+ /-- A choice of an affine open cover of a scheme. -/
864
+ def affineOpenCover (X : Scheme.{u}) : X.AffineOpenCover where
865
+ J := X.affineCover.J
866
+ map := X.affineCover.map
867
+ f := X.affineCover.f
868
+ Covers := X.affineCover.Covers
869
+
870
+ @[simp]
871
+ lemma openCover_affineOpenCover (X : Scheme.{u}) : X.affineOpenCover.openCover = X.affineCover :=
872
+ rfl
873
+
874
+ /-- Given any open cover `𝓤`, this is an affine open cover which refines it.
875
+ The morphism in the category of open covers which proves that this is indeed a refinement, see
876
+ `AlgebraicGeometry.Scheme.OpenCover.fromAffineRefinement`.
877
+ -/
878
+ def OpenCover.affineRefinement {X : Scheme.{u}} (𝓤 : X.OpenCover) : X.AffineOpenCover where
879
+ J := (𝓤.bind fun j => (𝓤.obj j).affineCover).J
880
+ map := (𝓤.bind fun j => (𝓤.obj j).affineCover).map
881
+ f := (𝓤.bind fun j => (𝓤.obj j).affineCover).f
882
+ Covers := (𝓤.bind fun j => (𝓤.obj j).affineCover).Covers
883
+
884
+ end Scheme
885
+
829
886
section category
830
887
831
888
/--
@@ -880,4 +937,10 @@ lemma Scheme.OpenCover.comp_app {X : Scheme.{u}} {𝓤 𝓥 𝓦 : X.OpenCover}
880
937
881
938
end category
882
939
940
+ /-- Given any open cover `𝓤`, this is an affine open cover which refines it. -/
941
+ def Scheme.OpenCover.fromAffineRefinement {X : Scheme.{u}} (𝓤 : X.OpenCover) :
942
+ 𝓤.affineRefinement.openCover ⟶ 𝓤 where
943
+ idx j := j.fst
944
+ app j := (𝓤.obj j.fst).affineCover.map _
945
+
883
946
end AlgebraicGeometry
0 commit comments