Theorem: isReduced_ofLocalizationMaximal
File: Mathlib/RingTheory/LocalProperties.lean

Proof steps:
state_before: R S : Type u
inst✝⁵ : CommRing R
inst✝⁴ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝³ : CommRing R'
inst✝² : CommRing S'
f : R →+* S
inst✝¹ : Algebra R R'
inst✝ : Algebra S S'
⊢ OfLocalizationMaximal fun R hR => IsReduced R
state_after: R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
⊢ IsReduced R
tactic: introv R h
state_before: R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
⊢ IsReduced R
state_after: case eq_zero
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
⊢ ∀ (x : R), IsNilpotent x → x = 0
tactic: constructor
state_before: case eq_zero
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
⊢ ∀ (x : R), IsNilpotent x → x = 0
state_after: case eq_zero
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
⊢ x = 0
tactic: intro x hx
state_before: case eq_zero
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
⊢ x = 0
state_after: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
⊢ ∀ (J : Ideal R) (hJ : J.IsMaximal), (algebraMap R (Localization.AtPrime J)) x = 0
tactic: apply eq_zero_of_localization
state_before: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
⊢ ∀ (J : Ideal R) (hJ : J.IsMaximal), (algebraMap R (Localization.AtPrime J)) x = 0
state_after: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
J : Ideal R
hJ : J.IsMaximal
⊢ (algebraMap R (Localization.AtPrime J)) x = 0
tactic: intro J hJ
state_before: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
h : ∀ (J : Ideal R) (x : J.IsMaximal), (fun R hR => IsReduced R) (Localization.AtPrime J) OreLocalization.instCommRing
x : R
hx : IsNilpotent x
J : Ideal R
hJ : J.IsMaximal
⊢ (algebraMap R (Localization.AtPrime J)) x = 0
state_after: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
x : R
hx : IsNilpotent x
J : Ideal R
hJ : J.IsMaximal
h : IsReduced (Localization.AtPrime J)
⊢ (algebraMap R (Localization.AtPrime J)) x = 0
tactic: specialize h J hJ
state_before: case eq_zero.h
R✝ S : Type u
inst✝⁶ : CommRing R✝
inst✝⁵ : CommRing S
M : Submonoid R✝
N : Submonoid S
R' S' : Type u
inst✝⁴ : CommRing R'
inst✝³ : CommRing S'
f : R✝ →+* S
inst✝² : Algebra R✝ R'
inst✝¹ : Algebra S S'
R : Type u_1
inst✝ : CommRing R
x : R
hx : IsNilpotent x
J : Ideal R
hJ : J.IsMaximal
h : IsReduced (Localization.AtPrime J)
⊢ (algebraMap R (Localization.AtPrime J)) x = 0
state_after: no goals
tactic: exact (hx.map <| algebraMap R <| Localization.AtPrime J).eq_zero