Theorem: Ideal.eq_prime_pow_of_succ_lt_of_le
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: have := Classical.decEq (Ideal A)
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
⊢ I = P ^ i

tactic: refine le_antisymm hle ?_
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this : DecidableEq (Ideal A)
⊢ I = P ^ i

tactic: have P_prime' := Ideal.prime_of_isPrime hP P_prime
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this : DecidableEq (Ideal A)
⊢ P ^ i ≤ I

tactic: have h1 : I ≠ ⊥ := (lt_of_le_of_lt bot_le hlt).ne'
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this : DecidableEq (Ideal A)
P_prime' : Prime P
⊢ P ^ i ≤ I

tactic: have := pow_ne_zero i hP
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this : DecidableEq (Ideal A)
P_prime' : Prime P
h1 : I ≠ ⊥
⊢ P ^ i ≤ I

tactic: have h3 := pow_ne_zero (i + 1) hP
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
⊢ P ^ i ≤ I

tactic: rw [← Ideal.dvdNotUnit_iff_lt, dvdNotUnit_iff_normalizedFactors_lt_normalizedFactors h1 h3,
  normalizedFactors_pow, normalizedFactors_irreducible P_prime'.irreducible,
  Multiset.nsmul_singleton, Multiset.lt_replicate_succ] at hlt
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ P ^ i ≤ I

tactic: rw [← Ideal.dvd_iff_le, dvd_iff_normalizedFactors_le_normalizedFactors, normalizedFactors_pow,
  normalizedFactors_irreducible P_prime'.irreducible, Multiset.nsmul_singleton]
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt✝ : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
hlt : normalizedFactors I ≤ Multiset.replicate i (↑normalize P)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ P ^ i ≤ I

tactic: all_goals assumption
state_before: R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt✝ : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
hlt : normalizedFactors I ≤ Multiset.replicate i (↑normalize P)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ normalizedFactors I ≤ Multiset.replicate i (↑normalize P)

case hx
R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt✝ : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
hlt : normalizedFactors I ≤ Multiset.replicate i (↑normalize P)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ I ≠ 0

case hy
R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt✝ : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
hlt : normalizedFactors I ≤ Multiset.replicate i (↑normalize P)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ P ^ i ≠ 0

tactic: assumption
state_before: case hy
R : Type ?u.810058
A : Type u_1
K : Type ?u.810064
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
P I : Ideal A
P_prime : IsPrime P
hP : P ≠ ⊥
i : ℕ
hlt✝ : P ^ (i + 1) < I
hle : I ≤ P ^ i
this✝ : DecidableEq (Ideal A)
hlt : normalizedFactors I ≤ Multiset.replicate i (↑normalize P)
P_prime' : Prime P
h1 : I ≠ ⊥
this : P ^ i ≠ 0
h3 : P ^ (i + 1) ≠ 0
⊢ P ^ i ≠ 0