Section CORRECTNESS.
Variable prog: CminorSel.program.
Variable tprog: RTL.program.
Hypothesis TRANSL: match_prog prog tprog.
Let ge : CminorSel.genv := Genv.globalenv prog.
Let tge : RTL.genv := Genv.globalenv tprog.
(** Relationship between the global environments for the original CminorSel program and the generated RTL program. *)
Proof
(Genv.find_symbol_transf_partial TRANSL).
Proof
(Genv.find_funct_ptr_transf_partial TRANSL).
Proof
(Genv.find_funct_transf_partial TRANSL).
Proof
(Genv.senv_transf_partial TRANSL).
(** Correctness of the code generated by [add_move]. *)

Lemma tr_move_correct:
forall r1 ns r2 nd cs f sp rs m,
tr_move f.(fn_code) ns r1 nd r2 ->
exists rs',
star step tge (State cs f sp ns rs m) E0 (State cs f sp nd rs' m) /\
rs'#r2 = rs#r1 /\
(forall r, r <> r2 -> rs'#r = rs#r).