(** The simulation diagram. *)
Fixpoint seq_left_depth (s: Csharpminor.stmt) : nat :=
match s with
| Csharpminor.Sseq s1 s2 => S (seq_left_depth s1)
| _ => O
end.
Definition measure (S: Csharpminor.state) : nat :=
match S with
| Csharpminor.State fn s k e le m => seq_left_depth s
| _ => O
end.

Lemma transl_initial_states:
forall S, Csharpminor.initial_state prog S ->
exists R, Cminor.initial_state tprog R /\ match_states S R.