Section SEL_SWITCH_INT.
Variable cunit: Cminor.program.
Variable hf: helper_functions.
Hypothesis LINK: linkorder cunit prog.
Hypothesis HF: helper_functions_declared cunit hf.
Let HF': helper_functions_declared tprog hf.
End SEL_SWITCH_INT.
(** Compatibility of evaluation functions with the "less defined than" relation. *)
Ltac TrivialExists :=
match goal with
| [ |- exists v, Some ?x = Some v /\ _ ] => exists x; split; auto
| _ => idtac
end.
(** * Semantic preservation for instruction selection. *)
(** Relationship between the local environments. *)
Definition env_lessdef (e1 e2: env) : Prop :=
forall id v1, e1!id = Some v1 -> exists v2, e2!id = Some v2 /\ Val.lessdef v1 v2.

Lemma set_var_lessdef:
forall e1 e2 id v1 v2,
env_lessdef e1 e2 -> Val.lessdef v1 v2 ->
env_lessdef (PTree.set id v1 e1) (PTree.set id v2 e2).