Fact add_poly_key : unit.Definition add_poly := locked_with add_poly_key add_poly_def.Fact opp_poly_key : unit.Definition opp_poly := locked_with opp_poly_key opp_poly_def.Fact add_polyA : associative add_poly.Fact add_polyC : commutative add_poly.Fact add_poly0 : left_id 0%:P add_poly.Fact add_polyN : left_inverse 0%:P opp_poly add_poly.Definition poly_zmodMixin :=
  ZmodMixin add_polyA add_polyC add_poly0 add_polyN.Canonical poly_zmodType := Eval hnf in ZmodType {poly R} poly_zmodMixin.Canonical polynomial_zmodType :=
  Eval hnf in ZmodType (polynomial R) poly_zmodMixin.

(* Specifications: *)
Lemma polyC0 : 0%:P = 0 :> {poly R}.
Lemma size_poly0 : size (0 : {poly R}) = 0%N.
Lemma lead_coef0 : lead_coef 0 = 0 :> R.
Lemma size_poly_leq0P p : reflect (p = 0) (size p <= 0%N).
Lemma poly0Vpos p : {p = 0} + {size p > 0}.
Lemma size_polyC_leq1 (c : R) : (size c%:P <= 1)%N.