Skip to content

Commit 654802e

Browse files
feat(Polynomial/Splits): dvd_iff_roots_le_roots (#18800)
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>
1 parent efe2a97 commit 654802e

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

Mathlib/Algebra/Polynomial/Splits.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,18 @@ theorem eq_prod_roots_of_splits_id {p : K[X]} (hsplit : Splits (RingHom.id K) p)
322322
p = C p.leadingCoeff * (p.roots.map fun a => X - C a).prod := by
323323
simpa using eq_prod_roots_of_splits hsplit
324324

325+
theorem Splits.dvd_of_roots_le_roots {p q : K[X]} (hp : p.Splits (RingHom.id _)) (hp0 : p ≠ 0)
326+
(hq : p.roots ≤ q.roots) : p ∣ q := by
327+
rw [eq_prod_roots_of_splits_id hp, C_mul_dvd (leadingCoeff_ne_zero.2 hp0)]
328+
exact dvd_trans
329+
(Multiset.prod_dvd_prod_of_le (Multiset.map_le_map hq))
330+
(prod_multiset_X_sub_C_dvd _)
331+
332+
theorem Splits.dvd_iff_roots_le_roots {p q : K[X]}
333+
(hp : p.Splits (RingHom.id _)) (hp0 : p ≠ 0) (hq0 : q ≠ 0) :
334+
p ∣ q ↔ p.roots ≤ q.roots :=
335+
⟨Polynomial.roots.le_of_dvd hq0, hp.dvd_of_roots_le_roots hp0⟩
336+
325337
theorem aeval_eq_prod_aroots_sub_of_splits [Algebra K L] {p : K[X]}
326338
(hsplit : Splits (algebraMap K L) p) (v : L) :
327339
aeval v p = algebraMap K L p.leadingCoeff * ((p.aroots L).map fun a ↦ v - a).prod := by

0 commit comments

Comments
 (0)