(** Correctness of [make_unop]. *)

Lemma make_unop_correct:
forall f sp te tm a v op v' tv,
eval_expr tge sp te tm a tv ->
eval_unop op v = Some v' ->
val_inject f v tv ->
exists tv', eval_expr tge sp te tm (make_unop op a) tv' /\ val_inject f v' tv'.