Theorem: normalizeScaleRoots_support
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: intro x
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x : S
⊢ (normalizeScaleRoots p).support ≤ p.support
state_after: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ x ∈ (normalizeScaleRoots p).support → x ∈ p.support

tactic: contrapose
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ x ∈ (normalizeScaleRoots p).support → x ∈ p.support
state_after: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ x ∉ p.support → x ∉ (normalizeScaleRoots p).support

tactic: simp only [not_mem_support_iff, normalizeScaleRoots, finset_sum_coeff, coeff_monomial,
  Finset.sum_ite_eq', mem_support_iff, Ne, Classical.not_not, ite_eq_right_iff]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ x ∉ p.support → x ∉ (normalizeScaleRoots p).support
state_after: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ p.coeff x = 0 →
    ¬p.coeff x = 0 → (if x = p.natDegree then 1 else p.coeff x * p.leadingCoeff ^ (p.natDegree - 1 - x)) = 0

tactic: intro h₁ h₂
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
⊢ p.coeff x = 0 →
    ¬p.coeff x = 0 → (if x = p.natDegree then 1 else p.coeff x * p.leadingCoeff ^ (p.natDegree - 1 - x)) = 0
state_after: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
h₁ : p.coeff x = 0
h₂ : ¬p.coeff x = 0
⊢ (if x = p.natDegree then 1 else p.coeff x * p.leadingCoeff ^ (p.natDegree - 1 - x)) = 0

tactic: exact (h₂ h₁).elim
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Ring B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
p : R[X]
x✝ : S
x : ℕ
h₁ : p.coeff x = 0
h₂ : ¬p.coeff x = 0
⊢ (if x = p.natDegree then 1 else p.coeff x * p.leadingCoeff ^ (p.natDegree - 1 - x)) = 0
state_after: no goals