All proofs
Project-declaredLean 4.31.0 · mathlib@fabf563a

Bourbaki elements math alg comm ch IV sec1 no2 prop6

HarderNarasimhan.CommutativeAlgebra.bourbaki_elements_math_alg_comm_chIV_sec1_no2_prop6

Plain-language statement

Associated primes under localization, characterized by the kernel of the localization map. This packages a classical statement (Bourbaki, Algèbre commutative, Ch. IV, §1, no. 2, Prop. 6) describing how associated primes split between a submodule and its quotient when localizing at a multiplicative set S.

Exact Lean statement

lemma bourbaki_elements_math_alg_comm_chIV_sec1_no2_prop6
{R : Type*} [CommRing R] [IsNoetherianRing R]
{M : Type*} [AddCommGroup M] [Module R M]
(S : Submonoid R) (N : Submodule R M) :
  (associatedPrimes R N) =
    (associatedPrimes R M) \ { p ∈ associatedPrimes R M | p.carrier ∩ S = ∅ } ∧
  (associatedPrimes R (M⧸N)) = { p ∈ associatedPrimes R M | p.carrier ∩ S = ∅ }
↔ N = LinearMap.ker (LocalizedModule.mkLinearMap S M)

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
lemma bourbaki_elements_math_alg_comm_chIV_sec1_no2_prop6{R : Type*} [CommRing R] [IsNoetherianRing R]{M : Type*} [AddCommGroup M] [Module R M](S : Submonoid R) (N : Submodule R M) :  (associatedPrimes R N) =    (associatedPrimes R M) \ { p  associatedPrimes R M | p.carrier ∩ S = ∅ }   (associatedPrimes R (M⧸N)) = { p  associatedPrimes R M | p.carrier ∩ S = ∅ } N = LinearMap.ker (LocalizedModule.mkLinearMap S M):= by  constructor  · intro hAss    let K : Submodule R M := LinearMap.ker (LocalizedModule.mkLinearMap S M)    have hNoDisjAssN :  p  associatedPrimes R N, p.carrier ∩ S := by      intro p hpN hpDisj      have hpDiff : p  (associatedPrimes R M) \          { p  associatedPrimes R M | p.carrier ∩ S = ∅ } := by        simpa [hAss.1] using hpN      exact hpDiff.2 hpDiff.1, hpDisj    have hLocAssEmpty :        associatedPrimes (Localization S) (LocalizedModule S N) =:= by      refine Set.Subset.antisymm ?_ (Set.empty_subset _)      intro q hq      have hpre :=        associatedPrimes.preimage_comap_associatedPrimes_eq_associatedPrimes_of_isLocalizedModule        (S := S) (R' := Localization S)        (f := LocalizedModule.mkLinearMap S N)      have hqComap :          Ideal.comap (algebraMap R (Localization S)) q  associatedPrimes R N := by        have : q  (Ideal.comap (algebraMap R (Localization S))) ⁻¹' (associatedPrimes R N) := by          rw [hpre]          exact hq        exact this      have hqDisjSet :          Disjoint (S : Set R) ((Ideal.comap (algebraMap R (Localization S)) q : Ideal R) : Set R)          :=        (IsLocalization.disjoint_under_iff S (Localization S) q).mpr hq.1.ne_top      have hqDisj : (Ideal.comap (algebraMap R (Localization S)) q).carrier ∩ S =:=        by simpa [Set.inter_comm] using Set.disjoint_iff_inter_eq_empty.mp hqDisjSet      exact False.elim ((hNoDisjAssN _ hqComap) hqDisj)    have hSubLocN : Subsingleton (LocalizedModule S N) := by      by_contra hns      haveI : Nontrivial (LocalizedModule S N) := not_subsingleton_iff_nontrivial.mp hns      obtain q, hq := associatedPrimes.nonempty (Localization S) (LocalizedModule S N)      exact Set.notMem_empty q (hLocAssEmpty ▸ hq)    have hNleK : N  K := by      intro x hxN      have hx0N : LocalizedModule.mkLinearMap S N x, hxN = 0 :=        @Subsingleton.elim (LocalizedModule S N) hSubLocN _ _      have hxKerN : x, hxN  LinearMap.ker (LocalizedModule.mkLinearMap S N) := by        simpa [LinearMap.mem_ker] using hx0N      rcases (LocalizedModule.mem_ker_mkLinearMap_iff          (S := S) (m := (x, hxN : N))).1 hxKerN with s, hsS, hsxN      have hxKerM : x  LinearMap.ker (LocalizedModule.mkLinearMap S M) :=        (LocalizedModule.mem_ker_mkLinearMap_iff (S := S) (m := x)).2        s, hsS, congrArg Subtype.val hsxN      simpa [K] using hxKerM    have hKleN : K  N := by      intro x hxK      by_contra hxN      let xq : M ⧸ N := N.mkQ x      have hxq_ne : xq  0 := by simpa [xq, Submodule.Quotient.mk_eq_zero] using hxN      let C : Submodule R (M ⧸ N) := Submodule.span R ({xq} : Set (M ⧸ N))      have hxq_mem_C : xq  C := Submodule.subset_span (by simp [xq])      have hxq_sub_ne : (xq, hxq_mem_C : C)  0 := by        intro h        apply hxq_ne <| Subtype.ext_iff.mp h      have hxq_sub_ne' : (0 : C)  xq, hxq_mem_C := by        simpa [eq_comm] using hxq_sub_ne      haveI : Nontrivial C := ⟨⟨0, by simp [C], ⟨⟨xq, hxq_mem_C, by        exact hxq_sub_ne'⟩⟩      obtain p, hpC := associatedPrimes.nonempty R C      have hpMN : p  associatedPrimes R (M ⧸ N) :=        associatedPrimes.subset_of_injective (R := R) (f := C.subtype)          (Submodule.injective_subtype C) hpC      have hpDisj : p.carrier ∩ S =:= by        have hpSet : p  { p  associatedPrimes R M | p.carrier ∩ S = ∅ } := by          simpa [hAss.2] using hpMN        exact hpSet.2      rcases hpC with hpPrime, y, hy      rcases (LocalizedModule.mem_ker_mkLinearMap_iff (S := S) (m := x)).1 (by simpa [K] using hxK)        with s, hsS, hsx      have hsxq : s • xq = 0 := by        change N.mkQ (s • x) = 0        simp [hsx]      have hsy : s • y = 0 := by        apply Subtype.ext        change s • (y : M ⧸ N) = 0        rcases Submodule.mem_span_singleton.mp y.2 with r, hr        have hr' : (y : M ⧸ N) = r • xq := by          simpa [eq_comm] using hr        rw [hr']        calc          s • (r • xq) = (s * r) • xq := by simp [smul_smul]          _ = r • (s • xq) := by simp [smul_smul, mul_comm]          _ = 0 := by simp [hsxq]      have hsP : s  p := by        rw [hy]        rw [Ideal.mem_radical_iff]        refine 1, ?_        rw [Submodule.mem_colon_singleton]        simpa using hsy      exact Set.notMem_empty s (hpDisj ▸ hsP, hsS)    simpa [K] using le_antisymm hNleK hKleN  · intro hN    subst hN    refine associatedPrimes_ker_mkLinearMap_eq (S := S), ?_    refine le_antisymm ?_ (disjoint_associatedPrimes_subset_associatedPrimes_quot_ker_mkLinearMap      (S := S))    intro p hp    refine ?_, associatedPrimes_quot_ker_mkLinearMap_subset_disjoint (S := S) hp    exact mem_associatedPrimes_of_mem_associatedPrimes_quot_ker_mkLinearMap_of_disjoint      (S := S) hp <| associatedPrimes_quot_ker_mkLinearMap_subset_disjoint (S := S) hp
Project
Harder-Narasimhan
License
Apache-2.0
Commit
20220e90b72c
Source
HarderNarasimhan/CoprimaryFiltration/CommutativeAlgebra.lean:324-435

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.31.0

Associated Primes ker mk Linear Map eq

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_ker_mkLinearMap_eq

Project documentation

Associated primes of the kernel of the localization map. This identifies the associated primes of ker (LocalizedModule.mkLinearMap S M) : Submodule R M with the associated primes of M that do meet the multiplicative set S. Equivalently, these are the associated primes of M after removing those disjoint from S. This lemma is used as the “kernel...

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Associated Primes ker mk Linear Map subset

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_ker_mkLinearMap_subset

Plain-language statement

One-sided inclusion for associated primes of the kernel of the localization map. If p ∈ associatedPrimes R (ker (mkLinearMap S M)), then p is an associated prime of M and p is not disjoint from the multiplicative set S. This is one direction of associatedPrimes_ker_mkLinearMap_eq.

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Associated Primes localized Module subset disjoint

HarderNarasimhan.CommutativeAlgebra.associatedPrimes_localizedModule_subset_disjoint

Plain-language statement

Associated primes of a localized module are disjoint from the multiplicative set. More precisely, if p ∈ associatedPrimes R (LocalizedModule S M), then p.carrier ∩ S = ∅. This is a standard fact in commutative algebra: an element of S becomes a unit after localization, so no associated prime of the localized module can contain an element of S.

algebraic geometryvector bundlescategory theory

Source project: Harder-Narasimhan

Person-level attribution pending.

View proof record