Documentation

Mathlib.AlgebraicGeometry.OpenImmersion

Open immersions of schemes #

@[inline, reducible]

A morphism of Schemes is an open immersion if it is an open immersion as a morphism of LocallyRingedSpaces

Equations
Instances For

    To show that a locally ringed space is a scheme, it suffices to show that it has a jointly surjective family of open immersions from affine schemes.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      An open cover of X consists of a family of open immersions into X, and for each x : X an open immersion (indexed by f x) that covers x.

      This is merely a coverage in the Zariski pretopology, and it would be optimal if we could reuse the existing API about pretopologies, However, the definitions of sieves and grothendieck topologies uses Props, so that the actual open sets and immersions are hard to obtain. Also, since such a coverage in the pretopology usually contains a proper class of immersions, it is quite hard to glue them, reason about finite covers, etc.

      • J : Type v

        index set of an open cover of a scheme X

      • obj : self.JAlgebraicGeometry.Scheme

        the subschemes of an open cover

      • map : (j : self.J) → self.obj j X

        the embedding of subschemes to X

      • f : X.toPresheafedSpaceself.J

        given a point of x : X, f x is the index of the subscheme which contains x

      • Covers : ∀ (x : X.toPresheafedSpace), x Set.range (self.map (self.f x)).val.base

        the subschemes covers X

      • IsOpen : ∀ (x : self.J), AlgebraicGeometry.IsOpenImmersion (self.map x)

        the embedding of subschemes are open immersions

      Instances For

        The affine cover of a scheme.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem AlgebraicGeometry.Scheme.OpenCover.bind_map {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (f : (x : 𝒰.J) → AlgebraicGeometry.Scheme.OpenCover (𝒰.obj x)) (x : (i : 𝒰.J) × (f i).J) :
          (AlgebraicGeometry.Scheme.OpenCover.bind 𝒰 f).map x = CategoryTheory.CategoryStruct.comp ((f x.fst).map x.snd) (𝒰.map x.fst)
          @[simp]
          theorem AlgebraicGeometry.Scheme.OpenCover.bind_obj {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (f : (x : 𝒰.J) → AlgebraicGeometry.Scheme.OpenCover (𝒰.obj x)) (x : (i : 𝒰.J) × (f i).J) :
          (AlgebraicGeometry.Scheme.OpenCover.bind 𝒰 f).obj x = (f x.fst).obj x.snd

          Given an open cover { Uᵢ } of X, and for each Uᵢ an open cover, we may combine these open covers to form an open cover of X.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For

            An isomorphism X ⟶ Y is an open cover of Y.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem AlgebraicGeometry.Scheme.OpenCover.copy_J {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (J : Type u_1) (obj : JAlgebraicGeometry.Scheme) (map : (i : J) → obj i X) (e₁ : J 𝒰.J) (e₂ : (i : J) → obj i 𝒰.obj (e₁ i)) (e₂ : ∀ (i : J), map i = CategoryTheory.CategoryStruct.comp (e₂✝ i).hom (𝒰.map (e₁ i))) :
              (AlgebraicGeometry.Scheme.OpenCover.copy 𝒰 J obj map e₁ e₂✝ e₂).J = J
              @[simp]
              theorem AlgebraicGeometry.Scheme.OpenCover.copy_map {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (J : Type u_1) (obj : JAlgebraicGeometry.Scheme) (map : (i : J) → obj i X) (e₁ : J 𝒰.J) (e₂ : (i : J) → obj i 𝒰.obj (e₁ i)) (e₂ : ∀ (i : J), map i = CategoryTheory.CategoryStruct.comp (e₂✝ i).hom (𝒰.map (e₁ i))) (i : J) :
              (AlgebraicGeometry.Scheme.OpenCover.copy 𝒰 J obj map e₁ e₂✝ e₂).map i = map i
              @[simp]
              theorem AlgebraicGeometry.Scheme.OpenCover.copy_obj {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (J : Type u_1) (obj : JAlgebraicGeometry.Scheme) (map : (i : J) → obj i X) (e₁ : J 𝒰.J) (e₂ : (i : J) → obj i 𝒰.obj (e₁ i)) (e₂ : ∀ (i : J), map i = CategoryTheory.CategoryStruct.comp (e₂✝ i).hom (𝒰.map (e₁ i))) :
              ∀ (a : J), (AlgebraicGeometry.Scheme.OpenCover.copy 𝒰 J obj map e₁ e₂✝ e₂).obj a = obj a
              def AlgebraicGeometry.Scheme.OpenCover.copy {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) (J : Type u_1) (obj : JAlgebraicGeometry.Scheme) (map : (i : J) → obj i X) (e₁ : J 𝒰.J) (e₂ : (i : J) → obj i 𝒰.obj (e₁ i)) (e₂ : ∀ (i : J), map i = CategoryTheory.CategoryStruct.comp (e₂✝ i).hom (𝒰.map (e₁ i))) :

              We construct an open cover from another, by providing the needed fields and showing that the provided fields are isomorphic with the original open cover.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                The pushforward of an open cover along an isomorphism.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Adding an open immersion into an open cover gives another open cover.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.

                    The basic open sets form an affine open cover of Spec R.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      We may bind the basic open sets of an open affine cover to form an affine cover that is also a basis.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem AlgebraicGeometry.Scheme.OpenCover.finiteSubcover_map {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) [H : CompactSpace X.toPresheafedSpace] (x : { x : X.toPresheafedSpace // x Exists.choose (_ : ∃ (t : Finset X.toPresheafedSpace), ⋃ x ∈ t, Set.range (𝒰.map (𝒰.f x)).val.base = ) }) :
                        (AlgebraicGeometry.Scheme.OpenCover.finiteSubcover 𝒰).map x = 𝒰.map (𝒰.f x)
                        @[simp]
                        theorem AlgebraicGeometry.Scheme.OpenCover.finiteSubcover_obj {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) [H : CompactSpace X.toPresheafedSpace] (x : { x : X.toPresheafedSpace // x Exists.choose (_ : ∃ (t : Finset X.toPresheafedSpace), ⋃ x ∈ t, Set.range (𝒰.map (𝒰.f x)).val.base = ) }) :
                        (AlgebraicGeometry.Scheme.OpenCover.finiteSubcover 𝒰).obj x = 𝒰.obj (𝒰.f x)

                        Every open cover of a quasi-compact scheme can be refined into a finite subcover.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          If X ⟶ Y is an open immersion, and Y is a scheme, then so is X.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem AlgebraicGeometry.Scheme.restrict_carrier {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X.toPresheafedSpace} (h : OpenEmbedding f) :
                            (AlgebraicGeometry.Scheme.restrict X h).toLocallyRingedSpace.toSheafedSpace.toPresheafedSpace = U
                            @[simp]
                            theorem AlgebraicGeometry.Scheme.restrict_presheaf_map {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X.toPresheafedSpace} (h : OpenEmbedding f) :
                            ∀ {X_1 Y : (TopologicalSpace.Opens U)ᵒᵖ} (f_1 : X_1 Y), (AlgebraicGeometry.Scheme.restrict X h).toLocallyRingedSpace.toSheafedSpace.toPresheafedSpace.presheaf.toPrefunctor.map f_1 = X.presheaf.toPrefunctor.map ((IsOpenMap.functor (_ : IsOpenMap f)).toPrefunctor.map f_1.unop).op
                            @[simp]
                            theorem AlgebraicGeometry.Scheme.restrict_presheaf_obj {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X✝.toPresheafedSpace} (h : OpenEmbedding f) (X : (TopologicalSpace.Opens U)ᵒᵖ) :
                            (AlgebraicGeometry.Scheme.restrict X✝ h).toLocallyRingedSpace.toSheafedSpace.toPresheafedSpace.presheaf.toPrefunctor.obj X = X✝.presheaf.toPrefunctor.obj (Opposite.op ((IsOpenMap.functor (_ : IsOpenMap f)).toPrefunctor.obj X.unop))

                            The restriction of a Scheme along an open embedding.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem AlgebraicGeometry.Scheme.restrict_toPresheafedSpace {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X.toPresheafedSpace} (h : OpenEmbedding f) :
                              (AlgebraicGeometry.Scheme.restrict X h).toLocallyRingedSpace.toSheafedSpace.toPresheafedSpace = AlgebraicGeometry.PresheafedSpace.restrict X.toPresheafedSpace h
                              @[simp]
                              theorem AlgebraicGeometry.Scheme.ofRestrict_val_base {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X.toPresheafedSpace} (h : OpenEmbedding f) :
                              @[simp]
                              theorem AlgebraicGeometry.Scheme.ofRestrict_val_c_app {U : TopCat} (X : AlgebraicGeometry.Scheme) {f : U TopCat.of X.toPresheafedSpace} (h : OpenEmbedding f) (V : (TopologicalSpace.Opens X.toPresheafedSpace)ᵒᵖ) :
                              (AlgebraicGeometry.Scheme.ofRestrict X h).val.c.app V = X.presheaf.toPrefunctor.map ((IsOpenMap.adjunction (_ : IsOpenMap f)).counit.app V.unop).op

                              The canonical map from the restriction to the subspace.

                              Equations
                              Instances For
                                Equations
                                • One or more equations did not get rendered due to their size.

                                An open immersion induces an isomorphism from the domain onto the image

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  Equations
                                  Equations
                                  theorem AlgebraicGeometry.IsOpenImmersion.range_pullback_snd_of_left {X : AlgebraicGeometry.Scheme} {Y : AlgebraicGeometry.Scheme} {Z : AlgebraicGeometry.Scheme} (f : X Z) (g : Y Z) [H : AlgebraicGeometry.IsOpenImmersion f] :
                                  Set.range CategoryTheory.Limits.pullback.snd.val.base = ((TopologicalSpace.Opens.map g.val.base).toPrefunctor.obj { carrier := Set.range f.val.base, is_open' := (_ : IsOpen (Set.range f.val.base)) }).carrier
                                  theorem AlgebraicGeometry.IsOpenImmersion.range_pullback_fst_of_right {X : AlgebraicGeometry.Scheme} {Y : AlgebraicGeometry.Scheme} {Z : AlgebraicGeometry.Scheme} (f : X Z) (g : Y Z) [H : AlgebraicGeometry.IsOpenImmersion f] :
                                  Set.range CategoryTheory.Limits.pullback.fst.val.base = ((TopologicalSpace.Opens.map g.val.base).toPrefunctor.obj { carrier := Set.range f.val.base, is_open' := (_ : IsOpen (Set.range f.val.base)) }).carrier

                                  The universal property of open immersions: For an open immersion f : X ⟶ Z, given any morphism of schemes g : Y ⟶ Z whose topological image is contained in the image of f, we can lift this morphism to a unique Y ⟶ X that commutes with these maps.

                                  Equations
                                  Instances For

                                    Two open immersions with equal range are isomorphic.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      @[inline, reducible]

                                      The functor opens X ⥤ opens Y associated with an open immersion f : X ⟶ Y.

                                      Equations
                                      Instances For
                                        def AlgebraicGeometry.Scheme.Hom.invApp {X : AlgebraicGeometry.Scheme} {Y : AlgebraicGeometry.Scheme} (f : X Y) [H : AlgebraicGeometry.IsOpenImmersion f] (U : TopologicalSpace.Opens X.toPresheafedSpace) :
                                        X.presheaf.toPrefunctor.obj (Opposite.op U) Y.presheaf.toPrefunctor.obj (Opposite.op ((AlgebraicGeometry.Scheme.Hom.opensFunctor f).toPrefunctor.obj U))

                                        The isomorphism Γ(X, U) ⟶ Γ(Y, f(U)) induced by an open immersion f : X ⟶ Y.

                                        Equations
                                        Instances For

                                          The fg argument is to avoid nasty stuff about dependent types.

                                          theorem AlgebraicGeometry.Scheme.image_basicOpen {X : AlgebraicGeometry.Scheme} {Y : AlgebraicGeometry.Scheme} (f : X Y) [H : AlgebraicGeometry.IsOpenImmersion f] {U : TopologicalSpace.Opens X.toPresheafedSpace} (r : (X.presheaf.toPrefunctor.obj (Opposite.op U))) :
                                          (AlgebraicGeometry.Scheme.Hom.opensFunctor f).toPrefunctor.obj (X.basicOpen r) = Y.basicOpen ((AlgebraicGeometry.Scheme.Hom.invApp f U) r)

                                          The image of an open immersion as an open set.

                                          Equations
                                          Instances For

                                            Given an open cover on X, we may pull them back along a morphism W ⟶ X to obtain an open cover of W.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For

                                              Given an open cover on X, we may pull them back along a morphism f : W ⟶ X to obtain an open cover of W. This is similar to Scheme.OpenCover.pullbackCover, but here we take pullback (𝒰.map x) f instead of pullback f (𝒰.map x).

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem AlgebraicGeometry.Scheme.OpenCover.iUnion_range {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) :
                                                ⋃ (i : 𝒰.J), Set.range (𝒰.map i).val.base = Set.univ
                                                theorem AlgebraicGeometry.Scheme.OpenCover.compactSpace {X : AlgebraicGeometry.Scheme} (𝒰 : AlgebraicGeometry.Scheme.OpenCover X) [Finite 𝒰.J] [H : ∀ (i : 𝒰.J), CompactSpace (𝒰.obj i).toPresheafedSpace] :
                                                CompactSpace X.toPresheafedSpace

                                                Given open covers { Uᵢ } and { Uⱼ }, we may form the open cover { Uᵢ ∩ Uⱼ }.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  @[simp]
                                                  theorem AlgebraicGeometry.Scheme.openCoverOfSuprEqTop_J {s : Type u_1} (X : AlgebraicGeometry.Scheme) (U : sTopologicalSpace.Opens X.toPresheafedSpace) (hU : ⨆ (i : s), U i = ) :
                                                  def AlgebraicGeometry.Scheme.openCoverOfSuprEqTop {s : Type u_1} (X : AlgebraicGeometry.Scheme) (U : sTopologicalSpace.Opens X.toPresheafedSpace) (hU : ⨆ (i : s), U i = ) :

                                                  If U is a family of open sets that covers X, then X.restrict U forms an X.open_cover.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For