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

tactic: simp only [normalizeScaleRoots, finset_sum_coeff, coeff_monomial, Finset.sum_ite_eq', one_mul,
  zero_mul, mem_support_iff, ite_mul, Ne, ite_not]
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
i : ℕ
hp : 1 ≤ p.natDegree
⊢ (normalizeScaleRoots p).coeff i * p.leadingCoeff ^ i = p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)
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
i : ℕ
hp : 1 ≤ p.natDegree
⊢ (if p.coeff i = 0 then 0
    else
      if i = p.natDegree then p.leadingCoeff ^ i
      else p.coeff i * p.leadingCoeff ^ (p.natDegree - 1 - i) * p.leadingCoeff ^ i) =
    p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)

tactic: split_ifs with 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
i : ℕ
hp : 1 ≤ p.natDegree
⊢ (if p.coeff i = 0 then 0
    else
      if i = p.natDegree then p.leadingCoeff ^ i
      else p.coeff i * p.leadingCoeff ^ (p.natDegree - 1 - i) * p.leadingCoeff ^ i) =
    p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)
state_after: case pos
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : p.coeff i = 0
⊢ 0 = p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)

case pos
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : i = p.natDegree
⊢ p.leadingCoeff ^ i = p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)

case neg
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ p.coeff i * p.leadingCoeff ^ (p.natDegree - 1 - i) * p.leadingCoeff ^ i =
    p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)

tactic: simp [h₁]
state_before: case pos
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : p.coeff i = 0
⊢ 0 = p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)
state_after: no goals

tactic: rw [h₂, leadingCoeff, ← pow_succ', tsub_add_cancel_of_le hp]
state_before: case pos
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : i = p.natDegree
⊢ p.leadingCoeff ^ i = p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)
state_after: no goals

tactic: rw [mul_assoc, ← pow_add, tsub_add_cancel_of_le]
state_before: case neg
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ p.coeff i * p.leadingCoeff ^ (p.natDegree - 1 - i) * p.leadingCoeff ^ i =
    p.coeff i * p.leadingCoeff ^ (p.natDegree - 1)
state_after: case neg
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i ≤ p.natDegree - 1

tactic: apply Nat.le_sub_one_of_lt
state_before: case neg
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i ≤ p.natDegree - 1
state_after: case neg.a
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i < p.natDegree

tactic: rw [lt_iff_le_and_ne]
state_before: case neg.a
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i < p.natDegree
state_after: case neg.a
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i ≤ p.natDegree ∧ i ≠ p.natDegree

tactic: exact ⟨le_natDegree_of_ne_zero h₁, h₂⟩
state_before: case neg.a
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
i : ℕ
hp : 1 ≤ p.natDegree
h₁ : ¬p.coeff i = 0
h₂ : ¬i = p.natDegree
⊢ i ≤ p.natDegree ∧ i ≠ p.natDegree
state_after: no goals