Module

SystemDomain.lean

Nyll.SchemeTheory.LocalGeometry.RegularLocal.SystemDomain
11 declarations indexed from sourceView source ↗

Domains and prime parameters from a regular system

This file supplies the algebraic fact needed by finite local root covers: a Noetherian local ring admitting a regular sequence which generates its maximal ideal is a domain, and every member of that regular system is prime. No domain or primality conclusion is assumed.

Declarations

EtaleFundamentalGroups.Kummer.isDomain_of_prime_isSMulRegular

In a Noetherian local ring, one prime regular element forces the zero ideal to be prime. Krull intersection rules out infinite divisibility by the chosen element.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem isDomain_of_prime_isSMulRegular
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    {p : R} (hp : Prime p) (hpreg : IsSMulRegular R p) : IsDomain R
EtaleFundamentalGroups.Kummer.regularSystem_quotientHead

Removing the first member of a regular system leaves a regular system in the quotient, still generating its maximal ideal.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem regularSystem_quotientHead
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    {p : R} {ps : List R}
    (hreg : IsRegular R (p :: ps))
    (hgen : Ideal.ofList (p :: ps) = maximalIdeal R) :
    let I : Ideal R := Ideal.span {p}
    let S := R ⧸ I
    IsRegular S (ps.map (Ideal.Quotient.mk I)) ∧
      Ideal.ofList (ps.map (Ideal.Quotient.mk I)) =
        (maximalIdeal R).map (Ideal.Quotient.mk I) := by
  dsimp only
  let I : Ideal R := Ideal.span {p}
  let S := R ⧸ I
  have hpMem : p ∈ maximalIdeal R := by
    rw [← hgen]
    exact Ideal.subset_span (by simp)
  have hIle : I ≤ maximalIdeal R := by
    apply Ideal.span_le.mpr
    intro z hz
    simp only [Set.mem_singleton_iff] at hz
    subst z
    change p ∈ maximalIdeal R
    exact hpMem
  have hIne : I ≠ ⊤ :=
    ne_top_of_le_ne_top (maximalIdeal.isMaximal R).ne_top hIle
  let : Nontrivial S := Ideal.Quotient.nontrivial_iff.mpr hIne
  let : IsLocalRing S :=
    IsLocalRing.of_surjective' (Ideal.Quotient.mk I)
      Ideal.Quotient.mk_surjective
  let : IsNoetherianRing S :=
    isNoetherianRing_of_surjective R S (Ideal.Quotient.mk I)
      Ideal.Quotient.mk_surjective
  have hregQ : IsRegular (QuotSMulTop p R)
      (ps.map (Ideal.Quotient.mk I)) :=
    ((isRegular_cons_iff' R p ps).mp hreg).2
  let e : QuotSMulTop p R ≃ₗ[S] S :=
    ((QuotSMulTop.equivQuotTensor p R).extendScalarsOfSurjective
      Ideal.Quotient.mk_surjective).trans
        ((TensorProduct.rid R S).extendScalarsOfSurjective
          Ideal.Quotient.mk_surjective)
  have hregS : IsRegular S (ps.map (Ideal.Quotient.mk I)) :=
    (e.isRegular_congr _).mp hregQ
  have hgenS : Ideal.ofList (ps.map (Ideal.Quotient.mk I)) =
      (maximalIdeal R).map (Ideal.Quotient.mk I) := by
    rw [← hgen, Ideal.map_ofList]
    simp [I]
  exact ⟨hregS, hgenS⟩
EtaleFundamentalGroups.Kummer.regularSystem_quotientPrefix

Quotienting by an initial segment of a regular system leaves the mapped tail as a regular system generating the quotient maximal ideal.

Unlike iterating regularSystem_quotientHead, this theorem presents the result directly over the single quotient by Ideal.ofList xs.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem regularSystem_quotientPrefix
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (xs ys : List R)
    (hreg : IsRegular R (xs ++ ys))
    (hgen : Ideal.ofList (xs ++ ys) = maximalIdeal R) :
    let I : Ideal R := Ideal.ofList xs
    let hI : I ≤ maximalIdeal R := by
      calc
        I ≤ Ideal.ofList (xs ++ ys) := by
          rw [Ideal.ofList_append]
          exact le_sup_left
        _ = maximalIdeal R := hgen
    let S := R ⧸ I
    letI : Nontrivial S :=
      Ideal.Quotient.nontrivial_iff.mpr
        (ne_top_of_le_ne_top (maximalIdeal.isMaximal R).ne_top hI)
    letI : IsLocalRing S :=
      IsLocalRing.of_surjective' (Ideal.Quotient.mk I)
        Ideal.Quotient.mk_surjective
    IsRegular S (ys.map (Ideal.Quotient.mk I)) ∧
      Ideal.ofList (ys.map (Ideal.Quotient.mk I)) = maximalIdeal S := by
  dsimp only
  let I : Ideal R := Ideal.ofList xs
  have hI : I ≤ maximalIdeal R := by
    calc
      I ≤ Ideal.ofList (xs ++ ys) := by
        rw [Ideal.ofList_append]
        exact le_sup_left
      _ = maximalIdeal R := hgen
  let S := R ⧸ I
  let q : R →+* S := Ideal.Quotient.mk I
  have hIne : I ≠ ⊤ :=
    ne_top_of_le_ne_top (maximalIdeal.isMaximal R).ne_top hI
  let : Nontrivial S := Ideal.Quotient.nontrivial_iff.mpr hIne
  let : IsLocalRing S :=
    IsLocalRing.of_surjective' q Ideal.Quotient.mk_surjective
  let : IsNoetherianRing S :=
    isNoetherianRing_of_surjective R S q Ideal.Quotient.mk_surjective
  have hweakQuotient :=
    ((isWeaklyRegular_append_iff' R xs ys).mp
      hreg.toIsWeaklyRegular).2
  have hsmulTop :
      Ideal.ofList xs • (⊤ : Ideal R) = I := by
    simp [I]
  let eAdd :
      (R ⧸ (Ideal.ofList xs • (⊤ : Ideal R))) ≃+ S :=
    (Submodule.quotEquivOfEq
      (Ideal.ofList xs • (⊤ : Ideal R)) I hsmulTop).toAddEquiv
  let e :
      (R ⧸ (Ideal.ofList xs • (⊤ : Ideal R))) ≃ₗ[S] S :=
    AddEquiv.toLinearEquiv (R := S) eAdd (by
      intro s z
      obtain ⟨r, rfl⟩ := Ideal.Quotient.mk_surjective s
      obtain ⟨a, rfl⟩ :=
        Submodule.mkQ_surjective
          (Ideal.ofList xs • (⊤ : Ideal R)) z
      rfl)
  have hweakS : IsWeaklyRegular S (ys.map q) := by
    exact (e.isWeaklyRegular_congr _).mp hweakQuotient
  have hgenMap :
      Ideal.ofList ((xs ++ ys).map q) =
        (maximalIdeal R).map q := by
    rw [← Ideal.map_ofList, hgen]
  have hmapXs : Ideal.ofList (xs.map q) = ⊥ := by
    rw [← Ideal.map_ofList]
    exact Ideal.map_quotient_self I
  have hgenS : Ideal.ofList (ys.map q) = maximalIdeal S := by
    calc
      Ideal.ofList (ys.map q) =
          Ideal.ofList (xs.map q) ⊔ Ideal.ofList (ys.map q) := by
        rw [hmapXs, bot_sup_eq]
      _ = Ideal.ofList ((xs ++ ys).map q) := by
        rw [List.map_append, Ideal.ofList_append]
      _ = (maximalIdeal R).map q := hgenMap
      _ = maximalIdeal S :=
        IsLocalRing.map_maximalIdeal_of_surjective
          q Ideal.Quotient.mk_surjective
  have hmem : ∀ r ∈ ys.map q, r ∈ maximalIdeal S := by
    intro r hr
    rw [← hgenS]
    exact Ideal.subset_span hr
  exact ⟨IsRegular.of_isWeaklyRegular_of_mem_maximalIdeal
      (L := S) hmem hweakS, hgenS⟩
EtaleFundamentalGroups.Kummer.isDomain_of_regularSystem

A regular system generating the maximal ideal makes a Noetherian local ring a domain.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem isDomain_of_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (ps : List R) (hreg : IsRegular R ps)
    (hgen : Ideal.ofList ps = maximalIdeal R) : IsDomain R
EtaleFundamentalGroups.Kummer.isRegularLocalRing_of_regularSystem

A regular system which generates the maximal ideal makes its Noetherian local ring regular local.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem isRegularLocalRing_of_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (ps : List R) (hreg : IsRegular R ps)
    (hgen : Ideal.ofList ps = maximalIdeal R) : IsRegularLocalRing R
EtaleFundamentalGroups.Kummer.regularSystem_length_eq_ringKrullDim

The length of a regular system generating the maximal ideal is the Krull dimension of the local ring.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem regularSystem_length_eq_ringKrullDim
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (ps : List R) (hreg : IsRegular R ps)
    (hgen : Ideal.ofList ps = maximalIdeal R) :
    ((ps.length : ℕ∞) : WithBot ℕ∞) = ringKrullDim R
EtaleFundamentalGroups.Kummer.quotientPrefix_geometry_of_regularSystem

A single quotient by an initial segment of a regular system is again a regular local domain. No normality of any intermediate quotient is used.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem quotientPrefix_geometry_of_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (xs ys : List R)
    (hreg : IsRegular R (xs ++ ys))
    (hgen : Ideal.ofList (xs ++ ys) = maximalIdeal R) :
    IsDomain (R ⧸ Ideal.ofList xs) ∧
      IsRegularLocalRing (R ⧸ Ideal.ofList xs)
EtaleFundamentalGroups.Kummer.quotientPrefix_ringKrullDim_eq_length_of_regularSystem

The Krull dimension of the direct prefix quotient is the length of the remaining regular system.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem quotientPrefix_ringKrullDim_eq_length_of_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (xs ys : List R)
    (hreg : IsRegular R (xs ++ ys))
    (hgen : Ideal.ofList (xs ++ ys) = maximalIdeal R) :
    ringKrullDim (R ⧸ Ideal.ofList xs) =
      ((ys.length : ℕ∞) : WithBot ℕ∞)
EtaleFundamentalGroups.Kummer.quotientPrefix_geometry_dimension_two_of_regularSystem

If precisely two parameters remain, the direct prefix quotient supplies the regular local domain of dimension two needed by punctured purity.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem quotientPrefix_geometry_dimension_two_of_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    (xs : List R) (y z : R)
    (hreg : IsRegular R (xs ++ [y, z]))
    (hgen : Ideal.ofList (xs ++ [y, z]) = maximalIdeal R) :
    IsDomain (R ⧸ Ideal.ofList xs) ∧
      IsRegularLocalRing (R ⧸ Ideal.ofList xs) ∧
      ringKrullDim (R ⧸ Ideal.ofList xs) =
        ((2 : ℕ∞) : WithBot ℕ∞)
EtaleFundamentalGroups.Kummer.prime_of_mem_regularSystem

Every member of a regular system generating the maximal ideal is prime.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem prime_of_mem_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    {ps : List R} (hreg : IsRegular R ps)
    (hgen : Ideal.ofList ps = maximalIdeal R)
    {p : R} (hp : p ∈ ps) : Prime p
EtaleFundamentalGroups.Kummer.quotient_geometry_of_mem_regularSystem

Quotienting by any member of a regular system again gives a regular local domain. This packages the divisor geometry needed after a root construction.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace EtaleFundamentalGroups.Kummer
open scoped Pointwise
open IsLocalRing
open RingTheory.Sequence
universe u
theorem quotient_geometry_of_mem_regularSystem
    {R : Type u} [CommRing R] [IsLocalRing R] [IsNoetherianRing R]
    {ps : List R} (hreg : IsRegular R ps)
    (hgen : Ideal.ofList ps = maximalIdeal R)
    {p : R} (hp : p ∈ ps) :
    IsDomain (R ⧸ Ideal.span {p}) ∧
      IsRegularLocalRing (R ⧸ Ideal.span {p})