Theorem: LocalizedModule.exists_subsingleton_away
File: Mathlib/RingTheory/Support.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
state_after: R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
this : { asIdeal := p, isPrime := ⋯ } ∈ (Module.support R M)ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
tactic: have : ⟨p, inferInstance⟩ ∈ (Module.support R M)ᶜ := by
    simpa [Module.not_mem_support_iff]
state_before: R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
this : { asIdeal := p, isPrime := ⋯ } ∈ (Module.support R M)ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
state_after: R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
this : ∃ i, ∃ (_ : i ∈ ↑(Module.annihilator R M)), { asIdeal := p, isPrime := ⋯ } ∈ (PrimeSpectrum.zeroLocus {i})ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
tactic: rw [Module.support_eq_zeroLocus, ← Set.biUnion_of_singleton (Module.annihilator R M : Set R),
    PrimeSpectrum.zeroLocus_iUnion₂, Set.compl_iInter₂, Set.mem_iUnion₂] at this
state_before: R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
this : ∃ i, ∃ (_ : i ∈ ↑(Module.annihilator R M)), { asIdeal := p, isPrime := ⋯ } ∈ (PrimeSpectrum.zeroLocus {i})ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
state_after: case intro.intro
R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f✝ : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
f : R
hf : f ∈ ↑(Module.annihilator R M)
hf' : { asIdeal := p, isPrime := ⋯ } ∈ (PrimeSpectrum.zeroLocus {f})ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
tactic: obtain ⟨f, hf, hf'⟩ := this
state_before: case intro.intro
R : Type u_1
M : Type u_2
inst✝⁹ : CommRing R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
p✝ : PrimeSpectrum R
N : Type u_3
P : Type u_4
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
inst✝⁴ : AddCommGroup P
inst✝³ : Module R P
f✝ : M →ₗ[R] N
g : N →ₗ[R] P
inst✝² : Module.Finite R M
p : Ideal R
inst✝¹ : p.IsPrime
inst✝ : Subsingleton (LocalizedModule p.primeCompl M)
f : R
hf : f ∈ ↑(Module.annihilator R M)
hf' : { asIdeal := p, isPrime := ⋯ } ∈ (PrimeSpectrum.zeroLocus {f})ᶜ
⊢ ∃ f ∉ p, Subsingleton (LocalizedModule (Submonoid.powers f) M)
state_after: no goals
tactic: exact ⟨f, by simpa using hf', subsingleton_iff.mpr
    fun m ↦ ⟨f, Submonoid.mem_powers f, Module.mem_annihilator.mp hf _⟩⟩