@@ -37,6 +37,11 @@ p.sum (λ e a, f a * x ^ e)
37
37
38
38
lemma eval₂_eq_sum {f : R →+* S} {x : S} : p.eval₂ f x = p.sum (λ e a, f a * x ^ e) := rfl
39
39
40
+ lemma eval₂_congr {R S : Type *} [semiring R] [semiring S]
41
+ {f g : R →+* S} {s t : S} {φ ψ : polynomial R} :
42
+ f = g → s = t → φ = ψ → eval₂ f s φ = eval₂ g t ψ :=
43
+ by rintro rfl rfl rfl; refl
44
+
40
45
@[simp] lemma eval₂_zero : (0 : polynomial R).eval₂ f x = 0 :=
41
46
finsupp.sum_zero_index
42
47
@@ -286,6 +291,16 @@ by rw [← C_1, C_comp]
286
291
287
292
@[simp] lemma add_comp : (p + q).comp r = p.comp r + q.comp r := eval₂_add _ _
288
293
294
+ @[simp] lemma mul_comp {R : Type *} [comm_semiring R] (p q r : polynomial R) :
295
+ (p * q).comp r = p.comp r * q.comp r := eval₂_mul _ _
296
+
297
+ lemma comp_assoc {R : Type *} [comm_semiring R] (φ ψ χ : polynomial R) :
298
+ (φ.comp ψ).comp χ = φ.comp (ψ.comp χ) :=
299
+ begin
300
+ apply polynomial.induction_on φ;
301
+ { intros, simp only [add_comp, mul_comp, C_comp, X_comp, pow_succ', ← mul_assoc, *] at * }
302
+ end
303
+
289
304
end comp
290
305
291
306
section map
@@ -528,7 +543,7 @@ end map
528
543
end comm_semiring
529
544
530
545
section ring
531
- variables [ring R] {p q : polynomial R}
546
+ variables [ring R] {p q r : polynomial R}
532
547
533
548
-- @[ simp ]
534
549
-- lemma C_eq_int_cast (n : ℤ) : C ↑n = (n : polynomial R) :=
@@ -569,6 +584,9 @@ eval₂_sub _
569
584
lemma root_X_sub_C : is_root (X - C a) b ↔ a = b :=
570
585
by rw [is_root.def, eval_sub, eval_X, eval_C, sub_eq_zero_iff_eq, eq_comm]
571
586
587
+ @[simp] lemma neg_comp : (-p).comp q = -p.comp q := eval₂_neg _
588
+
589
+ @[simp] lemma sub_comp : (p - q).comp r = p.comp r - q.comp r := eval₂_sub _
572
590
573
591
end ring
574
592
0 commit comments