(* Lemma field_at_mapsto__at1: forall Espec Delta P Q sh ty fld e v R c Post, @semax Espec Delta (PROPx P (LOCALx Q (SEPx (`(field_at_ sh ty fld) e :: R)))) c Post -> @semax Espec Delta (PROPx P (LOCALx Q (SEPx (`(field_at sh ty fld) v e :: R)))) c Post.  Lemma later_field_at_mapsto__at1: forall Espec Delta P Q sh ty fld e v R c Post, @semax Espec Delta (PROPx P (LOCALx Q (SEPx (|>`(field_at_ sh ty fld) e :: R)))) c Post -> @semax Espec Delta (PROPx P (LOCALx Q (SEPx (|> `(field_at sh ty fld) v e :: R)))) c Post. *)

Lemma forward_setx':
forall Espec {cs: compspecs} Delta P id e,
(P |-- (tc_expr Delta e) && (tc_temp_id id (typeof e) Delta e) ) ->
@semax cs Espec Delta
P
(Sset id e)
(normal_ret_assert
(EX old:val,  local (`eq (eval_id id) (subst id (`old) (eval_expr e))) &&
subst id (`old) P)).