Section EXPR.
Variable cunit: Clight.program.
Hypothesis LINK: linkorder cunit prog.
Variable e: Clight.env.
Variable le: temp_env.
Variable m: mem.
Variable te: Csharpminor.env.
Hypothesis MENV: match_env e te.
Proof (proj1 transl_expr_lvalue_correct).
Proof (proj2 transl_expr_lvalue_correct).
End EXPR.
(** ** Semantic preservation for statements *)
(** The simulation diagram for the translation of statements and functions is a "plus" diagram of the form << I S1 ------- R1 |          | t |        + | t v          v S2 ------- R2 I                         I >>  The invariant [I] is the [match_states] predicate that we now define. *)
Inductive match_transl: stmt -> cont -> stmt -> cont -> Prop :=
| match_transl_0: forall ts tk,
match_transl ts tk ts tk
| match_transl_1: forall ts tk,
match_transl (Sblock ts) tk ts (Kblock tk).

Lemma match_transl_step:
forall ts tk ts' tk' f te le m,
match_transl (Sblock ts) tk ts' tk' ->
star step tge (State f ts' tk' te le m) E0 (State f ts (Kblock tk) te le m).