(** evaluation of polynomial expressions towards R *)
Definition mk_X j := mkPinj_pred j mkX.
(** evaluation of polynomial expressions towards R *)
Fixpoint PEeval (l:Env R) (pe:PExpr) : R :=
match pe with
| PEc c => phi c
| PEX j => nth j l
| PEadd pe1 pe2 => (PEeval l pe1) + (PEeval l pe2)
| PEsub pe1 pe2 => (PEeval l pe1) - (PEeval l pe2)
| PEmul pe1 pe2 => (PEeval l pe1) * (PEeval l pe2)
| PEopp pe1 => - (PEeval l pe1)
| PEpow pe1 n => rpow (PEeval l pe1) (Cp_phi n)
end.
(** Correctness proofs *)

(* Specifications: *)
Lemma mkX_ok p l : nth p l == (mk_X p) @ l.
Hint Rewrite Padd_ok Psub_ok : Esimpl.