Module

RegularLocalRingQuotientNonZeroDivisorAscent.lean

Nyll.AlgebraicCurves.Geometry.Schemes.RegularLocalRingQuotientNonZeroDivisorAscent
21 declarations indexed from sourceView source ↗

Lifting regularity through a non-zero-divisor quotient

Imports22
  • Mathlib.Algebra.Module.SpanRank
  • Mathlib.Algebra.Module.SpanRankOperations
  • Mathlib.RingTheory.Ideal.Maps
  • Mathlib.RingTheory.Ideal.Quotient.Operations
  • Mathlib.RingTheory.Ideal.Quotient.Noetherian
  • Mathlib.RingTheory.RegularLocalRing.Defs
  • Mathlib.RingTheory.KrullDimension.Regular
  • Mathlib.RingTheory.KrullDimension.Zero
  • Mathlib.RingTheory.LocalRing.RingHom.Basic
  • Mathlib.RingTheory.Ideal.Cotangent
  • Mathlib.NumberTheory.Padics.RingHoms
  • Mathlib.NumberTheory.Padics.PadicIntegers
  • Mathlib.RingTheory.DualNumber
  • Mathlib.Algebra.DualNumber
  • Mathlib.Data.ZMod.Basic
  • Mathlib.Data.Set.Card
  • Mathlib.Data.Finset.Card
  • Mathlib.Algebra.Field.Rat
  • Mathlib.RingTheory.LocalRing.ResidueField.Basic
  • Mathlib.RingTheory.Noetherian.Basic
  • Mathlib.RingTheory.PrincipalIdealDomain
  • Mathlib.Tactic.Set
Imported by3

Declarations

RegularLocalRingQuotientAscent.spanFinrank_comap_le_of_surjective
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section GeneratorCounting
variable {A B : Type*} [CommRing A] [CommRing B]
theorem spanFinrank_comap_le_of_surjective {f : A →+* B} (hf : Function.Surjective f)
    {J : Ideal B} (hJ : Submodule.FG J) (hker : Submodule.FG (RingHom.ker f)) :
    (J.comap f).spanFinrank ≤ J.spanFinrank + (RingHom.ker f).spanFinrank
RegularLocalRingQuotientAscent.spanFinrank_maximalIdeal_le_of_surjective
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section GeneratorCounting
variable {A B : Type*} [CommRing A] [CommRing B]
theorem spanFinrank_maximalIdeal_le_of_surjective [IsLocalRing A] [IsLocalRing B]
    [IsNoetherianRing B] (f : A →+* B) (hf : Function.Surjective f)
    (hker : Submodule.FG (RingHom.ker f)) :
    (maximalIdeal A).spanFinrank ≤ (maximalIdeal B).spanFinrank + (RingHom.ker f).spanFinrank
RegularLocalRingQuotientAscent.finrank_cotangentSpace_le_of_surjective
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section GeneratorCounting
variable {A B : Type*} [CommRing A] [CommRing B]
theorem finrank_cotangentSpace_le_of_surjective [IsLocalRing A] [IsLocalRing B]
    [IsNoetherianRing A] [IsNoetherianRing B] (f : A →+* B) (hf : Function.Surjective f) :
    Module.finrank (ResidueField A) (CotangentSpace A)
      ≤ Module.finrank (ResidueField B) (CotangentSpace B) + (RingHom.ker f).spanFinrank
RegularLocalRingQuotientAscent.isRegularLocalRing_of_isRegularLocalRing_quotient
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Ascent
variable {A : Type*} [CommRing A] [IsLocalRing A] [IsNoetherianRing A]
theorem isRegularLocalRing_of_isRegularLocalRing_quotient {x : A} (hx : x ∈ maximalIdeal A)
    (hnzd : x ∈ nonZeroDivisors A)
    (hquot : IsRegularLocalRing (A ⧸ Ideal.span {x})) :
    IsRegularLocalRing A
RegularLocalRingQuotientAscent.isRegularLocalRing_of_surjective_ker_span_singleton
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Ascent
variable {A : Type*} [CommRing A] [IsLocalRing A] [IsNoetherianRing A]
theorem isRegularLocalRing_of_surjective_ker_span_singleton {B : Type*} [CommRing B]
    (f : A →+* B) (hf : Function.Surjective f) {x : A}
    (hker : RingHom.ker f = Ideal.span {x}) (hx : x ∈ maximalIdeal A)
    (hnzd : x ∈ nonZeroDivisors A) (hB : IsRegularLocalRing B) :
    IsRegularLocalRing A
RegularLocalRingQuotientAscent.padicIntQuotientSpanPEquiv

The residue ring of the p-adic integers is the field of integers modulo p.

Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Gates
variable (p : ℕ) [Fact p.Prime]
def padicIntQuotientSpanPEquiv : (ℤ_[p] ⧸ Ideal.span {(p : ℤ_[p])}) ≃+* ZMod p
RegularLocalRingQuotientAscent.gate_padicInt_hypotheses
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Gates
variable (p : ℕ) [Fact p.Prime]
theorem gate_padicInt_hypotheses :
    (p : ℤ_[p]) ∈ maximalIdeal ℤ_[p] ∧ (p : ℤ_[p]) ∈ nonZeroDivisors ℤ_[p] ∧
      IsRegularLocalRing (ℤ_[p] ⧸ Ideal.span {(p : ℤ_[p])})
RegularLocalRingQuotientAscent.gate_isRegularLocalRing_padicInt
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Gates
variable (p : ℕ) [Fact p.Prime]
theorem gate_isRegularLocalRing_padicInt : IsRegularLocalRing ℤ_[p]
RegularLocalRingQuotientAscent.gate_padicInt_conclusion_consistency
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Gates
variable (p : ℕ) [Fact p.Prime]
theorem gate_padicInt_conclusion_consistency : IsRegularLocalRing ℤ_[p]
RegularLocalRingQuotientAscent.gate_padicInt_dimension_jump
Source context 5 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Gates
variable (p : ℕ) [Fact p.Prime]
theorem gate_padicInt_dimension_jump :
    ringKrullDim (ℤ_[p] ⧸ Ideal.span {(p : ℤ_[p])}) + 1 = ringKrullDim ℤ_[p]
RegularLocalRingQuotientAscent.dualNumberFst

The ring homomorphism sending a dual number to its constant coefficient.

Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
def dualNumberFst (K : Type*) [CommRing K] : DualNumber K →+* K where
  toFun := TrivSqZeroExt.fst
  map_one' := TrivSqZeroExt.fst_one
  map_mul' := TrivSqZeroExt.fst_mul
  map_zero' := TrivSqZeroExt.fst_zero
  map_add' := TrivSqZeroExt.fst_add
RegularLocalRingQuotientAscent.dualNumberFst_apply
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem dualNumberFst_apply (K : Type*) [CommRing K] (x : DualNumber K) :
    dualNumberFst K x = TrivSqZeroExt.fst x
RegularLocalRingQuotientAscent.ker_dualNumberFst
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem ker_dualNumberFst (K : Type*) [CommRing K] :
    RingHom.ker (dualNumberFst K) = Ideal.span {(DualNumber.eps : DualNumber K)}
RegularLocalRingQuotientAscent.dualNumberFst_surjective
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem dualNumberFst_surjective (K : Type*) [CommRing K] :
    Function.Surjective (dualNumberFst K)
RegularLocalRingQuotientAscent.dualNumberQuotientSpanEpsEquiv

Quotienting the dual numbers by the infinitesimal generator recovers the base ring.

Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
def dualNumberQuotientSpanEpsEquiv (K : Type*) [CommRing K] :
    (DualNumber K ⧸ Ideal.span {(DualNumber.eps : DualNumber K)}) ≃+* K
RegularLocalRingQuotientAscent.quotient_span_eps_isRegularLocalRing
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem quotient_span_eps_isRegularLocalRing :
    IsRegularLocalRing (DualNumber ℚ ⧸ Ideal.span {(DualNumber.eps : DualNumber ℚ)})
RegularLocalRingQuotientAscent.eps_ne_zero
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem eps_ne_zero : (DualNumber.eps : DualNumber ℚ) ≠ 0
RegularLocalRingQuotientAscent.eps_notMem_nonZeroDivisors
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem eps_notMem_nonZeroDivisors :
    (DualNumber.eps : DualNumber ℚ) ∉ nonZeroDivisors (DualNumber ℚ)
RegularLocalRingQuotientAscent.eps_mem_maximalIdeal
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem eps_mem_maximalIdeal :
    (DualNumber.eps : DualNumber ℚ) ∈ maximalIdeal (DualNumber ℚ)
RegularLocalRingQuotientAscent.not_isRegularLocalRing_dualNumber
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem not_isRegularLocalRing_dualNumber : ¬ IsRegularLocalRing (DualNumber ℚ)
RegularLocalRingQuotientAscent.not_forall_isRegularLocalRing_of_quotient_dropping_nonZeroDivisor
Source context 4 commands

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

noncomputable section
open IsLocalRing
namespace RegularLocalRingQuotientAscent
section Teeth
theorem not_forall_isRegularLocalRing_of_quotient_dropping_nonZeroDivisor :
    ¬ (∀ (A : Type) [CommRing A] [IsLocalRing A] [IsNoetherianRing A] (x : A),
        x ∈ maximalIdeal A → IsRegularLocalRing (A ⧸ Ideal.span {x}) →
        IsRegularLocalRing A)