Theorem: Ideal.iInf_pow_eq_bot_of_isDomain
File: Mathlib/RingTheory/Filtration.lean

Proof steps:
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
⊢ ⨅ i, I ^ i = ⊥
state_after: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
⊢ ⨅ i, I ^ i ≤ ⊥
tactic: rw [eq_bot_iff]
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
⊢ ⨅ i, I ^ i ≤ ⊥
state_after: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
⊢ x ∈ ⊥
tactic: intro x hx
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
⊢ x ∈ ⊥
state_after: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
⊢ False
tactic: by_contra hx'
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
⊢ False
state_after: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i • ⊤ ↔ ∃ r, ↑r • x = x
⊢ False
tactic: have := Ideal.mem_iInf_smul_pow_eq_bot_iff I x
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i • ⊤ ↔ ∃ r, ↑r • x = x
⊢ False
state_after: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
⊢ False
tactic: simp_rw [smul_eq_mul, ← Ideal.one_eq_top, mul_one] at this
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
⊢ False
state_after: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
r : ↥I
hr : ↑r * x = x
⊢ False
tactic: obtain ⟨r, hr⟩ := this.mp hx
state_before: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
r : ↥I
hr : ↑r * x = x
⊢ False
state_after: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this✝ : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
r : ↥I
hr : ↑r * x = x
this : ↑r = 1
⊢ False
tactic: have := mul_right_cancel₀ hx' (hr.trans (one_mul x).symm)
state_before: case intro
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : IsDomain R
h : I ≠ ⊤
x : R
hx : x ∈ ⨅ i, I ^ i
hx' : x ∉ ⊥
this✝ : x ∈ ⨅ i, I ^ i ↔ ∃ r, ↑r * x = x
r : ↥I
hr : ↑r * x = x
this : ↑r = 1
⊢ False
state_after: no goals
tactic: exact I.eq_top_iff_one.not.mp h (this ▸ r.prop)