Support of a module #
Main results #
Module.support: The support of anR-module as a subset ofSpec R.Module.mem_support_iff_exists_annihilator:p ∈ Supp M ↔ ∃ m, Ann(m) ≤ p.Module.support_eq_empty_iff:Supp M = ∅ ↔ M = 0Module.support_of_exact:Supp N = Supp M ∪ Supp Pfor an exact sequence0 → M → N → P → 0.Module.support_eq_zeroLocus: IfMisR-finite, thenSupp M = Z(Ann(M)).LocalizedModule.exists_subsingleton_away: IfMisR-finite andMₚ = 0, thenM[1/f] = 0for somep ∈ D(f).
Also see Mathlib/RingTheory/Spectrum/Prime/Module.lean for other results
depending on the Zariski topology.
TODO #
- Connect to associated primes once we have them in mathlib.
- Given an
R-algebraf : R → Aand a finiteR-moduleM,Supp_A (A ⊗ M) = f♯ ⁻¹ Supp Mwheref♯ : Spec A → Spec R. (stacks#0BUR)
def
Module.support
(R : Type u_1)
(M : Type u_2)
[CommRing R]
[AddCommGroup M]
[Module R M]
:
Set (PrimeSpectrum R)
The support of a module, defined as the set of primes p such that Mₚ ≠ 0.
Equations
- Module.support R M = {p : PrimeSpectrum R | Nontrivial (LocalizedModule p.asIdeal.primeCompl M)}
Instances For
theorem
Module.mem_support_iff
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
theorem
Module.notMem_support_iff
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
@[deprecated Module.notMem_support_iff (since := "2025-05-23")]
theorem
Module.not_mem_support_iff
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
Alias of Module.notMem_support_iff.
theorem
Module.notMem_support_iff'
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
@[deprecated Module.notMem_support_iff' (since := "2025-05-23")]
theorem
Module.not_mem_support_iff'
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
Alias of Module.notMem_support_iff'.
theorem
Module.mem_support_iff'
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
theorem
Module.mem_support_iff_exists_annihilator
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
:
theorem
Module.mem_support_mono
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p q : PrimeSpectrum R}
(H : p ≤ q)
(hp : p ∈ support R M)
:
theorem
Module.mem_support_iff_of_span_eq_top
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
{s : Set M}
(hs : Submodule.span R s = ⊤)
:
theorem
Module.annihilator_le_of_mem_support
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
(hp : p ∈ support R M)
:
theorem
LocalizedModule.subsingleton_iff_support_subset
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{f : R}
:
theorem
Module.support_eq_empty_iff
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
:
theorem
Module.nonempty_support_iff
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
:
theorem
Module.support_eq_empty
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
[Subsingleton M]
:
theorem
Module.support_of_noZeroSMulDivisors
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
[NoZeroSMulDivisors R M]
[Nontrivial M]
:
theorem
Module.support_subset_of_injective
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
(f : M →ₗ[R] N)
(hf : Function.Injective ⇑f)
:
Stacks Tag 00L3 ((2))
theorem
Module.support_subset_of_surjective
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
(f : M →ₗ[R] N)
(hf : Function.Surjective ⇑f)
:
Stacks Tag 00L3 ((3))
theorem
Module.support_of_exact
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{N : Type u_3}
{P : Type u_4}
[AddCommGroup N]
[Module R N]
[AddCommGroup P]
[Module R P]
{f : M →ₗ[R] N}
{g : N →ₗ[R] P}
(h : Function.Exact ⇑f ⇑g)
(hf : Function.Injective ⇑f)
(hg : Function.Surjective ⇑g)
:
Given an exact sequence 0 → M → N → P → 0 of R-modules, Supp N = Supp M ∪ Supp P.
Stacks Tag 00L3 ((4))
theorem
LinearEquiv.support_eq
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{N : Type u_3}
[AddCommGroup N]
[Module R N]
(e : M ≃ₗ[R] N)
:
theorem
Module.mem_support_iff_of_finite
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
{p : PrimeSpectrum R}
[Module.Finite R M]
:
theorem
Module.support_eq_zeroLocus
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
[Module.Finite R M]
:
If M is R-finite, then Supp M = Z(Ann(M)).
theorem
LocalizedModule.exists_subsingleton_away
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
[Module.Finite R M]
(p : Ideal R)
[p.IsPrime]
[Subsingleton (LocalizedModule p.primeCompl M)]
:
∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
If M is a finite module such that Mₚ = 0 for some p,
then M[1/f] = 0 for some p ∈ D(f).
theorem
Module.support_quotient
{R : Type u_1}
{M : Type u_2}
[CommRing R]
[AddCommGroup M]
[Module R M]
[Module.Finite R M]
(I : Ideal R)
:
Supp(M/IM) = Supp(M) ∩ Z(I).
Stacks Tag 00L3 ((1))