Definition substopt {A} (ret: option ident) (v: val) (P: environ -> A)  : environ -> A :=
   match ret with
   | Some id => subst id v P
   | None => P
   end.

Lemma eval_exprlist_relate: forall (Delta : tycontext) (fsig0 : funsig) (bl : list expr) (psi : genv) (vx : env) (tx : temp_env) (rho : environ) m, denote_tc_assert (typecheck_exprlist Delta (snd (split (fst fsig0))) bl) rho (m_phi m) -> typecheck_environ Delta rho -> genv_cenv psi = cenv_cs -> rho = construct_rho (filter_genv psi) vx tx -> forall f : function, fsig0 = fn_funsig f -> Clight.eval_exprlist psi vx tx (m_dry m) bl (type_of_params (fn_params f)) (eval_exprlist (snd (split (fst fsig0))) bl rho).