Opaque Poly_pow.
Definition Poly_mon (ar:nat)(m:mon) : Cobham :=
Comp ar Mult_e [Comp ar (Nat_e (fst m)) nil; Multl_e ar (map (Poly_pow ar) (snd m))].

(* Specifications: *)
Lemma arity_Poly_mon : forall ar m,
pWF_mon ar m ->
arity (Poly_mon ar m) = ok_arity ar.
Lemma rec_bounded_Poly_mon : forall ar m,
rec_bounded (Poly_mon ar m).
Lemma Poly_mon_correct : forall ar m l,
length (Sem (Poly_mon ar m) l) = peval_mon m (map (@length _) l).