Documentation

Mathlib.RingTheory.Spectrum.Prime.Topology

The Zariski topology on the prime spectrum of a commutative (semi)ring #

Conventions #

We denote subsets of (semi)rings with s, s', etc... whereas we denote subsets of prime spectra with t, t', etc...

Inspiration/contributors #

The contents of this file draw inspiration from https://github.com/ramonfmir/lean-scheme which has contributions from Ramon Fernandez Mir, Kevin Buzzard, Kenny Lau, and Chris Hughes (on an earlier repository).

Main definitions #

Main results #

In the prime spectrum of a commutative semiring:

@[implicit_reducible]

The Zariski topology on the prime spectrum of a commutative (semi)ring is defined via the closed sets of the topology: they are exactly those sets that are the zero locus of a subset of the ring.

theorem PrimeSpectrum.isOpen_iff {R : Type u} [CommSemiring R] (U : Set (PrimeSpectrum R)) :
IsOpen U โ†” โˆƒ (s : Set R), Uแถœ = zeroLocus s
theorem PrimeSpectrum.isClosed_iff_zeroLocus_ideal {R : Type u} [CommSemiring R] (Z : Set (PrimeSpectrum R)) :
IsClosed Z โ†” โˆƒ (I : Ideal R), Z = zeroLocus โ†‘I
theorem PrimeSpectrum.isClosed_iff_zeroLocus_radical_ideal {R : Type u} [CommSemiring R] (Z : Set (PrimeSpectrum R)) :
IsClosed Z โ†” โˆƒ (I : Ideal R), I.IsRadical โˆง Z = zeroLocus โ†‘I
theorem PrimeSpectrum.zeroLocus_eq_iff {R : Type u} [CommSemiring R] {I J : Ideal R} :
zeroLocus โ†‘I = zeroLocus โ†‘J โ†” I.radical = J.radical

The antitone order embedding of closed subsets of Spec R into ideals of R.

Instances For

    The prime spectrum of a commutative (semi)ring is a compact topological space.

    The prime spectrum of a commutative semiring has discrete Zariski topology iff it is finite and the semiring has Krull dimension zero or is trivial.

    The prime spectrum of a semiring has discrete Zariski topology iff there are only finitely many maximal ideals and their intersection is contained in the nilradical.

    @[deprecated "RingHom.specComap and PrimeSpectrum.comap were unified,so this lemma is now a no-op." (since := "2025-12-10")]
    theorem PrimeSpectrum.comap_apply {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] (f : R โ†’+* S) (x : PrimeSpectrum S) :
    comap f x = comap f x
    @[deprecated PrimeSpectrum.localization_comap_injective (since := "2025-12-10")]
    theorem PrimeSpectrum.localization_specComap_injective {R : Type u} (S : Type v) [CommSemiring R] [CommSemiring S] [Algebra R S] (M : Submonoid R) [IsLocalization M S] :
    Function.Injective (comap (algebraMap R S))

    Alias of PrimeSpectrum.localization_comap_injective.

    @[deprecated PrimeSpectrum.localization_comap_range (since := "2025-12-10")]

    Alias of PrimeSpectrum.localization_comap_range.

    theorem PrimeSpectrum.comap_isInducing_of_surjective {R : Type u} (S : Type v) [CommSemiring R] [CommSemiring S] (f : R โ†’+* S) (hf : Function.Surjective โ‡‘f) :
    theorem PrimeSpectrum.isEmbedding_comap_of_surjective {R : Type u} (S : Type v) [CommSemiring R] [CommSemiring S] (f : R โ†’+* S) (hf : Function.Surjective โ‡‘f) :

    The embedding has closed range if the domain (and therefore the codomain) is a ring, see PrimeSpectrum.isClosedEmbedding_comap_of_surjective. On the other hand, comap (Nat.castRingHom (ZMod 2)) does not have closed range.

    Homeomorphism between prime spectra induced by an isomorphism of semirings.

    Instances For

      The comap of a surjective ring homomorphism is a closed embedding between the prime spectra.

      theorem PrimeSpectrum.comap_singleton_isClosed_of_surjective {R : Type u} (S : Type v) [CommRing R] [CommRing S] (f : R โ†’+* S) (hf : Function.Surjective โ‡‘f) (x : PrimeSpectrum S) (hx : IsClosed {x}) :
      theorem PrimeSpectrum.isClosed_range_comap_of_surjective {R : Type u} (S : Type v) [CommRing R] [CommRing S] (f : R โ†’+* S) (hf : Function.Surjective โ‡‘f) :

      The prime spectrum of R ร— S is homeomorphic to the disjoint union of PrimeSpectrum R and PrimeSpectrum S.

      Instances For

        basicOpen r is the open subset containing all prime ideals not containing r.

        Instances For
          @[simp]
          theorem PrimeSpectrum.mem_basicOpen {R : Type u} [CommSemiring R] (f : R) (x : PrimeSpectrum R) :
          x โˆˆ basicOpen f โ†” f โˆ‰ x.asIdeal
          @[simp]
          theorem PrimeSpectrum.basicOpen_pow {R : Type u} [CommSemiring R] (f : R) (n : โ„•) (hn : 0 < n) :
          basicOpen (f ^ n) = basicOpen f
          theorem PrimeSpectrum.eq_biUnion_of_isOpen {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} (hs : IsOpen s) :
          s = โ‹ƒ (r : R), โ‹ƒ (_ : โ†‘(basicOpen r) โІ s), โ†‘(basicOpen r)
          theorem PrimeSpectrum.comap_basicOpen {R : Type u} {S : Type v} [CommSemiring R] [CommSemiring S] (f : R โ†’+* S) (x : R) :
          (TopologicalSpace.Opens.comap { toFun := comap f, continuous_toFun := โ‹ฏ }) (basicOpen x) = basicOpen (f x)
          theorem PrimeSpectrum.iSup_basicOpen_eq_top_iff {R : Type u} [CommSemiring R] {ฮน : Type u_1} {f : ฮน โ†’ R} :
          โจ† (i : ฮน), basicOpen (f i) = โŠค โ†” Ideal.span (Set.range f) = โŠค

          If the prime spectrum of a commutative semiring R has discrete Zariski topology, then R is canonically isomorphic to the product of its localizations at the (finitely many) maximal ideals.

          Instances For

            The specialization order #

            We endow PrimeSpectrum R with a partial order, where x โ‰ค y if and only if y โˆˆ closure {x}.

            If x specializes to y, then there is a natural map from the localization of y to the localization of x.

            Instances For
              theorem PrimeSpectrum.isQuotientMap_of_specializingMap {R : Type u_1} {S : Type u_2} [CommSemiring R] [CommSemiring S] {f : R โ†’+* S} (hโ‚ : Function.Surjective (comap f)) (hโ‚‚ : SpecializingMap (comap f)) :

              If f : Spec S โ†’ Spec R is specializing and surjective, the topology on Spec R is the quotient topology induced by f.

              theorem PrimeSpectrum.isQuotientMap_of_generalizingMap {R : Type u_1} {S : Type u_2} [CommSemiring R] [CommSemiring S] {f : R โ†’+* S} (hโ‚ : Function.Surjective (comap f)) (hโ‚‚ : GeneralizingMap (comap f)) :

              If f : Spec S โ†’ Spec R is generalizing and surjective, the topology on Spec R is the quotient topology induced by f.

              theorem PrimeSpectrum.denseRange_comap_iff_minimalPrimes {R : Type u_1} {S : Type u_2} [CommSemiring R] [CommSemiring S] (f : R โ†’+* S) :
              DenseRange (comap f) โ†” โˆ€ (I : Ideal R) (h : I โˆˆ minimalPrimes R), { asIdeal := I, isPrime := โ‹ฏ } โˆˆ Set.range (comap f)

              Stacks Tag 00FL

              Zero loci of prime ideals are closed irreducible sets in the Zariski topology and any closed irreducible set is a zero locus of some prime ideal.

              Instances For

                Zero loci of prime ideals are closed irreducible sets in the Zariski topology and any closed irreducible set is a zero locus of some prime ideal.

                Instances For
                  theorem PrimeSpectrum.isCompact_isOpen_iff {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} :
                  IsCompact s โˆง IsOpen s โ†” โˆƒ (t : Finset R), (zeroLocus โ†‘t)แถœ = s
                  theorem PrimeSpectrum.isCompact_isOpen_iff_ideal {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} :
                  IsCompact s โˆง IsOpen s โ†” โˆƒ (I : Ideal R), I.FG โˆง (zeroLocus โ†‘I)แถœ = s
                  theorem PrimeSpectrum.basicOpen_eq_zeroLocus_of_mul_add {R : Type u} [CommSemiring R] (e f : R) (mul : e * f = 0) (add : e + f = 1) :
                  โ†‘(basicOpen e) = zeroLocus {f}
                  theorem PrimeSpectrum.zeroLocus_eq_basicOpen_of_mul_add {R : Type u} [CommSemiring R] (e f : R) (mul : e * f = 0) (add : e + f = 1) :
                  zeroLocus {e} = โ†‘(basicOpen f)
                  theorem PrimeSpectrum.isClopen_basicOpen_of_mul_add {R : Type u} [CommSemiring R] (e f : R) (mul : e * f = 0) (add : e + f = 1) :
                  IsClopen โ†‘(basicOpen e)
                  theorem PrimeSpectrum.exists_mul_eq_zero_add_eq_one_basicOpen_eq_of_isClopen {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} (hs : IsClopen s) :
                  โˆƒ (e : R) (f : R), e * f = 0 โˆง e + f = 1 โˆง s = โ†‘(basicOpen e) โˆง sแถœ = โ†‘(basicOpen f)
                  theorem PrimeSpectrum.isClopen_iff_mul_add {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} :
                  IsClopen s โ†” โˆƒ (e : R) (f : R), e * f = 0 โˆง e + f = 1 โˆง s = โ†‘(basicOpen e)
                  theorem PrimeSpectrum.isClopen_iff_mul_add_zeroLocus {R : Type u} [CommSemiring R] {s : Set (PrimeSpectrum R)} :
                  IsClopen s โ†” โˆƒ (e : R) (f : R), e * f = 0 โˆง e + f = 1 โˆง s = zeroLocus {e}
                  noncomputable def PrimeSpectrum.mulZeroAddOneEquivClopens {R : Type u} [CommSemiring R] :
                  { e : R ร— R // e.1 * e.2 = 0 โˆง e.1 + e.2 = 1 } โ‰ƒo TopologicalSpace.Clopens (PrimeSpectrum R)

                  Clopen subsets in the prime spectrum of a commutative semiring are in order-preserving bijection with pairs of elements with product 0 and sum 1. (By definition, (eโ‚, fโ‚) โ‰ค (eโ‚‚, fโ‚‚) iff eโ‚ * eโ‚‚ = eโ‚.) Both elements in such pairs must be idempotents, but there may exists idempotents that do not form such pairs (does not have a "complement"). For example, in the semiring {0, 0.5, 1} with โŠ” as + and โŠ“ as *, 0.5 has no complement.

                  Instances For
                    theorem RingHom.IsIntegral.comap_surjective {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {f : R โ†’+* S} (hf : f.IsIntegral) (hinj : Function.Injective โ‡‘f) :
                    Function.Surjective (PrimeSpectrum.comap f)
                    @[deprecated RingHom.IsIntegral.comap_surjective (since := "2025-12-10")]
                    theorem RingHom.IsIntegral.specComap_surjective {R : Type u_1} {S : Type u_2} [CommRing R] [CommRing S] {f : R โ†’+* S} (hf : f.IsIntegral) (hinj : Function.Injective โ‡‘f) :
                    Function.Surjective (PrimeSpectrum.comap f)

                    Alias of RingHom.IsIntegral.comap_surjective.

                    Zero loci of minimal prime ideals over I are irreducible components in zeroLocus I and any irreducible component is a zero locus of some minimal prime ideal.

                    Instances For

                      Zero loci of minimal prime ideals of R are irreducible components in Spec R and any irreducible component is a zero locus of some minimal prime ideal.

                      Instances For

                        The closed point in the prime spectrum of a local ring.

                        Instances For
                          theorem PrimeSpectrum.isClopen_iff {R : Type u} [CommRing R] {s : Set (PrimeSpectrum R)} :
                          IsClopen s โ†” โˆƒ (e : R), IsIdempotentElem e โˆง s = โ†‘(basicOpen e)
                          theorem PrimeSpectrum.isClopen_iff_zeroLocus {R : Type u} [CommRing R] {s : Set (PrimeSpectrum R)} :
                          IsClopen s โ†” โˆƒ (e : R), IsIdempotentElem e โˆง s = zeroLocus {e}

                          Clopen subsets in the prime spectrum of a commutative ring are in 1-1 correspondence with idempotent elements in the ring.

                          Instances For
                            theorem PrimeSpectrum.isIdempotentElemEquivClopens_mul {R : Type u} [CommRing R] (eโ‚ eโ‚‚ : โ†‘{e : R | IsIdempotentElem e}) :
                            isIdempotentElemEquivClopens โŸจโ†‘eโ‚ * โ†‘eโ‚‚, โ‹ฏโŸฉ = isIdempotentElemEquivClopens eโ‚ โŠ“ isIdempotentElemEquivClopens eโ‚‚
                            theorem PrimeSpectrum.isIdempotentElemEquivClopens_symm_inf {R : Type u} [CommRing R] (sโ‚ sโ‚‚ : TopologicalSpace.Clopens (PrimeSpectrum R)) :
                            isIdempotentElemEquivClopens.symm (sโ‚ โŠ“ sโ‚‚) = โŸจโ†‘(isIdempotentElemEquivClopens.symm sโ‚) * โ†‘(isIdempotentElemEquivClopens.symm sโ‚‚), โ‹ฏโŸฉ
                            theorem PrimeSpectrum.isIdempotentElemEquivClopens_symm_sup {R : Type u} [CommRing R] (sโ‚ sโ‚‚ : TopologicalSpace.Clopens (PrimeSpectrum R)) :
                            isIdempotentElemEquivClopens.symm (sโ‚ โŠ” sโ‚‚) = โŸจโ†‘(isIdempotentElemEquivClopens.symm sโ‚) + โ†‘(isIdempotentElemEquivClopens.symm sโ‚‚) - โ†‘(isIdempotentElemEquivClopens.symm sโ‚) * โ†‘(isIdempotentElemEquivClopens.symm sโ‚‚), โ‹ฏโŸฉ