proposition: Lemma horner_mul p q x : horner tt (mul tt p q) x = (horner tt p x * horner tt q x)%R.
proof: Proof. elim: p => [|c p IHp]. - rewrite horner0 /= ?Rmult_0_l //. move=> n; rewrite nth_mul; case: ifP =>// H. by rewrite mul_coeff0l. rewrite horner_mulCl IHp /= Rmult_plus_distr_r. by rewrite !Rmult_assoc (Rmult_comm _ x) -!Rmult_assoc. Qed.
imports: Coq(ZArith Reals) Coquelicot(Coquelicot) mathcomp.ssreflect(ssreflect ssrfun ssrbool eqtype ssrnat seq fintype bigop) Flocq(Core) Stdlib MathComp Interval Xreal Basic_rec