End SEL_SWITH_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.

(* Specifications: *)
Lemma eval_unop_lessdef:
forall op v1 v1' v,
eval_unop op v1 = Some v -> Val.lessdef v1 v1' ->
exists v', eval_unop op v1' = Some v' /\ Val.lessdef v v'.
Lemma eval_binop_lessdef:
forall op v1 v1' v2 v2' v m m',
eval_binop op v1 v2 m = Some v ->
Val.lessdef v1 v1' -> Val.lessdef v2 v2' -> Mem.extends m m' ->
exists v', eval_binop op v1' v2' m' = Some v' /\ Val.lessdef v v'.