Theorem: FractionalIdeal.coe_ideal_mul_inv
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: apply mul_inv_cancel_of_le_one hI0
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
⊢ ↑I * (↑I)⁻¹ = 1

tactic: by_cases hJ0 : I * (I : FractionalIdeal A⁰ K)⁻¹  = 0
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
⊢ (↑I * (↑I)⁻¹)⁻¹ ≤ 1

tactic: intro x hx
state_before: case neg
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
⊢ (↑I * (↑I)⁻¹)⁻¹ ≤ 1

tactic: suffices x ∈ integralClosure A K by
  rwa [IsIntegrallyClosed.integralClosure_eq_bot, Algebra.mem_bot, Set.mem_range,
    ← mem_one_iff] at this
state_before: case neg
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
⊢ x ∈ (fun a => ↑a) 1

tactic: rw [mem_integralClosure_iff_mem_FG]
state_before: case neg
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
⊢ x ∈ integralClosure A K

tactic: refine ⟨AlgHom.range (Polynomial.aeval x : A[X] →ₐ[A] K),
  isNoetherian_submodule.mp (isNoetherian (I : FractionalIdeal A⁰ K)⁻¹) _ fun y hy => ?_,
  ⟨Polynomial.X, Polynomial.aeval_X x⟩⟩
state_before: case neg
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
⊢ ∃ M, Submodule.FG (↑Subalgebra.toSubmodule M) ∧ x ∈ M

tactic: obtain ⟨p, rfl⟩ := (AlgHom.mem_range _).mp hy
state_before: case neg
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
y : K
hy : y ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
⊢ y ∈ ↑(↑I)⁻¹

tactic: rw [Polynomial.aeval_eq_sum_range]
state_before: case neg.intro
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
⊢ ↑(Polynomial.aeval x) p ∈ ↑(↑I)⁻¹

tactic: refine Submodule.sum_mem _ fun i hi => Submodule.smul_mem _ _ ?_
state_before: case neg.intro
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
⊢ (Finset.sum (Finset.range (Polynomial.natDegree p + 1)) fun i => Polynomial.coeff p i • x ^ i) ∈ ↑(↑I)⁻¹

tactic: clear hi
state_before: case neg.intro
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
i : ℕ
hi : i ∈ Finset.range (Polynomial.natDegree p + 1)
⊢ x ^ i ∈ ↑(↑I)⁻¹

tactic: induction' i with i ih
state_before: case neg.intro
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
i : ℕ
⊢ x ^ i ∈ ↑(↑I)⁻¹

tactic: rw [hJ0, inv_zero']
state_before: case pos
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ↑I * (↑I)⁻¹ = 0
⊢ (↑I * (↑I)⁻¹)⁻¹ ≤ 1

tactic: exact zero_le _
state_before: case pos
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ↑I * (↑I)⁻¹ = 0
⊢ 0 ≤ 1

tactic: rwa [IsIntegrallyClosed.integralClosure_eq_bot, Algebra.mem_bot, Set.mem_range,
  ← mem_one_iff] at this
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
this : x ∈ integralClosure A K
⊢ x ∈ (fun a => ↑a) 1

tactic: intro b hb
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
⊢ ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹

tactic: rw [mem_inv_iff]
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ x * b ∈ (↑I)⁻¹

tactic: dsimp only at hx
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * b * y ∈ 1

case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I ≠ 0

tactic: rw [val_eq_coe, mem_coe, mem_inv_iff] at hx
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ ↑(↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * b * y ∈ 1

case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I ≠ 0

tactic: swap
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : ∀ (y : K), y ∈ ↑I * (↑I)⁻¹ → x * y ∈ 1
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * b * y ∈ 1

case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I * (↑I)⁻¹ ≠ 0

case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I ≠ 0

tactic: swap
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : ∀ (y : K), y ∈ ↑I * (↑I)⁻¹ → x * y ∈ 1
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * b * y ∈ 1

case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I ≠ 0

tactic: simp only [mul_assoc, mul_comm b] at hx ⊢
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : ∀ (y : K), y ∈ ↑I * (↑I)⁻¹ → x * y ∈ 1
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * b * y ∈ 1

tactic: intro y hy
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : ∀ (y : K), y ∈ ↑I * (↑I)⁻¹ → x * y ∈ 1
b : K
hb : b ∈ (↑I)⁻¹
⊢ ∀ (y : K), y ∈ ↑I → x * (y * b) ∈ 1

tactic: exact hx _ (mul_mem_mul hy hb)
state_before: R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : ∀ (y : K), y ∈ ↑I * (↑I)⁻¹ → x * y ∈ 1
b : K
hb : b ∈ (↑I)⁻¹
y : K
hy : y ∈ ↑I
⊢ x * (y * b) ∈ 1

tactic: exact hJ0
state_before: case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I * (↑I)⁻¹ ≠ 0

tactic: exact coeIdeal_ne_zero.mpr hI0
state_before: case hI
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
b : K
hb : b ∈ (↑I)⁻¹
⊢ ↑I ≠ 0

tactic: rw [pow_zero]
state_before: case neg.intro.zero
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
⊢ x ^ Nat.zero ∈ ↑(↑I)⁻¹

tactic: exact one_mem_inv_coe_ideal hI0
state_before: case neg.intro.zero
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
⊢ 1 ∈ ↑(↑I)⁻¹

tactic: show x ^ i.succ ∈ (I⁻¹ : FractionalIdeal A⁰ K)
state_before: case neg.intro.succ
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
i : ℕ
ih : x ^ i ∈ ↑(↑I)⁻¹
⊢ x ^ Nat.succ i ∈ ↑(↑I)⁻¹

tactic: rw [pow_succ]
state_before: case neg.intro.succ
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
i : ℕ
ih : x ^ i ∈ ↑(↑I)⁻¹
⊢ x ^ Nat.succ i ∈ (↑I)⁻¹

tactic: exact x_mul_mem _ ih
state_before: case neg.intro.succ
R : Type ?u.444206
A : Type u_1
K : Type u_2
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
h : IsDedekindDomain A
I : Ideal A
hI0 : I ≠ ⊥
hJ0 : ¬↑I * (↑I)⁻¹ = 0
x : K
hx : x ∈ (fun a => ↑a) (↑I * (↑I)⁻¹)⁻¹
x_mul_mem : ∀ (b : K), b ∈ (↑I)⁻¹ → x * b ∈ (↑I)⁻¹
p : A[X]
hy : ↑(Polynomial.aeval x) p ∈ ↑Subalgebra.toSubmodule (AlgHom.range (Polynomial.aeval x))
i : ℕ
ih : x ^ i ∈ ↑(↑I)⁻¹
⊢ x * x ^ i ∈ (↑I)⁻¹