Notation "p ^:P" := (map_poly polyC p) : ring_scope.
Section PolyCompose.
Variable R : ringType.
Implicit Types p q : {poly R}.
Definition comp_poly q p := p^:P.[q].
Local Notation "p \Po q" := (comp_poly q p) : ring_scope.

(* Specifications: *)
Lemma size_map_polyC p : size p^:P = size p.
Lemma coef_comp_poly p q n :
(p \Po q)`_n = \sum_(i < size p) p`_i * (q ^+ i)`_n.
Lemma comp_polyCr p c : p \Po c%:P = p.[c]%:P.
Canonical comp_poly_additive p := Additive (comp_poly_is_linear p).