Theorem: Associates.finprod_ne_zero
File: Mathlib/RingTheory/DedekindDomain/Factorization.lean

tactic: rw [Associates.mk_ne_zero, finprod_def]
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
⊢ Associates.mk (∏ᶠ (v : HeightOneSpectrum R), v.maxPowDividing I) ≠ 0
state_after: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
⊢ (if h : (mulSupport fun v => v.maxPowDividing I).Finite then ∏ i ∈ h.toFinset, i.maxPowDividing I else 1) ≠ 0

tactic: split_ifs
state_before: R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
⊢ (if h : (mulSupport fun v => v.maxPowDividing I).Finite then ∏ i ∈ h.toFinset, i.maxPowDividing I else 1) ≠ 0
state_after: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
⊢ ∏ v ∈ h✝.toFinset, v.maxPowDividing I ≠ 0

case neg
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : ¬(mulSupport fun v => v.maxPowDividing I).Finite
⊢ 1 ≠ 0

tactic: rw [Finset.prod_ne_zero_iff]
state_before: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
⊢ ∏ v ∈ h✝.toFinset, v.maxPowDividing I ≠ 0
state_after: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
⊢ ∀ a ∈ h✝.toFinset, a.maxPowDividing I ≠ 0

tactic: intro v _
state_before: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
⊢ ∀ a ∈ h✝.toFinset, a.maxPowDividing I ≠ 0
state_after: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v✝ : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
v : HeightOneSpectrum R
a✝ : v ∈ h✝.toFinset
⊢ v.maxPowDividing I ≠ 0

tactic: apply pow_ne_zero _ v.ne_bot
state_before: case pos
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v✝ : HeightOneSpectrum R
I : Ideal R
h✝ : (mulSupport fun v => v.maxPowDividing I).Finite
v : HeightOneSpectrum R
a✝ : v ∈ h✝.toFinset
⊢ v.maxPowDividing I ≠ 0
state_after: no goals

tactic: exact one_ne_zero
state_before: case neg
R : Type u_1
inst✝⁴ : CommRing R
K : Type u_2
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
inst✝ : IsDedekindDomain R
v : HeightOneSpectrum R
I : Ideal R
h✝ : ¬(mulSupport fun v => v.maxPowDividing I).Finite
⊢ 1 ≠ 0
state_after: no goals