(** Semantic preservation *)

(* Specifications: *)
Theorem simulation:
forall S1 t S2, Cstrategy.step 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'.
Lemma transl_initial_states:
forall S,
Csem.initial_state prog S ->
exists S', Clight.initial_state tprog S' /\ match_states S S'.
Lemma transl_final_states:
forall S S' r,
match_states S S' -> Csem.final_state S r -> Clight.final_state S' r.
Theorem transl_program_correct:
forward_simulation (Cstrategy.semantics prog) (Clight.semantics1 tprog).