Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit afff1bb

Browse files
committed
chore(data/polynomial/eval): golf a proof, add versions (#11092)
* golf the proof of `polynomial.eval_prod`; * add versions `polynomial.eval_multiset_prod` and `polynomial.eval_list_prod`.
1 parent c04a42f commit afff1bb

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

src/data/polynomial/eval.lean

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -744,19 +744,25 @@ lemma root_mul_right_of_is_root {p : polynomial R} (q : polynomial R) :
744744
λ H, by rw [is_root, eval_mul, is_root.def.1 H, zero_mul]
745745

746746
/--
747-
Polynomial evaluation commutes with finset.prod
747+
Polynomial evaluation commutes with `list.prod`
748+
-/
749+
lemma eval_list_prod (l : list (polynomial R)) (x : R) :
750+
eval x l.prod = (l.map (eval x)).prod :=
751+
(eval_ring_hom x).map_list_prod l
752+
753+
/--
754+
Polynomial evaluation commutes with `multiset.prod`
755+
-/
756+
lemma eval_multiset_prod (s : multiset (polynomial R)) (x : R) :
757+
eval x s.prod = (s.map (eval x)).prod :=
758+
(eval_ring_hom x).map_multiset_prod s
759+
760+
/--
761+
Polynomial evaluation commutes with `finset.prod`
748762
-/
749763
lemma eval_prod {ι : Type*} (s : finset ι) (p : ι → polynomial R) (x : R) :
750764
eval x (∏ j in s, p j) = ∏ j in s, eval x (p j) :=
751-
begin
752-
classical,
753-
apply finset.induction_on s,
754-
{ simp only [finset.prod_empty, eval_one] },
755-
{ intros j s hj hpj,
756-
have h0 : ∏ i in insert j s, eval x (p i) = (eval x (p j)) * ∏ i in s, eval x (p i),
757-
{ apply finset.prod_insert hj },
758-
rw [h0, ← hpj, finset.prod_insert hj, eval_mul] },
759-
end
765+
(eval_ring_hom x).map_prod _ _
760766

761767
lemma is_root_prod {R} [comm_ring R] [is_domain R] {ι : Type*}
762768
(s : finset ι) (p : ι → polynomial R) (x : R) :

0 commit comments

Comments
 (0)