(** Generic operations that just do constant propagation. *)
Definition unop_int (sem: int -> int) (x: aval) :=
match x with I n => I (sem n) | _ => ntop1 x end.

(* Specifications: *)
Lemma unop_int_sound:
forall sem v x,
vmatch v x ->
vmatch (match v with Vint i => Vint(sem i) | _ => Vundef end) (unop_int sem x).