Proof
(eval_condexpr_ind3 ge sp e m
transl_expr_prop
transl_exprlist_prop
transl_condexpr_prop
transl_expr_Evar_correct
transl_expr_Eop_correct
transl_expr_Eload_correct
transl_expr_Econdition_correct
transl_expr_Elet_correct
transl_expr_Eletvar_correct
transl_expr_Ebuiltin_correct
transl_expr_Eexternal_correct
transl_exprlist_Enil_correct
transl_exprlist_Econs_correct
transl_condexpr_CEcond_correct
transl_condexpr_CEcondition_correct
transl_condexpr_CElet_correct).
End CORRECTNESS_EXPR.
(*LENB: The same for effect-steps*)
Section CORRECTNESS_EXPR_EFF.

(* Specifications: *)
Lemma Efftr_move_correct:
forall r1 ns r2 nd cs f sp rs m,
tr_move f.(fn_code) ns r1 nd r2 ->
exists rs',
effstep_star rtl_eff_sem tge EmptyEffect
(RTL_State cs f sp ns rs) m
(RTL_State cs f sp nd rs') m /\
rs'#r2 = rs#r1 /\
(forall r, r <> r2 -> rs'#r = rs#r).
Lemma Efftransl_switch_correct:
forall j cs sp e m f map r nexits t ns,
tr_switch f.(fn_code) map r nexits t ns ->
forall rs i act,
rs#r = Vint i ->
map_wf map ->
match_env j map e nil rs ->
comptree_match i t = Some act ->
exists nd, exists rs',
effstep_star rtl_eff_sem  tge EmptyEffect
(RTL_State cs f sp ns rs) m (RTL_State cs f sp nd rs') m /\
nth_error nexits act = Some nd /\
match_env j map e nil rs'.