(** The simulation diagram. *)

(* Specifications: *)
Theorem transf_step_correct:
forall s1 t s2, step ge s1 t s2 ->
forall ts1 (MS: match_states s1 ts1),
exists ts2, plus step tge ts1 t ts2 /\ match_states s2 ts2.
Lemma transf_initial_states:
forall st1, initial_state prog st1 ->
exists st2, initial_state tprog st2 /\ match_states st1 st2.
Lemma transf_final_states:
forall st1 st2 r,
match_states st1 st2 -> final_state st1 r -> final_state st2 r.
Theorem transf_program_correct:
forward_simulation (semantics prog) (semantics tprog).