Theorem: AlgebraicGeometry.isNoetherianRing_of_away
File: Mathlib/AlgebraicGeometry/Noetherian.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
⊢ IsNoetherianRing R
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
⊢ ∀ (f : ℕ →o Submodule R R), ∃ n, ∀ (m : ℕ), n ≤ m → f n = f m
tactic: apply monotone_stabilizes_iff_noetherian.mp
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
⊢ ∀ (f : ℕ →o Submodule R R), ∃ n, ∀ (m : ℕ), n ≤ m → f n = f m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: intro I
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: let floc s := algebraMap R (Away (M := R) s)
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: let suitableN s :=
    { n : ℕ | ∀ m : ℕ, n ≤ m → (Ideal.map (floc s) (I n)) = (Ideal.map (floc s) (I m)) }
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: let minN s := sInf (suitableN s)
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: have hSuit : ∀ s : S, minN s ∈ suitableN s := by
    intro s
    apply Nat.sInf_mem
    let f : ℕ →o Ideal (Away (M := R) s) :=
      ⟨fun n ↦ Ideal.map (floc s) (I n), fun _ _ h ↦ Ideal.map_mono (I.monotone h)⟩
    exact monotone_stabilizes_iff_noetherian.mpr (hN s) f
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
tactic: let N := Finset.sup S minN
state_before: R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
⊢ ∃ n, ∀ (m : ℕ), n ≤ m → I n = I m
state_after: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
⊢ ∀ (m : ℕ), N ≤ m → I N = I m
tactic: use N
state_before: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
⊢ ∀ (m : ℕ), N ≤ m → I N = I m
state_after: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
⊢ ∀ (m : ℕ), N ≤ m → I N = I m
tactic: have hN : ∀ s : S, minN s ≤ N := fun s => Finset.le_sup s.prop
state_before: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
⊢ ∀ (m : ℕ), N ≤ m → I N = I m
state_after: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ I N = I n
tactic: intro n hn
state_before: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ I N = I n
state_after: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ ⨅ x, Ideal.comap (algebraMap R (Localization.Away ↑x)) (Ideal.map (algebraMap R (Localization.Away ↑x)) (I N)) =
    ⨅ x, Ideal.comap (algebraMap R (Localization.Away ↑x)) (Ideal.map (algebraMap R (Localization.Away ↑x)) (I n))
tactic: rw [IsLocalization.ideal_eq_iInf_comap_map_away hS (I N),
      IsLocalization.ideal_eq_iInf_comap_map_away hS (I n),
      iInf_subtype', iInf_subtype']
state_before: case h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ ⨅ x, Ideal.comap (algebraMap R (Localization.Away ↑x)) (Ideal.map (algebraMap R (Localization.Away ↑x)) (I N)) =
    ⨅ x, Ideal.comap (algebraMap R (Localization.Away ↑x)) (Ideal.map (algebraMap R (Localization.Away ↑x)) (I n))
state_after: case h.h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ ∀ (i : { f // f ∈ S }),
    Ideal.comap (algebraMap R (Localization.Away ↑i)) (Ideal.map (algebraMap R (Localization.Away ↑i)) (I N)) =
      Ideal.comap (algebraMap R (Localization.Away ↑i)) (Ideal.map (algebraMap R (Localization.Away ↑i)) (I n))
tactic: apply iInf_congr
state_before: case h.h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
⊢ ∀ (i : { f // f ∈ S }),
    Ideal.comap (algebraMap R (Localization.Away ↑i)) (Ideal.map (algebraMap R (Localization.Away ↑i)) (I N)) =
      Ideal.comap (algebraMap R (Localization.Away ↑i)) (Ideal.map (algebraMap R (Localization.Away ↑i)) (I n))
state_after: case h.h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.comap (algebraMap R (Localization.Away ↑s)) (Ideal.map (algebraMap R (Localization.Away ↑s)) (I N)) =
    Ideal.comap (algebraMap R (Localization.Away ↑s)) (Ideal.map (algebraMap R (Localization.Away ↑s)) (I n))
tactic: intro s
state_before: case h.h
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.comap (algebraMap R (Localization.Away ↑s)) (Ideal.map (algebraMap R (Localization.Away ↑s)) (I N)) =
    Ideal.comap (algebraMap R (Localization.Away ↑s)) (Ideal.map (algebraMap R (Localization.Away ↑s)) (I n))
state_after: case h.h.e_I
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.map (algebraMap R (Localization.Away ↑s)) (I N) = Ideal.map (algebraMap R (Localization.Away ↑s)) (I n)
tactic: congr 1
state_before: case h.h.e_I
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.map (algebraMap R (Localization.Away ↑s)) (I N) = Ideal.map (algebraMap R (Localization.Away ↑s)) (I n)
state_after: case h.h.e_I
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.map (floc ↑s) (I (minN ↑s)) = Ideal.map (algebraMap R (Localization.Away ↑s)) (I n)
tactic: rw [← hSuit s N (hN s)]
state_before: case h.h.e_I
R : Type u
inst✝ : CommRing R
S : Finset R
hS : Ideal.span ↑S = ⊤
hN✝ : ∀ (s : { x // x ∈ S }), IsNoetherianRing (Localization.Away ↑s)
I : ℕ →o Submodule R R
floc : (s : R) → R →+* Localization.Away s := fun s => algebraMap R (Localization.Away s)
suitableN : R → Set ℕ := fun s => {n | ∀ (m : ℕ), n ≤ m → Ideal.map (floc s) (I n) = Ideal.map (floc s) (I m)}
minN : R → ℕ := fun s => sInf (suitableN s)
hSuit : ∀ (s : { x // x ∈ S }), minN ↑s ∈ suitableN ↑s
N : ℕ := S.sup minN
hN : ∀ (s : { x // x ∈ S }), minN ↑s ≤ N
n : ℕ
hn : N ≤ n
s : { f // f ∈ S }
⊢ Ideal.map (floc ↑s) (I (minN ↑s)) = Ideal.map (algebraMap R (Localization.Away ↑s)) (I n)
state_after: no goals
tactic: exact hSuit s n <| Nat.le_trans (hN s) hn