Module

ArtinianSecondaryAnnihilator.lean

Nyll.EtaleFundamentalGroups.Purity.ArtinianSecondaryAnnihilator
3 declarations indexed from sourceView source ↗

Prime annihilators of secondary modules

For a secondary module, a scalar acts surjectively exactly when it lies outside the radical of the annihilator. That radical is prime: after cancelling a surjective scalar power, a product that kills the module forces the other scalar power to kill it. These prime ideals are the finite avoidance conditions in the Artinian parameter-choice argument.

Imports4
Imported by2

Declarations

EtaleFundamentalGroups.Purity.surjective_pow_smul_of_surjective_smul
Source context 4 commands

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

noncomputable section
namespace EtaleFundamentalGroups.Purity
universe u v
variable {R : Type u} [CommRing R]
  {M : Type v} [AddCommGroup M] [Module R M]
theorem surjective_pow_smul_of_surjective_smul
    (r : R) (hr : Function.Surjective (fun z : M => r • z)) (n : ℕ) :
    Function.Surjective (fun z : M => r ^ n • z) := by
  induction n with
  | zero =>
      intro z
      exact ⟨z, by simp only [pow_zero, one_smul]⟩
  | succ n ih =>
      intro z
      obtain ⟨w, hw⟩ := hr z
      obtain ⟨v, hv⟩ := ih w
      exact ⟨v, by simpa only [pow_succ', mul_smul, hv] using hw⟩
EtaleFundamentalGroups.Purity.IsSecondaryModule.surjective_smul_iff

On a nonzero secondary module, precisely the scalars outside the radical annihilator act surjectively.

Source context 4 commands

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

noncomputable section
namespace EtaleFundamentalGroups.Purity
universe u v
variable {R : Type u} [CommRing R]
  {M : Type v} [AddCommGroup M] [Module R M]
theorem IsSecondaryModule.surjective_smul_iff
    (hM : IsSecondaryModule R M) (r : R) :
    Function.Surjective (fun z : M => r • z) ↔
      r ∉ (Module.annihilator R M).radical := by
  let : Nontrivial M := hM.1
  constructor
  · intro hr hmem
    obtain ⟨n, hn⟩ := hmem
    obtain ⟨z, hz⟩ := exists_ne (0 : M)
    obtain ⟨w, hw⟩ := surjective_pow_smul_of_surjective_smul r hr n z
    exact hz (hw.symm.trans (Module.mem_annihilator.mp hn w))
  · intro hr
    rcases hM.2 r with hsurj | ⟨n, hn⟩
    · exact hsurj
    · exact False.elim (hr ⟨n, Module.mem_annihilator.mpr hn⟩)
EtaleFundamentalGroups.Purity.IsSecondaryModule.radical_annihilator_isPrime

The radical of the annihilator of a nonzero secondary module is a prime ideal. No finiteness assumption on the module is needed.

Source context 4 commands

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

noncomputable section
namespace EtaleFundamentalGroups.Purity
universe u v
variable {R : Type u} [CommRing R]
  {M : Type v} [AddCommGroup M] [Module R M]
theorem IsSecondaryModule.radical_annihilator_isPrime
    (hM : IsSecondaryModule R M) :
    (Module.annihilator R M).radical.IsPrime