Definition poly_BC (p : pol) : BC :=
  plusl_e (fst p) (map (poly_BC_mon (fst p)) (snd p)).

(* Specifications: *)
Lemma poly_BC_arities : forall p, pWF p -> arities (poly_BC p) = ok_arities (parity p) 0.
Lemma poly_BC_correct : forall p nl, pWF p -> length (sem (poly_BC p) nl nil) = peval p (map (@length _) nl).
Lemma Cobham_to_BC''_inf : forall e n, arity e = ok_arity n -> arities (Cobham_to_BC'' n e) = ok_arities n n.
Lemma seq_map : forall A len start (f : nat -> A), map (fun x => f x) (seq start len) = map (fun x => f (x + start)) (seq 0 len).
Lemma Cobham_to_BC''_correct : forall e xl n, rec_bounded e -> arity e = ok_arity n -> length xl = n -> Sem e xl = sem (Cobham_to_BC'' n e) xl xl.