Theorem: Polynomial.rootMultiplicity_eq_rootMultiplicity
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: classical
simp_rw [rootMultiplicity_eq_multiplicity, comp_X_add_C_eq_zero_iff]
congr; ext; congr 1
rw [C_0, sub_zero]
convert (multiplicity.multiplicity_map_eq <| algEquivAevalXAddC t).symm using 2
simp [C_eq_algebraMap]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ rootMultiplicity t p = rootMultiplicity 0 (p.comp (X + C t))
state_after: no goals

tactic: simp_rw [rootMultiplicity_eq_multiplicity, comp_X_add_C_eq_zero_iff]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ rootMultiplicity t p = rootMultiplicity 0 (p.comp (X + C t))
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ (if h0 : p = 0 then 0 else (multiplicity (X - C t) p).get ⋯) =
    if h : p = 0 then 0 else (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯

tactic: congr
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ (if h0 : p = 0 then 0 else (multiplicity (X - C t) p).get ⋯) =
    if h : p = 0 then 0 else (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯
state_after: case e_e
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ (fun h0 => (multiplicity (X - C t) p).get ⋯) = fun h => (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯

tactic: ext
state_before: case e_e
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
⊢ (fun h0 => (multiplicity (X - C t) p).get ⋯) = fun h => (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯
state_after: case e_e.h
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ (multiplicity (X - C t) p).get ⋯ = (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯

tactic: congr 1
state_before: case e_e.h
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ (multiplicity (X - C t) p).get ⋯ = (multiplicity (X - C 0) (p.comp (X + C t))).get ⋯
state_after: case e_e.h.e_self
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ multiplicity (X - C t) p = multiplicity (X - C 0) (p.comp (X + C t))

tactic: rw [C_0, sub_zero]
state_before: case e_e.h.e_self
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ multiplicity (X - C t) p = multiplicity (X - C 0) (p.comp (X + C t))
state_after: case e_e.h.e_self
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ multiplicity (X - C t) p = multiplicity X (p.comp (X + C t))

tactic: convert (multiplicity.multiplicity_map_eq <| algEquivAevalXAddC t).symm using 2
state_before: case e_e.h.e_self
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
⊢ multiplicity (X - C t) p = multiplicity X (p.comp (X + C t))
state_after: case h.e'_3.h.h.e'_4
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
e_1✝ : Part ℕ = PartENat
⊢ X = (algEquivAevalXAddC t) (X - C t)

tactic: simp [C_eq_algebraMap]
state_before: case h.e'_3.h.h.e'_4
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝ : CommRing R
p : R[X]
t : R
x✝ : ¬p = 0
e_1✝ : Part ℕ = PartENat
⊢ X = (algEquivAevalXAddC t) (X - C t)
state_after: no goals