@@ -395,11 +395,26 @@ lemma mul_div_by_monic_eq_iff_is_root : (X - C a) * (p /ₘ (X - C a)) = p ↔ i
395395 by conv {to_rhs, rw ← mod_by_monic_add_div p (monic_X_sub_C a)};
396396 rw [mod_by_monic_X_sub_C_eq_C_eval, h, C_0, zero_add]⟩
397397
398- lemma dvd_iff_is_root : ( X - C a) ∣ p ↔ is_root p a :=
398+ lemma dvd_iff_is_root : X - C a ∣ p ↔ is_root p a :=
399399⟨λ h, by rwa [← dvd_iff_mod_by_monic_eq_zero (monic_X_sub_C _),
400400 mod_by_monic_X_sub_C_eq_C_eval, ← C_0, C_inj] at h,
401401 λ h, ⟨(p /ₘ (X - C a)), by rw mul_div_by_monic_eq_iff_is_root.2 h⟩⟩
402402
403+ lemma X_sub_C_dvd_sub_C_eval : X - C a ∣ p - C (p.eval a) :=
404+ by rw [dvd_iff_is_root, is_root, eval_sub, eval_C, sub_self]
405+
406+ lemma mem_span_C_X_sub_C_X_sub_C_iff_eval_eval_eq_zero {b : R[X]} {P : R[X][X]} :
407+ P ∈ (ideal.span {C (X - C a), X - C b} : ideal R[X][X]) ↔ (P.eval b).eval a = 0 :=
408+ begin
409+ rw [ideal.mem_span_pair],
410+ split; intro h,
411+ { rcases h with ⟨_, _, rfl⟩,
412+ simp only [eval_C, eval_X, eval_add, eval_sub, eval_mul, add_zero, mul_zero, sub_self] },
413+ { cases dvd_iff_is_root.mpr h with p hp,
414+ cases @X_sub_C_dvd_sub_C_eval _ b _ P with q hq,
415+ exact ⟨C p, q, by rw [mul_comm, mul_comm q, eq_add_of_sub_eq' hq, hp, C_mul]⟩ }
416+ end
417+
403418lemma mod_by_monic_X (p : R[X]) : p %ₘ X = C (p.eval 0 ) :=
404419by rw [← mod_by_monic_X_sub_C_eq_C_eval, C_0, sub_zero]
405420
0 commit comments