Documentation

Mathlib.Topology.Sheaves.CommRingCat

Sheaves of (commutative) rings. #

Results specific to sheaves of commutative rings including sheaves of continuous functions TopCat.continuousFunctions with natural operations of pullback and map and sub, quotient, and localization operations on sheaves of rings with

As more results accumulate, please consider splitting this file.

References #

As an example, we now have everything we need to check the sheaf condition for a presheaf of commutative rings, merely by checking the sheaf condition for the underlying sheaf of types.

Note that the universes for TopCat and CommRingCat must be the same for this argument to go through.

@[reducible, inline]
abbrev TopCat.Presheaf.restrictOpenCommRingCat {X : TopCat} {F : TopCat.Presheaf CommRingCat X} {V : TopologicalSpace.Opens X} (f : (F.obj (Opposite.op V))) (U : TopologicalSpace.Opens X) (e : U V := by restrict_tac) :
(F.obj (Opposite.op U))

Specialize restrictOpen to CommRingCat because inferring C := CommRingCat isn't reliable. Instead of unfolding the definition, rewrite with restrictOpenCommRingCat_apply to ensure the correct coercion to functions is taken.

(The correct fix in the longer term is to redesign concrete categories so we don't use forget everywhere, but the correct FunLike instance for the morphisms of those categories.)

Equations
Instances For

    Notation for TopCat.Presheaf.restrictOpenCommRingCat.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem CommRingCat.presheaf_restrict_restrict (X : TopCat) {F : TopCat.Presheaf CommRingCat X} {U V W : TopologicalSpace.Opens X} (e₁ : U V := by restrict_tac) (e₂ : V W := by restrict_tac) (f : (F.obj (Opposite.op W))) :

      A subpresheaf with a submonoid structure on each of the components.

      Instances For

        The localization of a presheaf of CommRings with respect to a SubmonoidPresheaf.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def TopCat.Presheaf.SubmonoidPresheaf.toLocalizationPresheaf {X : TopCat} {F : TopCat.Presheaf CommRingCat X} (G : F.SubmonoidPresheaf) :
          F G.localizationPresheaf

          The map into the localization presheaf.

          Equations
          Instances For
            @[simp]
            theorem TopCat.Presheaf.SubmonoidPresheaf.toLocalizationPresheaf_app {X : TopCat} {F : TopCat.Presheaf CommRingCat X} (G : F.SubmonoidPresheaf) (U : (TopologicalSpace.Opens X)ᵒᵖ) :
            G.toLocalizationPresheaf.app U = CommRingCat.ofHom (algebraMap (↑(F.obj U)) (Localization (G.obj U)))
            instance TopCat.Presheaf.epi_toLocalizationPresheaf {X : TopCat} {F : TopCat.Presheaf CommRingCat X} (G : F.SubmonoidPresheaf) :
            CategoryTheory.Epi G.toLocalizationPresheaf
            noncomputable def TopCat.Presheaf.submonoidPresheafOfStalk {X : TopCat} (F : TopCat.Presheaf CommRingCat X) (S : (x : X) → Submonoid (F.stalk x)) :
            F.SubmonoidPresheaf

            Given a submonoid at each of the stalks, we may define a submonoid presheaf consisting of sections whose restriction onto each stalk falls in the given submonoid.

            Equations
            Instances For
              @[simp]
              theorem TopCat.Presheaf.submonoidPresheafOfStalk_obj {X : TopCat} (F : TopCat.Presheaf CommRingCat X) (S : (x : X) → Submonoid (F.stalk x)) (U : (TopologicalSpace.Opens X)ᵒᵖ) :
              (F.submonoidPresheafOfStalk S).obj U = ⨅ (x : (Opposite.unop U)), Submonoid.comap (F.germ (Opposite.unop U) x ).hom (S x)
              noncomputable instance TopCat.Presheaf.instInhabitedSubmonoidPresheaf {X : TopCat} (F : TopCat.Presheaf CommRingCat X) :
              Inhabited F.SubmonoidPresheaf
              Equations
              • F.instInhabitedSubmonoidPresheaf = { default := F.submonoidPresheafOfStalk fun (x : X) => }

              The localization of a presheaf of CommRings at locally non-zero-divisor sections.

              Equations
              • F.totalQuotientPresheaf = (F.submonoidPresheafOfStalk fun (x : X) => nonZeroDivisors (F.stalk x)).localizationPresheaf
              Instances For
                noncomputable def TopCat.Presheaf.toTotalQuotientPresheaf {X : TopCat} (F : TopCat.Presheaf CommRingCat X) :
                F F.totalQuotientPresheaf

                The map into the presheaf of total quotient rings

                Equations
                • F.toTotalQuotientPresheaf = (F.submonoidPresheafOfStalk fun (x : X) => nonZeroDivisors (F.stalk x)).toLocalizationPresheaf
                Instances For

                  The (bundled) commutative ring of continuous functions from a topological space to a topological commutative ring, with pointwise multiplication.

                  Equations
                  Instances For

                    Pulling back functions into a topological ring along a continuous map is a ring homomorphism.

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

                      A homomorphism of topological rings can be postcomposed with functions from a source space X; this is a ring homomorphism (with respect to the pointwise ring operations on functions).

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

                        An upgraded version of the Yoneda embedding, observing that the continuous maps from X : TopCat to R : TopCommRingCat form a commutative ring, functorial in both X and R.

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

                          The presheaf (of commutative rings), consisting of functions on an open set U ⊆ X with values in some topological commutative ring T.

                          For example, we could construct the presheaf of continuous complex valued functions of X as

                          presheafToTopCommRing X (TopCommRingCat.of ℂ)
                          

                          (this requires import Topology.Instances.Complex).

                          Equations
                          Instances For
                            instance TopCat.Presheaf.algebra_section_stalk {X : TopCat} (F : TopCat.Presheaf CommRingCat X) {U : TopologicalSpace.Opens X} (x : U) :
                            Algebra (F.obj (Opposite.op U)) (F.stalk x)
                            Equations
                            • F.algebra_section_stalk x = (F.germ U x ).hom.toAlgebra
                            @[simp]
                            theorem TopCat.Presheaf.stalk_open_algebraMap {X : TopCat} (F : TopCat.Presheaf CommRingCat X) {U : TopologicalSpace.Opens X} (x : U) :
                            algebraMap (F.obj (Opposite.op U)) (F.stalk x) = (F.germ U x ).hom
                            def TopCat.Sheaf.objSupIsoProdEqLocus {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U V : TopologicalSpace.Opens X) :
                            F.val.obj (Opposite.op (U V)) CommRingCat.of (((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.fst (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V)))).eqLocus ((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.snd (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V)))))

                            F(U ⊔ V) is isomorphic to the eq_locus of the two maps F(U) × F(V) ⟶ F(U ⊓ V).

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U V : TopologicalSpace.Opens X) (x : (F.val.obj (Opposite.op (U V)))) :
                              (↑((F.objSupIsoProdEqLocus U V).hom.hom x)).1 = (F.val.map (CategoryTheory.homOfLE ).op).hom x
                              theorem TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U V : TopologicalSpace.Opens X) (x : (F.val.obj (Opposite.op (U V)))) :
                              (↑((F.objSupIsoProdEqLocus U V).hom.hom x)).2 = (F.val.map (CategoryTheory.homOfLE ).op).hom x
                              theorem TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U V : TopologicalSpace.Opens X) (x : (CommRingCat.of (((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.fst (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V)))).eqLocus ((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.snd (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V))))))) :
                              (F.val.map (CategoryTheory.homOfLE ).op).hom ((F.objSupIsoProdEqLocus U V).inv.hom x) = (↑x).1
                              theorem TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U V : TopologicalSpace.Opens X) (x : (CommRingCat.of (((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.fst (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V)))).eqLocus ((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.snd (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V))))))) :
                              (F.val.map (CategoryTheory.homOfLE ).op).hom ((F.objSupIsoProdEqLocus U V).inv.hom x) = (↑x).2
                              theorem TopCat.Sheaf.objSupIsoProdEqLocus_inv_eq_iff {X : TopCat} (F : TopCat.Sheaf CommRingCat X) {U V W UW VW : TopologicalSpace.Opens X} (e : W U V) (x : (CommRingCat.of (((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.fst (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V)))).eqLocus ((F.val.map (CategoryTheory.homOfLE ).op).hom.comp (RingHom.snd (F.val.obj (Opposite.op U)) (F.val.obj (Opposite.op V))))))) (y : (F.val.obj (Opposite.op W))) (h₁ : UW = U W) (h₂ : VW = V W) :
                              (F.val.map (CategoryTheory.homOfLE e).op).hom ((F.objSupIsoProdEqLocus U V).inv.hom x) = y (F.val.map (CategoryTheory.homOfLE ).op).hom (↑x).1 = (F.val.map (CategoryTheory.homOfLE ).op).hom y (F.val.map (CategoryTheory.homOfLE ).op).hom (↑x).2 = (F.val.map (CategoryTheory.homOfLE ).op).hom y