Inductive empty_type : Type := .
Definition withtype_of_NDfunspec fs := match fs with
mk_funspec _ _ (rmaps.ConstType A) _ _ _ _ => A | _ => empty_type end.
Definition withtype_of_funspec fs := match fs with
mk_funspec _ _ A _ _ _ _ => A end.

Lemma tc_val_sem_cast':
forall {CS: compspecs} t2 e2 rho Delta,
typecheck_environ Delta rho ->
denote_tc_assert (typecheck_expr Delta e2) rho
&&  denote_tc_assert (isCastResultType (typeof e2) t2  e2) rho
|-- !! tc_val t2 (force_val (sem_cast (typeof e2) t2 (eval_expr e2 rho))).