(* Build a polynomial from an infinite sequence of coefficients and a bound. *)
Fact poly_key : unit. Proof. by []. Qed.
Definition poly := locked_with poly_key poly_expanded_def.
Canonical poly_unlockable := [unlockable fun poly].
Local Notation "\poly_ ( i < n ) E" := (poly n (fun i : nat => E)).

(* Specifications: *)
Lemma polyseq_poly n E :
E n.-1 != 0 -> \poly_(i < n) E i = mkseq [eta E] n :> seq R.
Lemma size_poly n E : size (\poly_(i < n) E i) <= n.
Lemma lead_coef_poly n E :
n > 0 -> E n.-1 != 0 -> lead_coef (\poly_(i < n) E i) = E n.-1.
Lemma coefK p : \poly_(i < size p) p`_i = p.
Definition add_poly_def p q := \poly_(i < maxn (size p) (size q)) (p`_i + q`_i).