Theorem: IsAssociatedPrime.eq_radical
File: Mathlib/RingTheory/Ideal/AssociatedPrime.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
h : IsAssociatedPrime J (R ⧸ I)
⊢ J = I.radical
state_after: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R ⧸ I
e : J = (Submodule.span R {x}).annihilator
⊢ J = I.radical
tactic: obtain ⟨hJ, x, e⟩ := h
state_before: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R ⧸ I
e : J = (Submodule.span R {x}).annihilator
⊢ J = I.radical
state_after: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R ⧸ I
e : J = (Submodule.span R {x}).annihilator
this : x ≠ 0
⊢ J = I.radical
tactic: have : x ≠ 0 := by
    rintro rfl
    apply hJ.1
    rwa [Submodule.span_singleton_eq_bot.mpr rfl, Submodule.annihilator_bot] at e
state_before: case intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R ⧸ I
e : J = (Submodule.span R {x}).annihilator
this : x ≠ 0
⊢ J = I.radical
state_after: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
e : J = (Submodule.span R {(Ideal.Quotient.mkₐ R I) x}).annihilator
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
⊢ J = I.radical
tactic: obtain ⟨x, rfl⟩ := Ideal.Quotient.mkₐ_surjective R _ x
state_before: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
e : J = (Submodule.span R {(Ideal.Quotient.mkₐ R I) x}).annihilator
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
⊢ J = I.radical
state_after: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
e : ∀ {y : R}, y ∈ J ↔ x * y ∈ I
⊢ J = I.radical
tactic: replace e : ∀ {y}, y ∈ J ↔ x * y ∈ I := by
    intro y
    rw [e, Submodule.mem_annihilator_span_singleton, ← map_smul, smul_eq_mul, mul_comm,
      Ideal.Quotient.mkₐ_eq_mk, ← Ideal.Quotient.mk_eq_mk, Submodule.Quotient.mk_eq_zero]
state_before: case intro.intro.intro
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
e : ∀ {y : R}, y ∈ J ↔ x * y ∈ I
⊢ J = I.radical
state_after: case intro.intro.intro.a
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
e : ∀ {y : R}, y ∈ J ↔ x * y ∈ I
⊢ J ≤ I.radical

case intro.intro.intro.a
R : Type u_1
inst✝⁴ : CommRing R
I J : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommGroup M'
inst✝ : Module R M'
f : M →ₗ[R] M'
hI : I.IsPrimary
hJ : J.IsPrime
x : R
this : (Ideal.Quotient.mkₐ R I) x ≠ 0
e : ∀ {y : R}, y ∈ J ↔ x * y ∈ I
⊢ I.radical ≤ J
tactic: apply le_antisymm