(** Forward simulation for expressions. *)

(* Specifications: *)
Lemma tr_val_gen:
forall le dst v ty a tmp,
typeof a = ty ->
(forall tge e le' m,
(forall id, In id tmp -> le'!id = le!id) ->
eval_expr tge e le' m a v) ->
tr_expr le dst (Csyntax.Eval v ty) (final dst a) a tmp.
Lemma estep_simulation:
forall S1 t S2, Cstrategy.estep ge S1 t S2 ->
forall S1' (MS: match_states S1 S1'),
exists S2',
(plus step1 tge S1' t S2' \/
(star step1 tge S1' t S2' /\ measure S2 < measure S1)%nat)
/\ match_states S2 S2'.